import cgitb
import sqlite3
import os
+import re
import datetime
cgitb.enable()
path=str(os.path.dirname(os.path.abspath(__file__)))+"/"
dbpath=path+"ch.db"
-
+def getRecDate():
+ db=sqlite3.connect(dbpath)
+ recdata="\"id\",\"type\",\"chtxt\",\"title\",\"btime\",\"etime\",\"deltaday\",\"opt\"\n"
+ recdata="id,type,chtxt,title,btime,etime,deltaday,opt\n"
+ for id, typet, chtxt, title, btime, etime, deltatime ,deltaday ,opt in db.execute("SELECT id, type, chtxt, title, btime, etime, deltatime ,deltaday ,opt FROM rectime"):
+ if deltaday==None:
+ deltaday="なし"
+ elif deltaday=="":
+ deltaday="なし"
+ if opt==None:
+ opt="なし"
+ if typet=="res":
+ typet="一回予約"
+ elif typet=="key":
+ typet="検索予約"
+ elif typet=="keyevery":
+ typet="隔週予約"
+ elif typet=="res":
+ typet="録画最終"
+ elif typet=="grid":
+ typet="外部委託"
+ elif typet=="ts2avi":
+ typet="EncQue"
+ btime=btime[5:16]
+ etime=etime[5:16]
+ btime=btime.replace("-","/")
+ etime=etime.replace("-","/")
+ if btime[0:5]==etime[0:5]:
+ etime=etime[6:]
+ s="\""+str(id)+"\",\""+typet+"\",\""+chtxt+"\",\""+title+"\",\""+btime+"\",\""+etime+"\",\""+deltaday+"\",\""+opt+"\"\n"
+ s=str(id)+","+typet+","+chtxt+","+title+","+btime+","+etime+","+deltaday+","+opt+"\n"
+ recdata=recdata+s
+ f=open(path+"/recdatum.csv","w")
+ f.write(recdata)
+ f.close()
def getchtxt():
db=sqlite3.connect(dbpath)
chopt=""
chopt=chopt+"<option value="+chtxt+">"+display+"</option>\n "
db.close()
return chopt
+def edit_date(id):
+ db=sqlite3.connect(dbpath)
+ ret={}
+ for idt,typet,chtxt,title,btime,etime,deltatime,opt,deltaday in db.execute("SELECT id,type,chtxt,title,btime,etime,deltatime,opt,deltaday From rectime WHERE id ="+id):
+ ret['id']=idt
+ ret['type']=typet
+ ret['chtxt']=chtxt
+ ret['title']=title
+ ret['btime']=btime
+ ret['etime']=etime
+ try:
+ ret['deltatime']=deltatime
+ except:
+ ret['deltatime']=""
+ ret['opt']=opt
+ try:
+ ret['deltaday']=daltaday
+ except:
+ ret['deltaday']=""
+ db.close()
+ return ret
+
+def reserv_recday(keyword,chtxt,btime,etime,deltatime,opt,deltaday,day):
+ """
+ dayは月曜日を1日曜日を7とした数字
+ """
+ bt=datetime.datetime.strptime(btime,"%Y-%m-%d %H:%M:%S")
+ et=datetime.datetime.strptime(etime,"%Y-%m-%d %H:%M:%S")
+ dt=int(day)-bt.isoweekday()
+ if dt<0:
+ dt=dt+7
+ dbt=bt+datetime.timedelta(days=dt)
+ det=et+datetime.timedelta(days=dt)
+ btime=dbt.strftime("%Y-%m-%d %H:%M:%S")
+ etime=det.strftime("%Y-%m-%d %H:%M:%S")
+ return reserv("keyevery",keyword,chtxt,btime,etime,deltatime,opt,"7")
def reserv(type,keyword,chtxt,btime,etime,deltatime,opt,deltaday):
+ MaxT=2
+ MaxS=2
db=sqlite3.connect(dbpath)
- recline="\""+type+"\",\""+chtxt+"\",\""+keyword+"\",datetime(\""+btime+"\"),datetime(\""+etime+"\"),\""+deltatime+"\",\""+opt+"\",\""+deltaday+"\""
- #print recline
- db.execute('insert into rectime ("type","chtxt","title","btime","etime","deltatime","opt","deltaday") values ('+recline+')')
- db.commit()
+ bt="\'"+btime+"\'"
+ et="\'"+etime+"\'"
+ dbexe="SELECT type,chdata.bctype,rectime.chtxt,rectime.title FROM rectime INNER JOIN chdata ON rectime.chtxt=chdata.chtxt"
+ #dbexe="SELECT bctype,chtxt,title FROM rectime INNER JOIN chdata ON rectime.chtxt=chdata.chtxt"
+
+ dbexe=dbexe+" WHERE NOT( ( rectime.etime <= "+bt+" ) OR ( rectime.btime >= "+et+" ) )"
+ for typet,bctypet, chtxtt, titlet in db.execute(dbexe):
+ if (typet=="rec") or (typet=="res") or (typet=="key") or (typet=="keyevery"):
+ if bctypet.find("cs")>-1:
+ MaxS=MaxS-1
+ elif bctypet.find("bs")>-1:
+ MaxS=MaxS-1
+ elif bctypet.find("te")>-1:
+ MaxT=MaxT-1
+ bctype=""
+ rett=""
+ for bctypet, chtxtt in db.execute("SELECT bctype,chtxt FROM chdata WHERE chtxt=\'"+chtxt+"\'"):
+ bctype=bctypet
+ if (type=="rec") or (type=="res") or (type=="key") or (type=="keyevery"):
+ if bctype.find("cs")>-1:
+ MaxS=MaxS-1
+ elif bctype.find("bs")>-1:
+ MaxS=MaxS-1
+ elif bctype.find("te")>-1:
+ MaxT=MaxT-1
+ if MaxS>-1 and MaxT>-1:
+ recline="\""+type+"\",\""+chtxt+"\",\""+keyword+"\",datetime(\""+btime+"\"),datetime(\""+etime+"\"),\""+deltatime+"\",\""+opt+"\",\""+deltaday+"\""
+ #print recline
+ db.execute('insert into rectime ("type","chtxt","title","btime","etime","deltatime","opt","deltaday") values ('+recline+')')
+ db.commit()
+ else:
+ rett="over"
db.close()
+ return rett
+def change_reserv(id,type,keyword,chtxt,btime,etime,deltatime,opt,deltaday):
+ """
+ idはテキスト
+ """
+ MaxT=2
+ MaxS=2
+ db=sqlite3.connect(dbpath)
+ bt="\'"+btime+"\'"
+ et="\'"+etime+"\'"
+ idn=int(id)
+ dbexe="SELECT id,type,chdata.bctype,rectime.chtxt,rectime.title FROM rectime INNER JOIN chdata ON rectime.chtxt=chdata.chtxt"
+ #dbexe="SELECT bctype,chtxt,title FROM rectime INNER JOIN chdata ON rectime.chtxt=chdata.chtxt"
+
+ dbexe=dbexe+" WHERE NOT( ( rectime.etime <= "+bt+" ) OR ( rectime.btime >= "+et+" ) )"
+ for idt,typet,bctypet, chtxtt, titlet in db.execute(dbexe):
+ if idt != idn:
+ if (typet=="rec") or (typet=="res") or (typet=="key") or (typet=="keyevery"):
+ if bctypet.find("cs")>-1:
+ MaxS=MaxS-1
+ elif bctypet.find("bs")>-1:
+ MaxS=MaxS-1
+ elif bctypet.find("te")>-1:
+ MaxT=MaxT-1
+ bctype=""
+ rett=""
+ for bctypet, chtxtt in db.execute("SELECT bctype,chtxt FROM chdata WHERE chtxt=\'"+chtxt+"\'"):
+ bctype=bctypet
+ if (type=="rec") or (type=="res") or (type=="key") or (type=="keyevery"):
+ if bctype.find("cs")>-1:
+ MaxS=MaxS-1
+ elif bctype.find("bs")>-1:
+ MaxS=MaxS-1
+ elif bctype.find("te")>-1:
+ MaxT=MaxT-1
+ if MaxS>-1 and MaxT>-1:
+ db.execute('delete from rectime where id='+id)
+ recline="\""+type+"\",\""+chtxt+"\",\""+keyword+"\",datetime(\""+btime+"\"),datetime(\""+etime+"\"),\""+deltatime+"\",\""+opt+"\",\""+deltaday+"\""
+ #print recline
+ db.execute('insert into rectime ("type","chtxt","title","btime","etime","deltatime","opt","deltaday") values ('+recline+')')
+ db.commit()
+ else:
+ rett="over"
+ db.close()
+ return rett
def station2chtxt(station):
db=sqlite3.connect(dbpath)
ret=""
ret=chtxt
db.close()
return ret
+def station_name2chtxt(station):
+ db=sqlite3.connect(dbpath)
+ ret=""
+ for bctype, ontv, chtxt, ch, csch ,updatetime in db.execute("SELECT bctype,ontv,chtxt,ch,csch,updatetime FROM chdata WHERE station_name=\""+station+"\""):
+ ret=chtxt
+ db.close()
+ return ret
def readHtmlSrcSimple():
f = open(path+'rswi.htm')
ret=f.read()
f.close()
return ret
+def readHtmlEdit():
+ f = open(path+'rswi_edit.htm')
+ ret=f.read()
+ f.close()
+ return ret
+
def readRecFinisSimple():
f = open(path+'fin.htm')
ret=f.read()
f.close()
return ret
+def readRecFinisOver():
+ f = open(path+'finover.htm')
+ ret=f.read()
+ f.close()
+ return ret
+def readRecSchedule():
+ f = open(path+'schedule.htm')
+ ret=f.read()
+ f.close()
+ return ret
f=cgi.FieldStorage()
btime=""
chtxt=""
type="res"
bt=""
+getRecDate()
+if f.getfirst('mode')=="schedule":
+ getRecDate()
+
###ここからiEPG用の読み出し
+if f.getfirst('station_name'):
+ station=f.getfirst('station_name')
+ chtxt=station_name2chtxt(station)
if f.getfirst('station'):
station=f.getfirst('station')
chtxt=station2chtxt(station)
et=et+dd
etime=et.strftime("%Y-%m-%d %H:%M:%S")
-size=""
+size="S"
if f.getfirst('size'):
size=f.getfirst('size')
opts=""
exect=""
if f.getfirst('exec',""):
exect=f.getfirst('exec',"")
-
+
+
htmdate= readHtmlSrcSimple()
htmdate=htmdate.replace("<!--text_for_replace_chtxt_input//-->",getchtxt())
-
htmdate=htmdate.replace("<!--btime-value//-->",btime)
htmdate=htmdate.replace("<!--etime-value//-->",etime)
htmdate=htmdate.replace("<!--type-value//-->",type)
htmdate=htmdate.replace("<!--size-value//-->",size)
htmdate=htmdate.replace("<!--opts-value//-->",opts)
+
+#ここから曜日検索の設定
+if f.getfirst('type')=="keyday":
+ rett=""
+ dayt=f.getfirst('day_Mon')
+ if dayt:
+ rett=rett+reserv_recday(title, chtxt, btime, etime, deltahour, opts, deltaday, dayt)
+ dayt=f.getfirst('day_Tue')
+ if dayt:
+ rett=rett+reserv_recday(title, chtxt, btime, etime, deltahour, opts, deltaday, dayt)
+ dayt=f.getfirst('day_Wed')
+ if dayt:
+ rett=rett+reserv_recday(title, chtxt, btime, etime, deltahour, opts, deltaday, dayt)
+ dayt=f.getfirst('day_Thu')
+ if dayt:
+ rett=rett+reserv_recday(title, chtxt, btime, etime, deltahour, opts, deltaday, dayt)
+ dayt=f.getfirst('day_Fri')
+ if dayt:
+ rett=rett+reserv_recday(title, chtxt, btime, etime, deltahour, opts, deltaday, dayt)
+ dayt=f.getfirst('day_Sat')
+ if dayt:
+ rett=rett+reserv_recday(title, chtxt, btime, etime, deltahour, opts, deltaday, dayt)
+ dayt=f.getfirst('day_Sun')
+ if dayt:
+ rett=rett+reserv_recday(title, chtxt, btime, etime, deltahour, opts, deltaday, dayt)
+
+ if rett=="":
+ htmdate=readRecFinisSimple()
+ else:
+ htmdate=readRecFinisOver()
+ chtxt=""
+ exect=""
+
+
+
if (chtxt != "")and(title != "")and(btime!="")and(etime!="")and(opts!="")and(exect=="yes"):
- reserv(type, title, chtxt, btime, etime, deltahour, opts, deltaday)
- htmdate=readRecFinisSimple()
+ restxt=reserv(type, title, chtxt, btime, etime, deltahour, opts, deltaday)
+ if restxt=="":
+ htmdate=readRecFinisSimple()
+ elif restxt=="over":
+ htmdate=readRecFinisOver()
exect=""
#
-print htmdate
+if (chtxt != "")and(title != "")and(btime!="")and(etime!="")and(opts!="")and(re.search('edit-exec:',exect)):
+ editnum=exect.replace("edit-exec:","")
+ restxt=change_reserv(editnum,type, title, chtxt, btime, etime, deltahour, opts, deltaday)
+ if restxt=="":
+ htmdate=readRecFinisSimple()
+ elif restxt=="over":
+ htmdate=readRecFinisOver()
+ exect=""
+if exect=="schedule":
+ htmdate=readRecSchedule()
+if re.search('edit:',exect):
+ editnum=exect.replace("edit:","")
+ htmdate= readHtmlEdit()
+ iddata=edit_date(editnum)
+ htmdate=htmdate.replace("<!--text_for_replace_chtxt_input//-->",getchtxt())
+ htmdate=htmdate.replace("<!--ch-value//-->",iddata["chtxt"])
+ htmdate=htmdate.replace("<!--btime-value//-->",iddata["btime"])
+ htmdate=htmdate.replace("<!--etime-value//-->",iddata["etime"])
+ htmdate=htmdate.replace("<!--type-value//-->",iddata["type"])
+ htmdate=htmdate.replace("<!--ch-value//-->",iddata["chtxt"])
+ htmdate=htmdate.replace("<!--title-value//-->",iddata["title"])
+ htmdate=htmdate.replace("<!--size-value//-->",size)
+ htmdate=htmdate.replace("<!--opts-value//-->",iddata["opt"])
+ htmdate=htmdate.replace("<!--exec-value//-->","edit-exec:"+editnum)
+print htmdate