200 lines
4.4 KiB
Ruby
Executable File
200 lines
4.4 KiB
Ruby
Executable File
#!/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
|