Files
bin/vdrrecren
2012-12-16 18:46:30 +01:00

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