OSDN Git Service

stop using trunk directory in rectool
[rec10/rec10-git.git] / rec10 / trunk / src / recdb.py
index 7f593db..8f3b41b 100644 (file)
 #!/usr/bin/python
 # 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)
+# Copyright (C) 2009-2011 Yukikaze
+import chdb
+import n_gram
+import rec10d
+import recdblist
 
-"""
-task names
-"""
-global REC_RESERVE
-global REC_FINAL_RESERVE
-global REC_END
-global REC_ENCODE_GRID
-global REC_ENCODE_LOCAL
-global REC_ENCODE_QUE
-global REC_MIXING_SOUND
-global REC_MISS_ENCODE
-global REC_KEYWORD
-global REC_KEYWORD_EVERY_SOME_DAYS
-global REC_FIN_DECODE
-global REC_FIN_LOCAL
-global REC_MISS_DECODE
-global REC_TS_DECODING
-REC_RESERVE="res"
-REC_FINAL_RESERVE="rec"
-REC_END="end"
-REC_ENCODE_GRID="grid"
-REC_ENCODE_LOCAL="local"
-REC_ENCODE_QUE="ts2avi"
-REC_MIXING_SOUND="mixsound"
-REC_MISS_ENCODE="miss"
-REC_KEYWORD="key"
-REC_KEYWORD_EVERY_SOME_DAYS="keyevery"
-REC_FIN_DECODE="tsfin"
-REC_FIN_LOCAL="fin_local"
-REC_MISS_DECODE="tsmiss"
-REC_TS_DECODING="tsdecoding"
-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()
-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):
-
-    """
-    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()
-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()
-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 typet=='key':
-            ret['deltatime']=deltatime
-        elif typet=='keyevery':
-            ret['deltatime']=deltatime
-            ret['deltaday']=deltaday
-        recdatum.append(ret)
-    db.commit()
-    db.close()
-    return recdatum
-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()
-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 typet=='key':
-            ret['deltatime']=deltatime
-        elif typet=='keyevery':
-            ret['deltatime']=deltatime
-            ret['deltaday']=deltaday
-        recdata.append(ret)
-    db.close()
-    return recdata
+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):
+    """
+    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