OSDN Git Service

fix auto suggest.
[rec10/rec10-git.git] / rec10 / trunk / src / dbMySQL.py
index e027342..5c4e7c3 100644 (file)
@@ -1,7 +1,7 @@
 #!/usr/bin/python
 # coding: UTF-8
 # Rec10 TS Recording Tools
-# Copyright (C) 2009 Yukikaze
+# Copyright (C) 2009-2010 Yukikaze
 import MySQLdb
 import recdblist
 from decimal import Decimal
@@ -49,9 +49,9 @@ class DB_MySQL:
         self.new_in_auto_bayes_key()
         self.new_in_auto_jbk_key()
         self.new_in_status()
+        self.new_in_settings()
         self.new_auto_timeline_bayes()
         self.new_auto_timeline_keyword()
-        self.new_auto_proc_tmp()
     def connect_db(self):
         """
         dbへの接続
@@ -276,9 +276,7 @@ class DB_MySQL:
     def update_auto_proc(self):
         db = self.connect_db()
         try:
-            db[1].execute('\
-            INSERT INTO auto_proc SELECT * FROM auto_proc_tmp\
-            )')
+            db[1].execute('INSERT INTO auto_proc SELECT * FROM auto_proc_tmp')
         except:
             ""
         self.close_db(db)
@@ -300,6 +298,55 @@ class DB_MySQL:
         except:
             ""
         self.close_db(db)
+    def add_auto_proc(self,type,title,chtxt):
+        db = self.connect_db()
+        db[1].execute('\
+        INSERT IGNORE into auto_proc \
+        (type,title,chtxt) \
+        values (%s,%s,%s)',(type,title,chtxt))
+        ##db.commit()
+        self.close_db(db)
+    def drop_in_settings(self):
+        db = self.connect_db()
+        try:
+            db[1].execute('drop table in_settings')
+        except:
+            ""
+        self.close_db(db)
+    def new_in_settings(self):
+        db = self.connect_db()
+        try:
+            db[1].execute('\
+            CREATE TABLE in_settings \
+            (\
+            auto_jbk TINYINT,\
+            auto_bayes TINYINT,\
+            auto_opt VARCHAR(20),\
+            auto_del_tmp TINYINT\
+            )')
+            db[1].execute("INSERT IGNORE into in_settings VALUE (0,0,\"G\",1)")
+        except:
+            ""
+        self.close_db(db)
+    def select_all_in_settings(self):
+        db = self.connect_db()
+        dbexe = db[1].execute("\
+        SELECT auto_jbk,auto_bayes,auto_del_tmp,auto_opt \
+        FROM in_settings \
+        ")
+        ret = []
+        dls = []
+        if dbexe > 0:
+            dls = db[1].fetchall()
+        self.close_db(db)
+        for dl in dls:
+            r = list(dl)
+            r[0]=str(r[0])
+            r[1]=str(r[1])
+            r[2]=str(r[2])
+            r[3]=r[3]
+            ret.append(r)
+        return ret
     def add_in_timeline_log(self , chtxt="", title="", btime="", etime="", opt="", exp="", longexp="", category=""):
         db = self.connect_db()
         db[1].execute('\
@@ -442,7 +489,97 @@ class DB_MySQL:
                     ret['deltaday'] = deltaday
                 recdatum.append(ret)
         return recdatum
-    def select_bytime_all_timeline(self,btime,etime,chtxt):
+    def select_by_name_time_timeline(self,title,btime,btime2):
+        db = self.connect_db()
+        recdatum = []
+        #dbr=db[1].execute("SELECT type, chtxt, title, btime, etime, deltatime ,deltaday ,opt FROM rectime WHERE btime < DATE_SUB(now(),INTERVAL "+dminutes+" MINUTE ) AND btime > DATE_ADD(now(),INTERVAL "+dminutes+" MINUTE )")
+        dbr = db[1].execute("SELECT \
+        type, chtxt, title, btime, etime, deltatime ,deltaday ,opt \
+        FROM timeline \
+        WHERE btime > %s AND \
+        btime < %s AND title = %s",(btime,btime2,title))
+        dbl = db[1].fetchall()
+        self.close_db(db)
+        #recdblist.printutf8(dbl)
+        if dbr > 0:
+            for typet, chtxt, title, btime, etime, deltatime, deltaday, opt in dbl:
+                ret = {}
+                ret['type'] = typet
+                ret['chtxt'] = chtxt
+                ret['title'] = title
+                btime = btime.strftime("%Y-%m-%d %H:%M:%S")
+                etime = etime.strftime("%Y-%m-%d %H:%M:%S")
+                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 == recdblist.REC_KEYWORD:
+                    ret['deltatime'] = deltatime
+                elif typet == recdblist.REC_KEYWORD_EVERY_SOME_DAYS:
+                    ret['deltatime'] = deltatime
+                    ret['deltaday'] = deltaday
+                recdatum.append(ret)
+        return recdatum
+    def select_bytime_all_timeline(self,btime,etime):
+        db = self.connect_db()
+        recdatum = []
+        #dbr=db[1].execute("SELECT type, chtxt, title, btime, etime, deltatime ,deltaday ,opt FROM rectime WHERE btime < DATE_SUB(now(),INTERVAL "+dminutes+" MINUTE ) AND btime > DATE_ADD(now(),INTERVAL "+dminutes+" MINUTE )")
+        dbr = db[1].execute("SELECT \
+        type, chtxt, title, btime, etime, deltatime ,deltaday ,opt \
+        FROM timeline \
+        WHERE btime > %s AND \
+        etime < %s",(btime,etime))
+        dbl = db[1].fetchall()
+        self.close_db(db)
+        #recdblist.printutf8(dbl)
+        if dbr > 0:
+            for typet, chtxt, title, btime, etime, deltatime, deltaday, opt in dbl:
+                ret = {}
+                ret['type'] = typet
+                ret['chtxt'] = chtxt
+                ret['title'] = title
+                btime = btime.strftime("%Y-%m-%d %H:%M:%S")
+                etime = etime.strftime("%Y-%m-%d %H:%M:%S")
+                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 == recdblist.REC_KEYWORD:
+                    ret['deltatime'] = deltatime
+                elif typet == recdblist.REC_KEYWORD_EVERY_SOME_DAYS:
+                    ret['deltatime'] = deltatime
+                    ret['deltaday'] = deltaday
+                recdatum.append(ret)
+        return recdatum
+    def count_schedule_timeline(self, btime, etime):
+        """
+        count rectasknum
+        return [te num,bs/cs num]
+        """
+        db = self.connect_db()
+        dbexe = "SELECT type,epg_ch.bctype,timeline.chtxt,title FROM timeline INNER JOIN epg_ch ON timeline.chtxt=epg_ch.chtxt"
+        dbexe = dbexe + " WHERE ((NOT(( timeline.etime <= %s )OR( timeline.btime >= %s ))) OR ((timeline.btime = %s) AND (timeline.etime = %s) ) )"
+        Srec = 0
+        Trec = 0
+        db[1].execute(dbexe, (btime, etime,btime,etime))
+        dbl=db[1].fetchall()
+        for typet, bctypet, chtxtt, titlet in dbl:
+            if (typet == recdblist.REC_RESERVE) or (typet == recdblist.REC_FINAL_RESERVE) or (typet == recdblist.REC_KEYWORD) or (typet == recdblist.REC_KEYWORD_EVERY_SOME_DAYS):
+                if bctypet.find("cs") > -1:
+                    Srec = Srec + 1
+                elif bctypet.find("bs") > -1:
+                    Srec = Srec + 1
+                elif bctypet.find("te") > -1:
+                    Trec = Trec + 1
+        self.close_db(db)
+        return [Trec, Srec]
+    def select_bytime_bychtxt_all_timeline(self,btime,etime,chtxt):
         db = self.connect_db()
         recdatum = []
         #dbr=db[1].execute("SELECT type, chtxt, title, btime, etime, deltatime ,deltaday ,opt FROM rectime WHERE btime < DATE_SUB(now(),INTERVAL "+dminutes+" MINUTE ) AND btime > DATE_ADD(now(),INTERVAL "+dminutes+" MINUTE )")
@@ -518,6 +655,13 @@ class DB_MySQL:
             ret = db[1].fetchall()
         self.close_db(db)
         return ret
+    def drop_in_status(self):
+        db = self.connect_db()
+        try:
+            db[1].execute('drop table in_status')
+        except:
+            ""
+        self.close_db(db)
     def new_in_status(self):
         db = self.connect_db()
         try: