OSDN Git Service

add tsid channel information for complete BS support.
[rec10/rec10-git.git] / rec10 / trunk / src / dbMySQL.py
index de26606..cce2e86 100644 (file)
@@ -1,7 +1,7 @@
 #!/usr/bin/python
 # coding: UTF-8
 # Rec10 TS Recording Tools
-# Copyright (C) 2009-2011 Yukikaze
+# Copyright (C) 2009-2012 Yukikaze
 import MySQLdb
 import recdblist
 import warnings
@@ -24,7 +24,7 @@ class DB_MySQL:
         try:
             con = MySQLdb.connect(user=user, passwd=passwd)
             cur = con.cursor()
-            cur.execute('CREATE DATABASE ' + dbname + " DEFAULT CHARACTER SET utf8")
+            cur.execute('CREATE DATABASE ' + dbname + " DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;")
             cur.close()
             con.close()
         except Exception, inst:
@@ -72,6 +72,10 @@ class DB_MySQL:
         """
         con = MySQLdb.connect(db=self.dbname, host=self.dbhost, port=self.dbport, user=self.dbusr, passwd=self.dbpasswd, charset="utf8")
         cur = con.cursor()
+        try:
+            con.autocommit(1)
+        except:
+            ""
         cur.execute('set names utf8;')
         return [con, cur]
     def close_db(self, db):
@@ -93,10 +97,12 @@ class DB_MySQL:
             chtxt VARCHAR(20) PRIMARY KEY,\
             ch VARCHAR(20),\
             csch VARCHAR(20),\
+            tsid VARCHAR(20),\
             chname VARCHAR(100),\
             updatetime DATETIME,\
             status TINYINT,\
             visible TINYINT DEFAULT 1,\
+            logo0 BLOB,\
             logo1 BLOB,\
             logo2 BLOB,\
             logo3 BLOB,\
@@ -111,12 +117,12 @@ class DB_MySQL:
                 recdblist.addCommonlogEX("Error", "new_epg_ch (dbMySQL.py)", str(type(inst)),str(inst)+traceback.format_exc(),log_level=200)
 
         self.close_db(db)
-    def add_epg_ch(self, bctype, chtxt, ch, csch, updatetime,logoupdate,scanupdate):
+    def add_epg_ch(self, bctype, chtxt, ch, csch,tsid,updatetime,logoupdate,scanupdate):
         db = self.connect_db()
         db[1].execute('\
-        INSERT INTO epg_ch (bctype,chtxt,ch,csch,chname,updatetime,status,visible,logoupdate,scanupdate)\
-        VALUES (%s,%s,%s,%s,"",%s,%s,%s,%s,%s)', \
-                      (bctype, chtxt, ch, csch, updatetime, "1","1",logoupdate,scanupdate))
+        INSERT INTO epg_ch (bctype,chtxt,ch,csch,tsid,chname,updatetime,status,visible,logoupdate,scanupdate)\
+        VALUES (%s,%s,%s,%s,%s,"",%s,%s,%s,%s,%s)', \
+                      (bctype, chtxt, ch, csch,tsid,updatetime, "1","1",logoupdate,scanupdate))
         self.close_db(db)
     def delete_all_epg_ch(self):
         db = self.connect_db()
@@ -126,7 +132,7 @@ class DB_MySQL:
     def select_by_chtxt_epg_ch(self, chtxt):
         db = self.connect_db()
         dbexe = db[1].execute("\
-        SELECT bctype,chtxt,ch,csch,updatetime,chname,status,visible,logoupdate,scanupdate \
+        SELECT bctype,chtxt,ch,csch,tsid,updatetime,chname,status,visible,logoupdate,scanupdate \
         FROM epg_ch \
         WHERE chtxt LIKE %s", \
                               (chtxt,))
@@ -137,15 +143,18 @@ class DB_MySQL:
         self.close_db(db)
         for dl in dls:
             r = list(dl)
-            r[4] = r[4].strftime("%Y-%m-%d %H:%M:%S")
-            r[8] = r[8].strftime("%Y-%m-%d %H:%M:%S")
-            r[9] = r[9].strftime("%Y-%m-%d %H:%M:%S")
+            r[5] = r[5].strftime("%Y-%m-%d %H:%M:%S")
+            if r[9]!=None:
+                r[9] = r[9].strftime("%Y-%m-%d %H:%M:%S")
+            else:
+                r[9]="2012-04-01 00:00:00"
+            r[10] = r[10].strftime("%Y-%m-%d %H:%M:%S")
             ret.append(r)
         return ret
     def select_by_bctype_epg_ch(self, bctype):
         db = self.connect_db()
         dbexe = db[1].execute("\
-        SELECT bctype,chtxt,ch,csch,updatetime,status,chname,status,visible,logoupdate,scanupdate \
+        SELECT bctype,chtxt,ch,csch,tsid,updatetime,status,chname,status,visible,logoupdate,scanupdate \
         FROM epg_ch \
         WHERE bctype = %s", \
                               (bctype,))
@@ -157,17 +166,22 @@ class DB_MySQL:
         for dl in dls:
             #recdblist.printutf8(dl)
             r = list(dl)
-            r[4] = r[4].strftime("%Y-%m-%d %H:%M:%S")
-            r[9] = r[9].strftime("%Y-%m-%d %H:%M:%S")
-            r[10] = r[10].strftime("%Y-%m-%d %H:%M:%S")
-            r[5] = str(r[5])
+            r[5] = r[5].strftime("%Y-%m-%d %H:%M:%S")
+            if r[10]!=None:
+                r[10] = r[10].strftime("%Y-%m-%d %H:%M:%S")
+            else:
+                r[10]="2011-04-01 00:00:00"
+            r[11] = r[11].strftime("%Y-%m-%d %H:%M:%S")
+            r[6] = str(r[6])
             ret.append(r)
+        import random
+        ret.insert(0,ret[random.randint(0,len(ret)-1)])
         return ret
     def select_by_ch_epg_ch(self, ch):
         db = self.connect_db()
         dbexe = db[1].execute("\
         SELECT \
-        bctype,chtxt,ch,csch,updatetime,chname,status,visible,logoupdate,scanupdate \
+        bctype,chtxt,ch,csch,tsid,updatetime,chname,status,visible,logoupdate,scanupdate \
         FROM epg_ch \
         WHERE ch = %s", \
                               (ch,))
@@ -178,16 +192,16 @@ class DB_MySQL:
         self.close_db(db)
         for dl in dls:
             r = list(dl)
-            r[4] = r[4].strftime("%Y-%m-%d %H:%M:%S")
-            r[8] = r[8].strftime("%Y-%m-%d %H:%M:%S")
+            r[5] = r[5].strftime("%Y-%m-%d %H:%M:%S")
             r[9] = r[9].strftime("%Y-%m-%d %H:%M:%S")
+            r[10] = r[10].strftime("%Y-%m-%d %H:%M:%S")
             ret.append(r)
         return ret
     def select_by_csch_epg_ch(self, csch):
         db = self.connect_db()
         dbexe = db[1].execute("\
         SELECT \
-        bctype,chtxt,ch,csch,updatetime,chname,status,visible,logoupdate,scanupdate \
+        bctype,chtxt,ch,csch,tsid,updatetime,chname,status,visible,logoupdate,scanupdate \
         FROM epg_ch \
         WHERE csch = %s", \
                               (csch,))
@@ -198,15 +212,15 @@ class DB_MySQL:
         self.close_db(db)
         for dl in dls:
             r = list(dl)
-            r[4] = r[4].strftime("%Y-%m-%d %H:%M:%S")
-            r[8] = r[8].strftime("%Y-%m-%d %H:%M:%S")
+            r[5] = r[5].strftime("%Y-%m-%d %H:%M:%S")
             r[9] = r[9].strftime("%Y-%m-%d %H:%M:%S")
+            r[10] = r[10].strftime("%Y-%m-%d %H:%M:%S")
             ret.append(r)
         return ret
     def select_all_epg_ch(self):
         db = self.connect_db()
         dbexe = db[1].execute("\
-        SELECT bctype,chtxt,ch,csch,updatetime,chname,status,visible,logoupdate,scanupdate \
+        SELECT bctype,chtxt,ch,csch,tsid,updatetime,chname,status,visible,logoupdate,scanupdate \
         FROM epg_ch \
         ")
         ret = []
@@ -216,9 +230,9 @@ class DB_MySQL:
         self.close_db(db)
         for dl in dls:
             r = list(dl)
-            r[4] = r[4].strftime("%Y-%m-%d %H:%M:%S")
-            r[8] = r[8].strftime("%Y-%m-%d %H:%M:%S")
+            r[5] = r[5].strftime("%Y-%m-%d %H:%M:%S")
             r[9] = r[9].strftime("%Y-%m-%d %H:%M:%S")
+            r[10] = r[10].strftime("%Y-%m-%d %H:%M:%S")
             ret.append(r)
         return ret
     def change_visible_epg_ch(self,chtxt,visible):
@@ -297,16 +311,13 @@ class DB_MySQL:
         status = 1\
         WHERE bctype = %s AND chtxt = %s", (bctype, chtxt))
         self.close_db(db)
-    def update_status_by_bctype_epg_ch(self, bctype, status):
+    def update_chname_by_chtxt_epg_ch(self,chtxt,chname):
         db = self.connect_db()
         db[1].execute("\
         UPDATE epg_ch \
         SET \
-        status=%s , \
-        updatetime=now() \
-        WHERE bctype = %s", \
-                      (status, bctype)\
-                      )
+        chname = %s \
+        WHERE chtxt = %s", (chname,chtxt))
         self.close_db(db)
     def update_status_by_bctype_epg_ch(self, bctype, status):
         db = self.connect_db()
@@ -924,21 +935,21 @@ vim         ")
             r = list(dl)
             ret=r[4]
         return ret
-    def change_installed_in_status(self):
+    def change_chscaned_in_status(self):
         """
         installedを設定する
         """
         db = self.connect_db()
         db[1].execute("\
-        UPDATE in_status SET installed=1")
+        UPDATE in_status SET installed=2")
         self.close_db(db)
-    def change_chscaned_in_status(self):
+    def change_installed_in_status(self,num=1):
         """
         installedを設定する
         """
         db = self.connect_db()
         db[1].execute("\
-        UPDATE in_status SET installed=2")
+        UPDATE in_status SET installed=%s",(num,))
         self.close_db(db)
     def new_epg_timeline(self, bctype):
         db = self.connect_db()
@@ -1266,9 +1277,9 @@ vim         ")
         self.change_version_in_status("98")
     def update_db_98to100(self):
         ###ここで前のepg_chをバックアップしてchtxtの変換をする必要がある。
-        db = self.connect_db()
         self.drop_in_settings()
         self.new_in_settings()
+        db = self.connect_db()
         db[1].execute("\
         UPDATE timeline INNER JOIN epg_ch ON timeline.chtxt=epg_ch.chtxt SET timeline.chtxt=CONCAT(CONCAT(epg_ch.ch,'_'),epg_ch.csch) WHERE NOT (substring(epg_ch.bctype,1,2) = 'bs' OR substring(epg_ch.bctype,1,2) = 'cs')")
         db[1].execute("\
@@ -1293,13 +1304,13 @@ vim         ")
         db[1].execute("\
         ALTER TABLE in_auto_jbk_key ADD opt VARCHAR(20) DEFAULT \"\"")
         self.close_db(db)
-        self.change_installed_in_status()#チャンネルスキャンをさせる
+        self.change_installed_in_status(1)#チャンネルスキャンをさせる
         self.change_version_in_status("100")
     def update_db_100to101(self):
-        db = self.connect_db()
         self.drop_in_settings()
         self.new_in_settings()
         self.new_epg_ch()
+        db = self.connect_db()
         try:
             db[1].execute("\
             ALTER TABLE timeline ADD epgcategory VARCHAR(100)\
@@ -1307,5 +1318,22 @@ vim         ")
         except:
             ""
         self.close_db(db)
+        self.change_installed_in_status(1)
+        self.change_version_in_status("101")
+        #self.change_installed_in_status()#チャンネルスキャンをさせる
+    def update_db_101to102(sekf):
+        self.drop_in_settings()
+        self.new_in_settings()
+        self.new_epg_ch()
+        db = self.connect_db()
+        try:
+            db[1].execute("\
+            ALTER TABLE epg_ch ADD tsid VARCHAR(20)\
+            ")
+        except:
+            ""
+        self.close_db(db)
+        self.change_installed_in_status(1)
+        self.change_version_in_status("102")
         #self.change_installed_in_status()#チャンネルスキャンをさせる
-        self.change_version_in_status("101")
\ No newline at end of file
+