OSDN Git Service

try to ready to use mysql.
authorgn64_jp <gn64_jp@4e526526-5e11-4fc0-8910-f8fd03428081>
Sat, 1 Aug 2009 09:10:15 +0000 (09:10 +0000)
committergn64_jp <gn64_jp@4e526526-5e11-4fc0-8910-f8fd03428081>
Sat, 1 Aug 2009 09:10:15 +0000 (09:10 +0000)
git-svn-id: svn+ssh://svn.sourceforge.jp/svnroot/rec10@86 4e526526-5e11-4fc0-8910-f8fd03428081

rec10/trunk/src/dbSQLite.py [new file with mode: 0644]
rec10/trunk/src/rec10d.py
rec10/trunk/src/recdb.py
rec10/trunk/src/xml2db.py

diff --git a/rec10/trunk/src/dbSQLite.py b/rec10/trunk/src/dbSQLite.py
new file mode 100644 (file)
index 0000000..66ddf1a
--- /dev/null
@@ -0,0 +1,151 @@
+#!/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
index fc91a37..53b72e1 100644 (file)
@@ -4,7 +4,11 @@
 # Copyright (C) 2009 Yukikaze
 import os
 import timerec
+import dbSQLite
 path=str(os.path.dirname(os.path.abspath(__file__)))+"/"
+global rec10db
+rec10db=dbSQLite(path+"ch.db")
+
 
 timerec.task()
 
index dbb768d..929035e 100644 (file)
@@ -2,12 +2,8 @@
 # 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
 """
@@ -42,119 +38,77 @@ REC_MISS_DECODE="tsmiss"
 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
@@ -167,30 +121,6 @@ def delete_old(dhour):
     """
     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()
index b30add2..a0198f4 100644 (file)
@@ -4,11 +4,9 @@
 # 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={}
@@ -18,7 +16,7 @@ def xml2db(xmlpath,dbpath,bctypetemp):#bctypeは放送種別で'TE'(地デジ)BS
     global db,bctype
     bctype=bctypetemp
     #print path
-    createDB(dbpath)
+    createDB()
     #db.execute('drop table tv')
     #db.execute('drop table ch')
 
@@ -29,42 +27,14 @@ def xml2db(xmlpath,dbpath,bctypetemp):#bctypeは放送種別で'TE'(地デジ)BS
     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)
@@ -79,13 +49,12 @@ def end_element(name):
     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'])
@@ -104,8 +73,7 @@ def end_element(name):
             for row in r:
                 print row
             """
-            db.commit()
-            db.close()
+            ""
     flags[name]=0
 def char_data(data):
     global flags,lastflag,xmldate