#!/usr/bin/ruby require 'socket' DEBUG=1 #Port=6419 Port=2001 def SvdrpRecv(s) lines=Array.new begin str=s.readline lines.push(str) #puts("SvdrpReceived: " + str + " - |" + str[3,1] + "|" ) if $DEBUG end while str[3,1]=="-" return(lines) end def SvdrpSend( s, strSvdrpCmd ) s.write(strSvdrpCmd + "\n") l=SvdrpRecv(s) return(l) end def Svdrp( strSvdrpCmd ) puts("Svdrp:" + strSvdrpCmd) if DEBUG s=TCPSocket::new("localhost", Port) l=SvdrpRecv(s) l=SvdrpSend(s, strSvdrpCmd) s.write("quit\r\n") s.close return(l) end def CmdRen( num, strNewName ) cmd=sprintf("MOVR %d %s", num, strNewName) printf("Aufnahme umbennenen in '%s' ...\n", cmd) Svdrp(cmd) end if ARGV.size!=2 printf("invalid arguments: %d\n",ARGV.size ) exit end CMD=ARGV[0] REC=ARGV[1] if not File.directory?(REC) puts("not a directory") exit end RECDATEDIR=File.basename(REC) RECPATH=File.dirname(REC) RECNAME=File.basename(RECPATH) BASEDIR=File.dirname(RECPATH) EPISODENAME=File.basename(BASEDIR) printf("recpath:%s basedir:%s recname:%s recdatedir:%s\n", RECPATH, BASEDIR, RECNAME, RECDATEDIR) sp=RECDATEDIR.split(".") RECDATE=sp[0] RECHOUR=sp[1].to_i RECMIN=sp[2].to_i if sp.last()!="rec" puts("not .rec-dir") exit end #printf("1\n") sp=RECDATE.split("-") RECDAY=sp[2].to_i RECMON=sp[1].to_i RECYEAR=sp[0].to_i strTime=sprintf("%02d:%02d", RECHOUR, RECMIN); strDate=sprintf("%02d.%02d.%02d", RECDAY, RECMON, RECYEAR % 100); l=Svdrp("LSTR") recs=Array.new printf("Date:%s ; Time:%s\n", strDate,strTime) if DEBUG l.each do |x| z=x[4..x.size-1] sp=z.split(" ") #printf("d:%s;t:%s-%s;%s-%s\n", sp[1], sp[2], strDate,strTime, x) #printf("%s%s|%s %s|%s\n", z, sp[1], sp[2][0,5], strDate, strTime) if sp[1]==strDate && sp[2][0,5]==strTime puts("LSTR:"+x) if DEBUG recs.push(x) end end if recs.size==0 puts("Aufnahme nicht gefunden") exit end if recs.size>1 puts("Aufnahmezeit nicht eindeutig") exit end #p(recs[0]) # Get Rec-Num rec=recs[0][4..(recs[0].size-1)] puts("rec:"+rec) if DEBUG rec_s=rec.split(' ') num=rec_s[0].to_i printf("Num:%s\n",num) if DEBUG # Get Title of Rec title="" rec_s[4..rec_s.size].each { |x| title=title+x+' ' } printf("Title:%s\n",title) if DEBUG # Get Dir of Rec dir_s=title.split('~') dir="" printf("Dir_s:%s size:%d\n", dir_s, dir_s.size) if DEBUG if(dir_s.size>1) dir_s[0..dir_s.size-2].each { |x| dir=dir+x+'~' } end puts("Dir: " + dir) if DEBUG dir_parent="" dir_parent=dir_s[dir_s.size-2] if dir_s.size>=2 puts("ParentDir: " + dir_parent) if DEBUG # read info.vdr-file info_title="" info_short="" info_desc="" infofile=REC + "/info.vdr" if ! File.exists?( infofile ) infofile=REC + "/info" end puts("Infofile: " + infofile) if DEBUG if File.exists?( infofile ) puts("Infofile: " + infofile) if DEBUG f = File.new( infofile ) lines=f.readlines f.close lines.each do |l| if l[0,2]=="T " info_title=l[2..l.size].chop elsif l[0,2]=="S " info_short=l[2..l.size].chop elsif l[0,2]=="D " ld=l.size ld=80 if ld>80 info_desc=l[2..ld].chop end end end #printf("5\n") puts("Info Title: " + info_title) if DEBUG puts(" Short: " + info_short) if DEBUG puts(" Desc : " + info_desc) if DEBUG #printf("6 %d\n", DEBUG) puts("CMD:"+CMD) if DEBUG case CMD when "ShortToName" : if info_short.size>0 puts("ShortToName") if DEBUG newname=(dir+info_short) #.gsub(" ", "\\ ") CmdRen(num, newname) end when "TitleToName" : if info_title.size>0 puts("TitleToName") if DEBUG newname=(dir+info_title) #.gsub(" ", "\\ ") CmdRen(num, newname) end when "DescToName" : if info_desc.size>0 puts("DescToName") if DEBUG newname=(dir+info_desc) #.gsub(" ", "\\ ") CmdRen(num, newname) end when "DirToName" : if dir_parent.size>0 puts("DirToName") if DEBUG CmdRen(num, dir.chop) end when "TitleToDir" : if info_title.size>0 puts("TitleToDir") if DEBUG title=info_title.gsub(" ", "_").gsub("(","\(").gsub(")","\)").gsub("/", "#2F").gsub(":", "#3A") printf("title:%s recpath:%s\n", title, RECPATH) newdir=BASEDIR+"/"+title cmd=sprintf("mkdir %s", newdir) puts(cmd) system("mkdir", newdir) cmd=sprintf("mv %s %s", RECPATH, newdir+"/"+RECNAME) puts(cmd) system("mv", RECPATH, newdir+"/"+RECNAME) cmd=sprintf("touch /video/.update") puts(cmd) system("touch", "/video/.update") #system("ls -l") end end