OSDN Git Service

stop using trunk directory in rectool
[rec10/rec10-git.git] / rec10 / trunk / src / recdb.py
index 99c63ec..8f3b41b 100644 (file)
 #!/usr/bin/python
 # coding: UTF-8
 # Rec10 TS Recording Tools
-# Copyright (C) 2009 Yukikaze
-import os
-import sqlite3
-#import japanesenkf
-#japanesenkf.overrideEncodings()
-dbpath=str(os.path.dirname(os.path.abspath(__file__)))+"/"+"ch.db"
-db=sqlite3.connect(dbpath)
-#try:
-#db.execute('drop table rectime')
-#db.commit()
-#except:
-    #  test=""
-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)
-    db=sqlite3.connect(dbpath)
-    recline="\"res\",\""+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 keyreserv(keyword,chtxt,btime,etime,deltatime,opt):
-    db=sqlite3.connect(dbpath)
-    recline="\"key\",\""+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()
-def everyreserv(keyword,chtxt,btime,etime,deltatime,opt,deltaday):
-    db=sqlite3.connect(dbpath)
-    recline="\"keyevery\",\""+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の形
-    db=sqlite3.connect(dbpath)
-    recline="\"rec\",\""+chtxt+"\",\""+title+"\",datetime(\""+btime+"\"),datetime(\""+etime+"\"),\""+opt+"\""
-    #db.execute('insert into rectime ("type","chtxt","title","btime","etime","opt") values ('+recline+')')
-    db.execute('insert into rectime (type,chtxt,title,btime,etime,opt) values ('+recline+')')
-    db.commit()
-    db.close()
-def misrecwrite(title,chtxt,btime,etime,opt):
-    db=sqlite3.connect(dbpath)
-    recline="\"miss\",\""+chtxt+"\",\""+title+"\",datetime(\""+btime+"\"),datetime(\""+etime+"\"),\""+opt+"\""
-    #db.execute('insert into rectime ("type","chtxt","title","btime","etime","opt") values ('+recline+')')
-    db.execute('insert into rectime (type,chtxt,title,btime,etime,opt) values ('+recline+')')
-    db.commit()
-    db.close()
-def recend(title,chtxt,btime,etime,opt):#optにはa(アニメ)d(副音声)v(xvid)
-    db=sqlite3.connect(dbpath)
-    recline="\"end\",\""+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):
-    db=sqlite3.connect(dbpath)
-    db.execute("delete from rectime where type = \'res\' AND title = \'"+title+"\' AND chtxt = \'"+chtxt+"\' AND btime = datetime(\""+btime+"\")")
-    db.commit()
-    db.close()
-def delkey(keyword,chtxt,btime,deltatime):
-    db=sqlite3.connect(dbpath)
-    db.execute("delete from rectime where deltatime = \'"+deltatime+"\' AND type = \'key\' AND title = \'"+keyword+"\' AND chtxt = \'"+chtxt+"\' AND btime = datetime(\""+btime+"\")")
-    db.commit()
-    db.close()
-def dellastrec(title,chtxt,btime):
-    db=sqlite3.connect(dbpath)
-    db.execute("delete from rectime where type = \'rec\' AND title = \'"+title+"\' AND chtxt = \'"+chtxt+"\' AND btime = datetime(\""+btime+"\")")
-    db.commit()
-    db.close()
-def delevery(keyword,chtxt,btime,deltatime,deltaday):
-    db=sqlite3.connect(dbpath)
-    db.execute("delete from rectime where deltaday = \'"+deltaday+"\' AND deltatime = \'"+deltatime+"\' AND type = \'keyevery\' AND title = \'"+keyword+"\' AND chtxt = \'"+chtxt+"\' AND btime = datetime(\""+btime+"\")")
-    db.commit()
-    db.close()
-def delend(title,chtxt,btime):
-    db=sqlite3.connect(dbpath)
-    db.execute("delete from rectime where type = \'end\' AND title = \'"+title+"\' AND chtxt = \'"+chtxt+"\' AND btime = datetime(\""+btime+"\")")
-    db.commit()
-    db.close()
+# Copyright (C) 2009-2011 Yukikaze
+import chdb
+import n_gram
+import rec10d
+import recdblist
 
