--- /dev/null
+#!/usr/bin/python
+# coding: UTF-8
+# Rec10 TS Recording Tools
+# Copyright (C) 2009 Yukikaze
+#import sys
+#import os
+import sqlite3
+import recdb
+#db.execute('create table rectime
+#(type TEXT,chtxt TEXT,title TEXT,btime TEXT,etime TEXT,deltatime TEXT,deltaday TEXT,opt TEXT,id INTEGER PRIMARY KEY,UNIQUE(type,chtxt,title,btime,deltaday))')
+path=str(os.path.dirname(os.path.abspath(__file__)))+"/"
+dbpath=path+"ch.db"
+def __inif__(self,value):
+ dbpath=value
+ db=sqlite3.connect(dbpath)
+ try:
+ db.execute('create table rectime (type TEXT,chtxt TEXT,title TEXT,btime TEXT,etime TEXT,deltatime TEXT,deltaday TEXT,opt TEXT,id INTEGER PRIMARY KEY,UNIQUE(type,chtxt,title,btime,deltaday))')
+ except:
+ ""
+def connect_db(tout=10):
+ global dbpath
+ """
+ dbへの接続(timeoutは秒)
+
+ """
+ return sqlite3.connect(dbpath,timeout=tout*1000)
+def close_db(db):
+ db.close()
+def add_rectime(type="",chtxt="",title="",btime="",etime="",deltatime="",deltaday="",opt=""):
+ db=connect_db(60)
+ t=0
+ while t<10
+ try:
+ db.execute('insert into rectime values (?,?,?,datetime(?),datetime(?),?,?,?)',(type,chtxt,title,btime,etime,deltatime,deltaday,opt)
+ break
+ except sqlite3.OperationalError:
+ t=t+1
+ time.sleep(1)
+ db.commit()
+ close_db(db)
+def del_rectime(type="",title="",chtxt="",btime=""):
+ db=connect_db(60)
+ t=0
+ while t<10
+ try:
+ db.execute("delete from rectime where type = ? AND title = ? AND chtxt = ? AND btime = datetime(?)",(type,title,chtxt,btime))
+ break
+ except sqlite3.OperationalError:
+ t=t+1
+ time.sleep(1)
+ db.commit()
+ close_db(db)
+def select_all_rectime():
+ db=connect_db(60)
+ recdata=[]
+ for typet, chtxt, title, btime, etime, deltatime ,deltaday ,opt in db.execute("SELECT type, chtxt, title, btime, etime, deltatime ,deltaday ,opt FROM rectime"):
+ ret={}
+ ret['type']=typet
+ ret['chtxt']=chtxt
+ ret['title']=title.encode('utf-8')
+ ret['btime']=btime
+ ret['etime']=etime
+ ret['opt']=opt
+ if deltatime==None:
+ deltatime="3"
+ if deltaday==None:
+ deltaday="7"
+ if typet=='key':
+ ret['deltatime']=deltatime
+ elif typet=='keyevery':
+ ret['deltatime']=deltatime
+ ret['deltaday']=deltaday
+ recdata.append(ret)
+ close_db(db)
+ return recdata
+def select_bytime_rectime(dhour):
+ db=connect_db(60)
+ recdatum=[]
+ for typet, chtxt, title, btime, etime, deltatime ,deltaday ,opt in db.execute("SELECT type, chtxt, title, DATETIME(btime), DATETIME(etime), deltatime ,deltaday ,opt FROM rectime WHERE btime < datetime(\'now\',\'localtime\',\'+"+dhour+" hours\') AND btime >datetime(\'now\',\'localtime\',\'-"+dhour+" hours\')"):
+ ret={}
+ ret['type']=typet
+ ret['chtxt']=chtxt
+ ret['title']=title.encode('utf-8')
+ ret['btime']=btime
+ ret['etime']=etime
+ ret['opt']=opt
+ if deltatime==None or deltatime=="":
+ deltatime="3"
+ if deltaday==None or deltaday=="":
+ deltaday="7"
+ if typet=='key':
+ ret['deltatime']=deltatime
+ elif typet=='keyevery':
+ ret['deltatime']=deltatime
+ ret['deltaday']=deltaday
+ recdatum.append(ret)
+ close_db(db)
+ return recdatum
+def delete_old_rectime(dhour):
+ db=connect_db(60)
+ db.execute("DELETE FROM rectime WHERE NOT ( type = ? OR type = ? ) AND btime < datetime(\'now\',\'localtime\',\'-"+dhour+" hours\')",(recdb.REC_MISS_ENCODE,recdb.REC_KEYWORD_EVERY_SOME_DAYS))
+ db.commit()
+ close_db(db)
+def new_tv(bctype):
+ db=connect_db(60)
+ try:
+ db.execute("delete from tv where bctype = ?",bctype)
+ except:
+ ""
+ try:
+ db.execute('create table tv (bctype TEXT,channel TEXT NOT NULL,start TEXT,stop TEXT,title TEXT,desc TEXT)')
+ except:
+ ""
+ db.commit()
+ close_db(db)
+def add_tv(bctype,channel,start,stop,title,desc):
+ db=connect_db(60)
+ t=0
+ while t<10
+ try:
+ db.execute('insert into tv values (?,?,?,?,?,?)',(bctype,channel,start,stop,title,desc))
+ break
+ except sqlite3.OperationalError:
+ t=t+1
+ time.sleep(1)
+ db.commit()
+ close_db(db)
+def new_ch(bctype):
+ db=connect_db(60)
+ try:
+ db.execute("delete from ch where bctype = ?",bctype)
+ except:
+ ""
+ try:
+ db.execute('create table ch (bctype TEXT,channel TEXT NOT NULL,display TEXT)')
+ except:
+ ""
+ db.commit()
+ close_db(db)
+def add_ch(bctype,channel,display):
+ db=connect_db(60)
+ t=0
+ while t<10
+ try:
+ db.execute('insert into tv values (?,?,?)',(bctype,channel,display))
+ break
+ except sqlite3.OperationalError:
+ t=t+1
+ time.sleep(1)
+ db.commit()
+ close_db(db)
\ No newline at end of file
# coding: UTF-8
# Rec10 TS Recording Tools
# Copyright (C) 2009 Yukikaze
-import os
-import sqlite3
import recdb
-dbpath=str(os.path.dirname(os.path.abspath(__file__)))+"/"+"ch.db"
-db=sqlite3.connect(dbpath)
-
+import rec10d
"""
task names
"""
REC_TS_DECODING="tsdecoding"
REC_TS_RECORDING="tsrecording"
-try:
- db.execute('create table rectime (type TEXT,chtxt TEXT,title TEXT,btime TEXT,etime TEXT,deltatime TEXT,deltaday TEXT,opt TEXT,id INTEGER PRIMARY KEY,UNIQUE(type,chtxt,title,btime,deltaday))')
-except:
- #print "テーブル作成に失敗しました"
- db.commit()
- db.close()
def recreserv(title,chtxt,btime,etime,opt):#optにはa(アニメ)d(副音声)v(xvid)
rec_reckey("res",title,chtxt,btime,etime,opt)
def keyreserv(keyword,chtxt,btime,etime,deltatime,opt):
- db=sqlite3.connect(dbpath)
- recline="\""+recdb.REC_KEYWORD+"\",\""+chtxt+"\",\""+keyword+"\",datetime(\""+btime+"\"),datetime(\""+etime+"\"),\""+deltatime+"\",\""+opt+"\""
- db.execute('insert into rectime ("type","chtxt","title","btime","etime","deltatime","opt") values ('+recline+')')
- db.commit()
- db.close()
+ rec10d.rec10db.add_rectime(type=recdb.REC_KEYWORD,chtxt=chtxt,title=keyword,btime=btime,etime=etime,deltatime=deltatime,opt=opt)
def everyreserv(keyword,chtxt,btime,etime,deltatime,opt,deltaday):
- db=sqlite3.connect(dbpath)
- recline="\""+recdb.REC_KEYWORD_EVERY_SOME_DAYS+"\",\""+chtxt+"\",\""+keyword+"\",datetime(\""+btime+"\"),datetime(\""+etime+"\"),\""+deltatime+"\",\""+opt+"\",\""+deltaday+"\""
- db.execute('insert into rectime ("type","chtxt","title","btime","etime","deltatime","opt","deltaday") values ('+recline+')')
- db.commit()
- db.close()
-def lastrecreserv(title,chtxt,btime,etime,opt):#optにはa(アニメ)d(副音声)v(xvid)##btimeなどは2006-07-17 13:25:23の形
- """
- Caution this is old function and you should not use it.
- Please use rec_reckey(recdb.REC_FINAL_RESERVE,title,chtxt,btime,etime,opt) instead of lastrecreserv(title,chtxt,btime,etime,opt)
- """
- rec_reckey(recdb.REC_FINAL_RESERVE,title,chtxt,btime,etime,opt)
-def misrecwrite(title,chtxt,btime,etime,opt):
+ rec10d.rec10db.add_rectime(type=recdb.REC_KEYWORD_EVERY_SOME_DAYS,chtxt=chtxt,title=keyword,btime=btime,etime=etime,deltatime=deltatime,opt=opt,deltaday=deltaday)
+#def lastrecreserv(title,chtxt,btime,etime,opt):#optにはa(アニメ)d(副音声)v(xvid)##btimeなどは2006-07-17 13:25:23の形
+# """
+# Caution this is old function and you should not use it.
+# Please use rec_reckey(recdb.REC_FINAL_RESERVE,title,chtxt,btime,etime,opt) instead of lastrecreserv(title,chtxt,btime,etime,opt)
+# """
+# rec_reckey(recdb.REC_FINAL_RESERVE,title,chtxt,btime,etime,opt)
- """
- Caution this is old function and you should not use it.
- Please use rec_reckey(recdb.REC_MISS_ENCODE,title,chtxt,btime,etime,opt) instead.
- """
- rec_reckey(recdb.REC_MISS_ENCODE,title,chtxt,btime,etime,opt)
-def recend(title,chtxt,btime,etime,opt):#optにはa(アニメ)d(副音声)v(xvid)
- """
- Caution this is old function and you should not use it.
- Please use rec_reckey(recdb.REC_END,title,chtxt,btime,etime,opt) instead.
- """
- rec_reckey(recdb.REC_END,title,chtxt,btime,etime,opt)
+#def misrecwrite(title,chtxt,btime,etime,opt):
+#
+# """
+# Caution this is old function and you should not use it.
+# Please use rec_reckey(recdb.REC_MISS_ENCODE,title,chtxt,btime,etime,opt) instead.
+# """
+# rec_reckey(recdb.REC_MISS_ENCODE,title,chtxt,btime,etime,opt)
+#def recend(title,chtxt,btime,etime,opt):#optにはa(アニメ)d(副音声)v(xvid)
+# """
+# Caution this is old function and you should not use it.
+# Please use rec_reckey(recdb.REC_END,title,chtxt,btime,etime,opt) instead.
+# """
+# rec_reckey(recdb.REC_END,title,chtxt,btime,etime,opt)
def rec_reckey(type,title,chtxt,btime,etime,opt):
- db=sqlite3.connect(dbpath)
- recline="\""+type+"\",\""+chtxt+"\",\""+title+"\",datetime(\""+btime+"\"),datetime(\""+etime+"\"),\""+opt+"\""
- db.execute('insert into rectime ("type","chtxt","title","btime","etime","opt") values ('+recline+')')
- db.commit()
- db.close()
-def delrec(title,chtxt,btime):
- """
- Caution this is old function and you should not use it.
- Please use del_reckey(recdb.REC_RESERVE,title,chtxt,btime) instead.
- """
- del_reckey(recdb.REC_RESERVE,title,chtxt,btime)
-def delkey(keyword,chtxt,btime,deltatime):
- """
- Caution this is old function and you should not use it.
- Please use del_reckey(recdb.REC_FINAL_RESERVE,keyword,chtxt,btime) instead.
- """
- del_reckey(recdb.REC_KEYWORD,keyword,chtxt,btime)
-def dellastrec(title,chtxt,btime):
- """
- Caution this is old function and you should not use it.
- Please use del_reckey(recdb.REC_FINAL_RESERVE,title,chtxt,btime) instead.
- """
- del_reckey(recdb.REC_FINAL_RESERVE,title,chtxt,btime)
-def delevery(keyword,chtxt,btime,deltatime,deltaday):
- """
- Caution this is old function and you should not use it.
- Please use del_reckey(recdb.REC_FINAL_RESERVE,keyword,chtxt,btime) instead.
- """
- del_reckey(recdb.REC_KEYWORD_EVERY_SOME_DAYS,keyword,chtxt,btime)
-def delend(title,chtxt,btime):
- """
- Caution this is old function and you should not use it.
- Please use del_reckey(recdb.REC_END,title,chtxt,btime) instead.
- """
- del_reckey(recdb.REC_END,title,chtxt,btime)
-def deltitle(key):
- db=sqlite3.connect(dbpath)
- i=0
- for title in db.execute("SELECT title FROM rectime WHERE title like \"%"+key+"%\""):
- i=i+1
- if i==1:
- db.execute("delete from rectime where title like \'%"+key+"%\'")
- db.commit()
- db.close()
+ rec10d.rec10db.add_rectime(type=type,chtxt=chtxt,title=title,btime=btime,etime=etime,opt=opt)
+#def delrec(title,chtxt,btime):
+# """
+# Caution this is old function and you should not use it.
+# Please use del_reckey(recdb.REC_RESERVE,title,chtxt,btime) instead.
+# """
+# del_reckey(recdb.REC_RESERVE,title,chtxt,btime)
+#def delkey(keyword,chtxt,btime,deltatime):
+# """
+# Caution this is old function and you should not use it.
+# Please use del_reckey(recdb.REC_FINAL_RESERVE,keyword,chtxt,btime) instead.
+# """
+# del_reckey(recdb.REC_KEYWORD,keyword,chtxt,btime)
+#def dellastrec(title,chtxt,btime):
+# """
+# Caution this is old function and you should not use it.
+# Please use del_reckey(recdb.REC_FINAL_RESERVE,title,chtxt,btime) instead.
+# """
+# del_reckey(recdb.REC_FINAL_RESERVE,title,chtxt,btime)
+#def delevery(keyword,chtxt,btime,deltatime,deltaday):
+# """
+# Caution this is old function and you should not use it.
+# Please use del_reckey(recdb.REC_FINAL_RESERVE,keyword,chtxt,btime) instead.
+# """
+# del_reckey(recdb.REC_KEYWORD_EVERY_SOME_DAYS,keyword,chtxt,btime)
+#def delend(title,chtxt,btime):
+# """
+# Caution this is old function and you should not use it.
+# Please use del_reckey(recdb.REC_END,title,chtxt,btime) instead.
+# """
+# del_reckey(recdb.REC_END,title,chtxt,btime)
+#def deltitle(key):
+# db=sqlite3.connect(dbpath)
+# i=0
+# for title in db.execute("SELECT title FROM rectime WHERE title like \"%"+key+"%\""):
+# i=i+1
+# if i==1:
+# db.execute("delete from rectime where title like \'%"+key+"%\'")
+# db.commit()
+# db.close()
def del_reckey(type,title,chtxt,btime):
- db=sqlite3.connect(dbpath)
- db.execute("delete from rectime where type = \'"+type+"\' AND title = \'"+title+"\' AND chtxt = \'"+chtxt+"\' AND btime = datetime(\""+btime+"\")")
- db.commit()
- db.close()
+ rec10d.rec10db.del_rectime(type=type,title=title,chtxt=chtxt,btime=btime)
def getnow(dhour):
- db=sqlite3.connect(dbpath)
- recdatum=[]
- for typet, chtxt, title, btime, etime, deltatime ,deltaday ,opt in db.execute("SELECT type, chtxt, title, DATETIME(btime), DATETIME(etime), deltatime ,deltaday ,opt FROM rectime WHERE btime < datetime(\'now\',\'localtime\',\'+"+dhour+" hours\') AND btime >datetime(\'now\',\'localtime\',\'-"+dhour+" hours\')"):
- ret={}
- ret['type']=typet
- ret['chtxt']=chtxt
- ret['title']=title.encode('utf-8')
- ret['btime']=btime
- ret['etime']=etime
- ret['opt']=opt
- if deltatime==None or deltatime=="":
- deltatime="3"
- if deltaday==None or deltaday=="":
- deltaday="7"
- if typet=='key':
- ret['deltatime']=deltatime
- elif typet=='keyevery':
- ret['deltatime']=deltatime
- ret['deltaday']=deltaday
- recdatum.append(ret)
- db.commit()
- db.close()
- return recdatum
+ return rec10d.rec10db.select_bytime_rectime(dhour)
def countRecNow(dhour):
d=getnow(dhour)
ret=0
"""
delete keys except recdb.REC_MISS_ENCODE and recdb.REC_KEYWORD_EVERY_SOME_DAYS before dhour hours from now.
"""
- db=sqlite3.connect(dbpath)
- db.execute("DELETE FROM rectime WHERE NOT ( type = \""+recdb.REC_MISS_ENCODE+"\" OR type = \""+recdb.REC_KEYWORD_EVERY_SOME_DAYS+"\" ) AND btime < datetime(\'now\',\'localtime\',\'-"+dhour+" hours\')")
- db.commit()
- db.close()
+ rec10d.rec10db.delete_old_rectime(dhour)
def getall():
- db=sqlite3.connect(dbpath)
- recdata=[]
- for typet, chtxt, title, btime, etime, deltatime ,deltaday ,opt in db.execute("SELECT type, chtxt, title, btime, etime, deltatime ,deltaday ,opt FROM rectime"):
- ret={}
- ret['type']=typet
- ret['chtxt']=chtxt
- ret['title']=title.encode('utf-8')
- ret['btime']=btime
- ret['etime']=etime
- ret['opt']=opt
- if deltatime==None:
- deltatime="3"
- if deltaday==None:
- deltaday="7"
- if typet=='key':
- ret['deltatime']=deltatime
- elif typet=='keyevery':
- ret['deltatime']=deltatime
- ret['deltaday']=deltaday
- recdata.append(ret)
- db.close()
- return recdata
+ return rec10d.rec10db.select_all_rectime()
# Copyright (C) 2009 Yukikaze
#import sys
#import os
+import rec10d
import zenhan
import xml.parsers.expat
-import sqlite3
-#import xml.sax as sax
-#from xml.sax.saxutils import DefaultHandler
flags={}
lastflag=""
xmldate={}
global db,bctype
bctype=bctypetemp
#print path
- createDB(dbpath)
+ createDB()
#db.execute('drop table tv')
#db.execute('drop table ch')
p.CharacterDataHandler=char_data
parseDocument(p,xmlpath)
-def createDB(path):
- global db,bctype,fpath
- fpath=path
- db=sqlite3.connect(fpath)
- print fpath
- try:
- db.execute("delete from tv where bctype = \'"+bctype+"\'")
- except:
- test=""
- try:
- db.execute("delete from ch where bctype = \'"+bctype+"\'")
- except:
- test=""
- try:
- db.execute('create table tv (bctype TEXT,channel TEXT NOT NULL,start TEXT,stop TEXT,title TEXT,desc TEXT)')
- except:
- test=""
- try:
- db.execute('create table ch (bctype TEXT,channel TEXT NOT NULL,display TEXT)')
- except:
- test=""
+def createDB():
+ global bctype
+ rec10d.rec10db.new_tv(bctype)
+ rec10d.rec10db.new_ch(bctype)
def writetvDB(bctype,channel,start,stop,title,desc):#tvdateは(放送種別,チャンネル,start,stop,title,desc)の形式
- global db
- try:
- db.execute('insert into tv values (?,?,?,?,?,?)',(bctype,channel,start,stop,title,desc))
- except:
- print "xml2db-error(writetvDB):"+"'insert into tv values '"+title
-def writetvDB_bef(datetv):#tvdateは(放送種別,チャンネル,start,stop,title,desc)の形式
- global db
- try:
- db.execute('insert into tv values '+datetv)
- except:
- print "xml2db-error(writetvDB):"+"'insert into tv values '"+datetv
-def writechDB(datech):#tvdateは(チャンネル,display)の形式
- global db
- db.execute('insert into ch values '+datech)
+ rec10d.rec10db.add_tv(bctype,channel,start,stop,title,desc)
+def writechDB(bctype,id,display):#tvdateは(チャンネル,display)の形式
+ rec10d.rec10db.add_ch(bctype,id,display)
def parseDocument(p,xmlfile):
f=open(xmlfile,'r')
p.ParseFile(f)
global flags,lastflag,xmldate,db
if flags[name]==1:
if name=="channel":
- xmld="(\""+bctype+"\",\""+xmldate['channel:id']+"\",\""+xmldate['display-name']+"\")"
- xmld=unicode(xmld)
- writechDB(xmld)
+ ubctype=unicode(bctype)
+ uid=unicode(xmldate['channel:id'])
+ udn=unicode(xmldate['display-name'])
+ writechDB(bctype,uid,udn)
xmldate['channel:id']=""
xmldate['display-name']=""
- #xmldate={}
- #print xmld
elif name=="programme":
ubctype=unicode(bctype)
uch=unicode(xmldate['programme:channel'])
for row in r:
print row
"""
- db.commit()
- db.close()
+ ""
flags[name]=0
def char_data(data):
global flags,lastflag,xmldate