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

145 lines
2.7 KiB
Ruby
Executable File

#!/usr/bin/ruby
require 'socket'
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("opening socket...") if $DEBUG
s=TCPSocket::new("localhost", 2001)
l=SvdrpRecv(s)
l=SvdrpSend(s, strSvdrpCmd)
s.write("quit\r\n")
s.close
return(l)
end
def RenameRec( num, strDir, strName)
if strName.size>0
cmd=sprintf("RENR %d '%s'", num, strDir + strName)
printf("Aufnahme %d umbennenen in '%s'...\n", num, strDir+strName)
#Svdrp(cmd)
end
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)
sp=RECDATEDIR.split(".")
RECDATE=sp[0]
RECHOUR=sp[1].to_i
RECMIN=sp[2].to_i
if sp[5]!="rec"
puts("not .rec-dir")
exit
end
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|
sp=x.split(" ")
#printf("d:%s;t:%s\n", sp[1], sp[2])
if sp[1]==strDate && sp[2][0,5]==strTime
recs.push(x)
end
end
if recs.size>1
puts("Aufnahmezeit nicht eindeutig")
exit
end
# Get Rec-Num
rec=recs[0][4..(recs[0].size-1)]
rec_s=rec.split(' ')
num=rec_s[0].to_i
# Get Title of Rec
title=""
rec_s[3..rec_s.size].each { |x| title=title+x+' ' }
#printf("t:%s\n",title)
# Get Dir of Rec
dir_s=title.split('~')
dir=""
dir_s[0..dir_s.size-2].each { |x| dir=dir+x+'~' }
dir_parent=dir_s[dir_s.size-2] if dir_s.size>=2
#puts("D:"+dir)
# read info.vdr-file
infofile=REC + "/info.vdr"
if File.exists?( infofile )
puts("reading " + infofile) if $DEBUG
f = File.new( infofile )
lines=f.readlines
f.close
info_title=""
info_short=""
info_desc=""
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 l.size > 80
info_desc=l[2..ld].chop
end
end
end
puts(info_title) if $DEBUG
puts(info_short) if $DEBUG
puts(info_desc) if $DEBUG
case CMD
when "ShortToName" :
RenameRec(num, dir, info_short)
when "DirToName" :
if dir_parent.size>0
RenameRec(num, "", dir.chop)
end
when "DescToName" :
RenameRec(nu, dir, info_desc)
end