-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 delkeyword(key):
-    db=sqlite3.connect(dbpath)
-    i=0
-    #print "SELECT * FROM rectime WHERE keyword like \'%"+key+"+%\'"
-    for keyword in db.execute("SELECT * FROM rectime WHERE keyword like \'%"+key+"%\'"):
-        i=i+1
-        print keyword
-    print i
-    if i==1:
-        db.execute("delete from rectime where keyword like \'%"+key+"%\'")
-    db.commit()
-    db.close()
+def reserveKeyword(keyword, chtxt, btime, etime, deltatime, opt):
+    rec10d.rec10db.add_timeline(type=recdblist.REC_KEYWORD, chtxt=chtxt, title=keyword, btime=btime, etime=etime, deltatime=deltatime, opt=opt)
+def reserveEverydayKeyword(keyword, chtxt, btime, etime, deltatime, opt, deltaday,count):
+    tcount=count
+    if tcount<0:
+        tcount=-1
+    rec10d.rec10db.add_timeline(type=recdblist.REC_KEYWORD_EVERY_SOME_DAYS, chtxt=chtxt, title=keyword, btime=btime, etime=etime, deltatime=deltatime, opt=opt, deltaday=deltaday,counter=tcount)
+def reserveReckey(type, title, chtxt, btime, etime, opt):
+    rec10d.rec10db.add_timeline(type=type, chtxt=chtxt, title=title, btime=btime, etime=etime, opt=opt)
+def deleteReckey(type, title, chtxt, btime):
+    rec10d.rec10db.del_timeline(type=type, title=title, chtxt=chtxt, btime=btime)
+def reserveAutoKeyword(chtxt,title,btime,etime):
+    rec10d.rec10db.add_auto_timeline_keyword(chtxt, title, btime, etime)
+def addAutoBayesKeyword(chtxt,title,btime,etime,point):
+    rec10d.rec10db.add_auto_timeline_bayes(chtxt, title, btime, etime,point)
+def getProgramsInTheseHours(dhour):
+    dhour = int(dhour)
+    dminutes = 60 * dhour
+    dminutes = str(dminutes)
+    return rec10d.rec10db.select_bytime_timeline(dminutes)
+def getProgramsInTheseMinutes(dminutes):
+    return rec10d.rec10db.select_bytime_timeline(dminutes)
+def countRecNow(dhour):
+    d = getProgramsInTheseHours(dhour)
+    ret = 0
+    for i in d:
+        t = i['type']
+        if t == "key" or t == "keyevery" or t == "rec" or t == "res":
+            ret = ret + 1
+    return ret
+def countRecNow_minutes(dminutes):
+    d = getProgramsInTheseMinutes(dminutes)
+    ret = 0
+    for i in d:
+        t = i['type']
+        if t == "key" or t == "keyevery" or t == "rec" or t == "res":
+            ret = ret + 1
+    return ret
+def countRecNow_minutes_BSCS(dminutes):
+    d = getProgramsInTheseMinutes(dminutes)
+    ret = 0
+    for i in d:
+        t = i['type']
+        if t == "key" or t == "keyevery" or t == "rec" or t == "res":
+            if len(chdb.searchCHFromChtxt(i['chtxt'])['ch']) > 2:
+                ret = ret + 1
+    return ret
+def countRecNow_minutes_TE(dminutes):
+    d = getProgramsInTheseMinutes(dminutes)
+    ret = 0
+    for i in d:
+        t = i['type']
+        if t == "key" or t == "keyevery" or t == "rec" or t == "res":
+            if len(chdb.searchCHFromChtxt(i['chtxt'])['ch']) < 3:
+                ret = ret + 1
+    return ret
+def deleteOldProgramBeforeTheseHours(dhour):
     """
-def getnow(dhour):
-    db=sqlite3.connect(dbpath)
-    recdata=[]
-    db.execute("DELETE FROM rectime WHERE NOT type = \"miss\" AND btime < datetime(\'now\',\'localtime\',\'-"+dhour+" hours\')")
-    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\')"):
-        if typet=='res':
-            ret={}
-            ret['type']='res'
-            ret['chtxt']=chtxt
-            ret['title']=title.encode('utf-8')
-            ret['btime']=btime
-            ret['etime']=etime
-            ret['opt']=opt
-            #print ret
-            recdata.append(ret)
-        elif typet=='rec':
-            ret={}
-            ret['type']='rec'
-            ret['chtxt']=chtxt
-            ret['title']=title.encode('utf-8')
-            ret['btime']=btime
-            ret['etime']=etime
-            ret['opt']=opt
-            #print title.encode('utf-8')
-            recdata.append(ret)
-        elif typet=='key':
-            ret={}
-            ret['type']='key'
-            ret['chtxt']=chtxt
-            ret['title']=title.encode('utf-8')
-            ret['btime']=btime
-            ret['etime']=etime
-            ret['deltatime']=deltatime
-            ret['opt']=opt
-            recdata.append(ret)
-        elif typet=='keyevery':
-            ret={}
-            ret['type']='keyevery'
-            ret['chtxt']=chtxt
-            ret['title']=title.encode('utf-8')
-            ret['btime']=btime
-            ret['etime']=etime
-            ret['deltatime']=deltatime
-            ret['opt']=opt
-            ret['deltaday']=deltaday
-            recdata.append(ret)
-        elif typet=='end':
-            ret={}
-            ret['type']='end'
-            ret['chtxt']=chtxt
-            ret['title']=title.encode('utf-8')
-            ret['btime']=btime
-            ret['etime']=etime
-            ret['opt']=opt
-            #print ret
-            recdata.append(ret)
-        elif typet=='miss':
-            ret={}
-            ret['type']='miss'
-            ret['chtxt']=chtxt
-            ret['title']=title.encode('utf-8')
-            ret['btime']=btime
-            ret['etime']=etime
-            ret['opt']=opt
-            #print ret
-            recdata.append(ret)
-    db.commit()
-    db.close()
-    return recdata
-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"):
-        if typet=='res':
-            ret={}
-            ret['type']='res'
-            ret['chtxt']=chtxt
-            ret['title']=title.encode('utf-8')
-            ret['btime']=btime
-            ret['etime']=etime
-            ret['opt']=opt
-            #print ret
-            recdata.append(ret)
-        elif typet=='rec':
-            ret={}
-            ret['type']='rec'
-            ret['chtxt']=chtxt
-            ret['title']=title.encode('utf-8')
-            ret['btime']=btime
-            ret['etime']=etime
-            ret['opt']=opt
-            #print ret
-            recdata.append(ret)
-        elif typet=='key':
-            ret={}
-            ret['type']='key'
-            ret['chtxt']=chtxt
-            ret['title']=title.encode('utf-8')
-            ret['btime']=btime
-            ret['deltatime']=deltatime
-            ret['opt']=opt
-            recdata.append(ret)
-        elif typet=='keyevery':
-            ret={}
-            ret['type']='keyevery'
-            ret['chtxt']=chtxt
-            ret['title']=title.encode('utf-8')
-            ret['btime']=btime
-            ret['deltatime']=deltatime
-            ret['opt']=opt
-            ret['deltaday']=deltaday
-            recdata.append(ret)
-        if typet=='miss':
-            ret={}
-            ret['type']='miss'
-            ret['chtxt']=chtxt
-            ret['title']=title.encode('utf-8')
-            ret['btime']=btime
-            ret['etime']=etime
-            ret['opt']=opt
-            #print ret
-            recdata.append(ret)
-    db.close()
-    return recdata
+    delete keys except recdblist.REC_MISS_ENCODE and recdblist.REC_KEYWORD_EVERY_SOME_DAYS before dhour hours from now.
+    """
+    rec10d.rec10db.delete_old_timeline(dhour)
+def delete_old_auto_keyword(dhour):
+    rec10d.rec10db.delete_old_auto_timeline_keyword(dhour)
+def delete_old_auto_bayes(dhour):
+    rec10d.rec10db.delete_old_auto_timeline_bayes(dhour)
+def getAll():
+    return rec10d.rec10db.select_all_timeline()
+def addRecLogProgram(title,chtxt,btime,etime,opt,exp,longexp,category):
+    rec10d.rec10db.add_in_timeline_log(chtxt,title,btime,etime,opt,exp,longexp,category)
+def getAllJbkKeyword():
+    return rec10d.rec10db.select_all_in_auto_jbk_key()
+def checkDuplicated(title,chtxt,epgbtime,epgetime):
+    tl=rec10d.rec10db.select_byepgtime_all_timeline(epgbtime,epgetime)
+    nel=rec10d.rec10db.select_bytime_all_timeline(epgbtime, epgetime)
+    dup=0
+    for t in tl:
+        if t["title"]==title and t["chtxt"]==chtxt:
+            dup=1
+        elif n_gram.trigram(t["title"],title)> 500 and t["chtxt"]==chtxt:
+            dup=1
+    for t in nel:
+        if t["title"]==title and t["chtxt"]==chtxt:
+            dup=1
+        elif n_gram.trigram(t["title"],title)> 500 and t["chtxt"]==chtxt:
+            dup=1
+    return dup