X-Git-Url: http://git.osdn.net/view?a=blobdiff_plain;f=Rec10WEB%2Ftrunk%2Fsrc%2Frec10web.py;h=faf41016e03b7d1f1db8da9f69952a65249e725a;hb=e15e0d644cc1ca72acec66937a6491fd6526b0c7;hp=fb210a5a0edda2a96c86060e9ab9b622c7971c2e;hpb=3bae9f458c096c1fba00f61329a3565a6e199b08;p=rec10%2Frec10-git.git
diff --git a/Rec10WEB/trunk/src/rec10web.py b/Rec10WEB/trunk/src/rec10web.py
index fb210a5..faf4101 100644
--- a/Rec10WEB/trunk/src/rec10web.py
+++ b/Rec10WEB/trunk/src/rec10web.py
@@ -3,38 +3,234 @@
# Rec10 TS Recording Tools
# Copyright (C) 2009 Yukikaze
import cgi
-import cgitb
-import sqlite3
+import cgitb;cgitb.enable()
+import rec10web_dbMySQL
+import rec10web_dbSQLite
import os
+import re
import datetime
-cgitb.enable()
-path=str(os.path.dirname(os.path.abspath(__file__)))+"/"
-dbpath=path+"ch.db"
-
+import rec10web_dbSQLite
+import ConfigParser
+import time
+path=str(os.path.dirname(os.path.abspath(__file__)))+"/"
+confp=ConfigParser.SafeConfigParser()
+Conf='config.ini'
+confp.read(path+Conf)
+global f
+f=cgi.FieldStorage()
+def getpath(string):
+ global confp
+ return confp.get('path',string)
+def getdbpath(string):
+ global confp
+ return confp.get('db',string)
+def getdb():
+ retdb=""
+ if getdbpath('db')=='MySQL':
+ dbn=getdbpath("mysql_dbname")
+ dbh=getdbpath("mysql_host")
+ dbu=getdbpath("mysql_user")
+ dbpwd=getdbpath("mysql_passwd")
+ dbport=int(getdbpath("mysql_port"))
+ retdb=rec10web_dbMySQL.DB_MySQL(dbname=dbn,host=dbh,user=dbu,passwd=dbpwd,port=dbport)
+ else:
+ retdb=rec10web_dbSQLite.DB_SQLite(dbpath)
+ return retdb
+def getRecDate():
+ dl=database.select_all_rectime()
+ recdata="id,type,chtxt,title,btime,etime,deltaday,opt\n"
+ #print dl
+ for d in dl:
+ id=d['id']
+ typet=d['type']
+ chtxt=d['chtxt']
+ title=d['title']
+ btime=d['btime']
+ etime=d['etime']
+ deltatime=d['deltatime']
+ deltaday=d['deltaday']
+ opt=d['opt']
+ 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="ç¸æ
äºç´"
+ elif typet=="b252ts":
+ typet="復å·äºç´"
+ #print btime
+ 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 getiEPGDate():
+ dl=database.select_all_iepg()
+ recdata="id,name,chtxt\n"
+ #print dl
+ s=""
+ for d in dl:
+ s=s+d[0]+","+d[1]+","+d[2]+"\n"
+ recdata=recdata+s
+ f=open(path+"/iepgdatum.csv","w")
+ f.write(recdata)
+ f.close()
def getchtxt():
- db=sqlite3.connect(dbpath)
+ dl=database.select_all_chdata()
chopt=""
- for bctype, ontv, chtxt, ch, csch ,updatetime in db.execute("SELECT bctype,ontv,chtxt,ch,csch,updatetime FROM chdata"):
+ for bctype, ontv, chtxt, ch, csch ,updatetime in dl:
chdisplay=""
- for bctype,channel,display in db.execute("SELECT bctype,channel,display FROM ch WHERE channel=\""+ontv+"\""):
+ for bctype,channel,display in database.select_by_ontv_ch(ontv):
chdisplay=display
- chopt=chopt+"\n "
- db.close()
+ if chdisplay!="":
+ chopt=chopt+"\n "
return chopt
+def edit_date(id):
+ ret=database.select_by_id_rectime(id)
+ return ret[0]
+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")
+ bt=datetime.datetime(*time.strptime(btime,"%Y-%m-%d %H:%M:%S")[:-3])
+ et=datetime.datetime(*time.strptime(etime,"%Y-%m-%d %H:%M:%S")[:-3])
+ 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):
- 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()
- db.close()
+ MaxT=2
+ MaxS=2
+ tsnum=count_schedule(btime,etime)
+ MaxT=MaxT-tsnum[0]
+ MaxS=MaxS-tsnum[1]
+ bctype=""
+ rett=""
+ bctypegetdb=database.select_by_chtxt_chdata(chtxt)
+ for bctypet,ontvt,chtxtt,cht,cscht,updatetimet in bctypegetdb:
+ 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:
+ database.add_rectime(type=type,chtxt=chtxt,title=keyword,btime=btime,etime=etime,deltatime=deltatime,deltaday=deltaday,opt=opt)
+ else:
+ rett="over"
+ return rett
+def count_schedule(btime,etime):
+ """
+ return rec num (int return[0]:TE /int return[1]:BS/CS)
+ """
+ def cmpare(x,y):
+ #xt=datetime.datetime(*time.strptime(x,"%Y-%m-%d %H:%M:%S")[:-3])
+ #yt=datetime.datetime(*time.strptime(y,"%Y-%m-%d %H:%M:%S")[:-3])
+ xt=x
+ yt=y
+ if xt>yt:
+ return -1
+ elif xt==yt:
+ return 0
+ else:
+ return 1
+ dls=database.schedule_rectime(btime,etime)
+ print dls
+ times=[]
+ btd=datetime.datetime(*time.strptime(btime,"%Y-%m-%d %H:%M:%S")[:-3])
+ etd=datetime.datetime(*time.strptime(etime,"%Y-%m-%d %H:%M:%S")[:-3])
+ for dl in dls:
+ dd1=datetime.datetime(*time.strptime(dl[4],"%Y-%m-%d %H:%M:%S")[:-3])
+ dd2=datetime.datetime(*time.strptime(dl[5],"%Y-%m-%d %H:%M:%S")[:-3])
+ if dd1etd:
+ dd2=etd
+ times.append(dd1)
+ times.append(dd2)
+ print times
+ times=list(set(times))
+ print times
+ times.sort(cmpare)
+ times.reverse()
+ print times
+ retcount=[0,0]
+ for i in xrange(0, len(times)-2, 1):
+ bt1=times[i]
+ et1=times[i+1]
+ btime1=bt1.strftime("%Y-%m-%d %H:%M:%S")
+ etime1=et1.strftime("%Y-%m-%d %H:%M:%S")
+ ret1=database.count_schedule_rectime(btime1,etime1)
+ if retcount[0]-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:
+ database.del_by_id_rectime(id)
+ database.add_rectime(type=type, chtxt=chtxt, title=keyword, btime=btime, etime=etime, deltatime=deltatime, deltaday=deltaday, opt=opt)
+ else:
+ rett="over"
+ return rett
def station2chtxt(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=\""+station+"\""):
- ret=chtxt
- db.close()
+ #try:
+ database.new_iepg()
+ #except:
+ # ""
+ sta=database.select_by_station_iepg(station)
+ if len(sta)>0:
+ ret=sta[0][1]
+ else:
+ ret="n\/a"
return ret
def readHtmlSrcSimple():
f = open(path+'rswi.htm')
@@ -46,18 +242,101 @@ def readRecFinisSimple():
ret=f.read()
f.close()
return ret
-f=cgi.FieldStorage()
-
+def readRecSchedule():
+ f = open(path+'schedule.htm')
+ ret=f.read()
+ f.close()
+ return ret
+def readiEPGadd():
+ f = open(path+'iepg_add.htm')
+ ret=f.read()
+ f.close()
+ return ret
+def readiEPGshow():
+ f = open(path+'iepg_show.htm')
+ ret=f.read()
+ f.close()
+ return ret
+def get_fin(string,refreshurl):
+ htmdate=readRecFinisSimple()
+ htmdate=htmdate.replace('',string)
+ htmdate=htmdate.replace('',refreshurl)
+ return htmdate
+def mode_iepg_add(station):
+ htmdate=readiEPGadd()
+ htmdate=htmdate.replace("",getchtxt())
+ htmdate=htmdate.replace("","")
+ htmdate=htmdate.replace("",station)
+ return htmdate
+def mode_iepg_fin():
+ s="epgãã¼ã¿ã®è¿½å ãå®äºãã¾ããã
\né²ç»ãè¡ãå ´åã¯ããä¸åº¦ãããããã¾ãã
"
+ u="rec10web.py?exec=iepg-show"
+ return get_fin(s,u)
+def mode_iepg_show():
+ htmdate=readiEPGshow()
+ return htmdate
+def mode_iepg_del():
+ s="epgãã¼ã¿ãåé¤ãã¾ããã"
+ u="rec10web.py?exec=iepg-show"
+ return get_fin(s,u)
+def mode_iepg_del_miss():
+ s="epgãã¼ã¿ã®åé¤ã«å¤±æãã¾ããã"
+ u="rec10web.py?exec=iepg-show"
+ return get_fin(s,u)
+def mode_schedule():
+ htmdate=readRecSchedule()
+ return htmdate
+def mode_recfin():
+ s="äºç´ãçµäºãã¾ããã移åãã¾ãã"
+ u="rec10web.py?exec=schedule"
+ return get_fin(s,u)
+def mode_recover():
+ s="æ大äºç´å¯è½æ°ãè¶
ãã¦ãã¾ã"
+ u="rec10web.py?exec=schedule"
+ return get_fin(s,u)
+def mode_normal():
+ htmdate=readHtmlSrcSimple()
+ htmdate=htmdate.replace("","yes")
+def mode_edit():
+ editnum=exect.replace("edit:","")
+ htmdate= readHtmlSrcSimple()
+ iddata=edit_date(editnum)
+ htmdate=htmdate.replace("",getchtxt())
+ htmdate=htmdate.replace("",iddata['chtxt'])
+ htmdate=htmdate.replace("",iddata['btime'])
+ htmdate=htmdate.replace("",iddata['etime'])
+ htmdate=htmdate.replace("",iddata['type'])
+ htmdate=htmdate.replace("",iddata['chtxt'])
+ htmdate=htmdate.replace("",iddata['title'])
+ htmdate=htmdate.replace("",size)
+ htmdate=htmdate.replace("",iddata["opt"])
+ htmdate=htmdate.replace("","edit-exec:"+editnum)
+ return htmdate
+dbpath=path+"ch.db"
+database=getdb()
btime=""
etime=""
title=""
chtxt=""
type="res"
bt=""
+station_name=""
+mode=""
###ããããiEPGç¨ã®èªã¿åºã
+if f.getfirst('station_name'):
+ station=f.getfirst('station_name')
+ chtxt=station2chtxt(station)
+ if chtxt=="n\/a":
+ mode="iepg-add"
+ station_name=station
+ exect="iepg-add"
if f.getfirst('station'):
station=f.getfirst('station')
chtxt=station2chtxt(station)
+ if chtxt=="n\/a":
+ mode="iepg-add"
+ station_name=station
+ exect="iepg-add"
###ããããå¤é¨ããã®èªã¿åºãã®å ´å
if f.getfirst('type'):
type=f.getfirst('type')
@@ -67,25 +346,24 @@ if f.getfirst('chtxt'):
chtxt=f.getfirst('chtxt')
if f.getfirst('btime'):
btime=f.getfirst('btime')
- bt=datetime.datetime.strptime(btime,"%Y-%m-%d %H:%M:%S")
+ bt=datetime.datetime(*time.strptime(btime,"%Y-%m-%d %H:%M:%S")[:-3])
if f.getfirst('etime'):
etime=f.getfirst('etime')
- et=datetime.datetime.strptime(etime,"%Y-%m-%d %H:%M:%S")
+ et=datetime.datetime(*time.strptime(etime,"%Y-%m-%d %H:%M:%S")[:-3])
if bt !="":
delt=et-bt
- dt=delt.days*24*60+delt.seconds
+ dt=delt.days*24*60*60+delt.seconds
if dt<0:
dd=datetime.timedelta(days=1)
et=et+dd
etime=et.strftime("%Y-%m-%d %H:%M:%S")
- if dt<-1*24*60+1:
+ if dt<-1*24*60*60:
d1=datetime.datetime(bt.year,0,0)
d2=datetime.datetime(bt.year+1,0,0)
dd=d2-d1
et=et+dd
etime=et.strftime("%Y-%m-%d %H:%M:%S")
-
-size=""
+size="S"
if f.getfirst('size'):
size=f.getfirst('size')
opts=""
@@ -100,10 +378,21 @@ if f.getfirst('deltaday',""):
exect=""
if f.getfirst('exec',""):
exect=f.getfirst('exec',"")
-
-htmdate= readHtmlSrcSimple()
+if exect=="schedule":
+ mode="schedule"
+ getRecDate()
+elif re.search('edit:',exect):
+ mode="edit"
+elif exect=="iepg-add":
+ mode="iepg-add"
+elif exect=="iepg-show":
+ mode="iepg-show"
+elif exect=="iepg-add_yes":
+ mode="iepg-add-yes"
+elif exect=="iepg-del":
+ mode="iepg-del"
+htmdate= mode_normal()
htmdate=htmdate.replace("",getchtxt())
-
htmdate=htmdate.replace("",btime)
htmdate=htmdate.replace("",etime)
htmdate=htmdate.replace("",type)
@@ -111,12 +400,80 @@ htmdate=htmdate.replace("",chtxt)
htmdate=htmdate.replace("",title)
htmdate=htmdate.replace("",size)
htmdate=htmdate.replace("",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=mode_recfin()
+ else:
+ htmdate=mode_recover()
+ 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=mode_recfin()
+ elif restxt=="over":
+ htmdate=mode_recover()
+ exect=""
+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=mode_recfin()
+ elif restxt=="over":
+ htmdate=mode_recover()
exect=""
-#
+if mode=="schedule":
+ htmdate=mode_normal()
+elif mode=="edit":
+ htmdate=mode_edit()
+elif mode=="iepg-add":
+ htmdate=mode_iepg_add(station_name)
+elif mode=="iepg-add-yes":
+ try:
+ database.new_iepg()
+ except:
+ ""
+ if f.getfirst('iepg_station') and f.getfirst('iepg_chtxt'):
+ database.add_iepg(f.getfirst('iepg_station'),f.getfirst('iepg_chtxt'))
+ htmdate=mode_iepg_fin()
+elif mode=="iepg-show":
+ getiEPGDate()
+ htmdate=mode_iepg_show()
+elif mode=="iepg-del":
+ s=f.getfirst('iepgdelnum')
+ htmdate=""
+ try:
+ for st in s.split(","):
+ if st!="":
+ database.del_by_id_iepg(st)
+ htmdate=mode_iepg_del()
+ except:
+ htmdate=mode_iepg_del_miss()
+print "Content-Type: text/html"
print htmdate
-
+#print exect
+#print mode