OSDN Git Service

new classify function added.
authorgn64_jp <gn64_jp@4e526526-5e11-4fc0-8910-f8fd03428081>
Tue, 15 Sep 2009 01:07:48 +0000 (01:07 +0000)
committergn64_jp <gn64_jp@4e526526-5e11-4fc0-8910-f8fd03428081>
Tue, 15 Sep 2009 01:07:48 +0000 (01:07 +0000)
git-svn-id: svn+ssh://svn.sourceforge.jp/svnroot/rec10@155 4e526526-5e11-4fc0-8910-f8fd03428081

rec10/trunk/src/classify.py [new file with mode: 0644]
rec10/trunk/src/n_gram.py
rec10/trunk/src/timerec.py
rec10/trunk/src/tv2avi.py

diff --git a/rec10/trunk/src/classify.py b/rec10/trunk/src/classify.py
new file mode 100644 (file)
index 0000000..4dd83da
--- /dev/null
@@ -0,0 +1,147 @@
+#!/usr/bin/python
+# coding: UTF-8
+# Rec10 TS Recording Tools
+# Copyright (C) 2009 Yukikaze
+
+__author__="yukikaze"
+__date__ ="$2009/09/14 17:38:25$"
+
+import glob
+import n_gram
+import os
+import os.path
+import time
+import optparse
+import sys
+
+import configreader
+recordedpath=configreader.getpath("recorded")
+recpath=configreader.getpath("recpath")
+def search_b25(path):
+    """
+    録画フォルダを検索し、各QUEの実行状況を表示する
+    """
+    b25list = glob.glob(path + "/*.b25")
+    for b25f in b25list:
+        ##b25f is title.ts.b25  avi is title.avi
+        dir = os.path.split(b25f)[0]
+        title = os.path.split(b25f)[1]
+        title = title.replace(".ts.b25", "")
+        avipath = os.path.join(dir, title + ".avi")
+        tspath = os.path.join(dir, title + ".ts")
+        b25f = b25f.replace(".ts.b25", ".avi")
+        mode = "ts"
+        if os.path.isfile(tspath):##tsファイルが存在している
+            dtime = time.time()-os.path.getmtime(tspath)
+            dtime = int(dtime)
+            if dtime > 120:
+                if os.path.getsize(tspath) > 1 * 1000 * 1000:##最終更新から22分以上経過かつ1MB以上
+                    mode = "avi"
+                else:
+                    mode = "tsmiss"
+            else:
+                mode = "ts"
+        if os.path.isfile(avipath):##tsファイルが存在している
+            dtime = time.time()-os.path.getmtime(avipath)
+            dtime = int(dtime)
+            if dtime > 120:
+                if os.path.getsize(avipath) > 1 * 1000 * 1000:##最終更新から22分以上経過かつ1MB以上
+                    mode = "fin"
+                else:
+                    mode = "avimiss"
+            else:
+                mode = "avi"
+        print title + ":" + mode
+def search_avi(temppath,recpath):
+    avilist = glob.glob(temppath + "/*.avi")
+    ret=[]
+    for avif in avilist:
+        ##b25f is title.ts.b25  avi is title.avi
+        dir = os.path.split(avif)[0]
+        title = os.path.split(avif)[1]
+        title = title.replace(".avi", "")
+        avipath = os.path.join(dir, title + ".avi")
+        tspath = os.path.join(dir, title + ".ts")
+        b25path = os.path.join(dir, title + ".ts.b25")
+        b25logpath = os.path.join(dir, title + ".ts.b25.log")
+        sapath = os.path.join(dir, title + ".sa.avi")
+        dtime = time.time()-os.path.getmtime(avipath)
+        dtime = int(dtime)
+        #print title+str(dtime)
+        if dtime > 300:
+            if veryfySize(avipath):
+                sf=searchFolder(title,recpath)
+                if sf!="":
+                    ret.append([title,sf])
+    return ret
+def veryfySize(path):
+    vsize=[297,596,458,916]
+    ret = 0
+    for size in vsize:
+        if os.path.getsize(path)>(size-5)*1024*1024 and os.path.getsize(path)<(size+5)*1024*1024:
+            ret=1
+    return ret
+def searchFolder(title,path):
+    folderpath=os.listdir(path)
+    lfpath=[]
+    ngram=[]
+    for ft in folderpath:
+        fullpath=os.path.join(path, ft)
+        if os.path.isdir(fullpath):
+            lfpath.append(fullpath)
+            ftt=os.listdir(fullpath)
+            if len(ftt)>0:
+                for ft2 in ftt:
+                    folderpath.append(os.path.join(fullpath, ft2))
+        else:
+            lfpath.append(fullpath)
+    for dirp in lfpath:
+        cmpp=""
+        appp=""
+        if os.path.isdir(dirp):
+            cmpp=os.path.dirname(dirp)
+            appp=dirp
+        else:
+            cmpp=os.path.basename(dirp)
+            appp=os.path.dirname(dirp)
+        p=n_gram.trigram(title.decode("utf-8"),cmpp.decode("utf-8"))
+        if p>0:
+            ngram.append((p,appp))
+    ngram=list(set(ngram))
+    ngram.sort()
+    ngram.reverse()
+    if len(ngram)>0:
+        if ngram[0][0]>400:
+            return ngram[0][1]
+        else:
+            return ""
+    else:
+        return ""
+def execMove(title,temppath,recpath):
+    ""
+def detName(title,temppath,recpath):
+    dstpath=os.path.join(recpath,title+".avi")
+    srcpath=os.path.join(temppath,title+".avi")
+    print srcpath
+    if os.path.exists(dstpath):
+        gmtime=time.gmtime(os.path.getmtime(srcpath))
+        times=time.strftime("%y%m%d",gmtime)
+        title=title+"_"+times
+    return title
+if __name__ == "__main__":
+    usage="usage: %prog [-l Title] [-a]"
+    version="%prog 0.7.0alpha"
+    parser=optparse.OptionParser(usage=usage,version=version)
+    parser.add_option("-s","--search",action="store",type="string",dest="ltitle",default="",metavar="TITLE",help="test to search where the title should be contained.")
+    parser.add_option("-a",action="store_true",dest="auto",default=False,help="auto disposing mode")
+    parser.add_option("-l","--list",action="store_true",dest="list",default=False,help="File listing mode")
+    (opts,args)=parser.parse_args(sys.argv)
+    if opts.ltitle!="":
+        searchFolder(opts.ltitle, "/home/ftpusr/ftp4/録画終了/")
+    if opts.auto:
+        ""
+    if opts.list:
+        sa=search_avi(recpath, recordedpath)
+        for s in sa:
+            print s[0]+" : "+os.path.join(s[1], detName(s[0], recpath,s[1])+".avi")
+    
\ No newline at end of file
index fe88532..89e5aab 100644 (file)
@@ -29,6 +29,33 @@ def bigram(str1, str2):
             i = 0
         point = point + i
     return point
+def trigram(str1, str2):
+    str1 = zenhan.toHankaku(str1)
+    str2 = zenhan.toHankaku(str2)
+    str1 = str1.replace(" ", "")
+    str2 = str2.replace(" ", "")
+    """
+    trigramによる単語の近さを計算します。
+    """
+    gram = []
+    if len(str1) < 3:
+        gram.append(str1)
+    else:
+        tmp1 = str1[0]
+        tmp2 = str1[1]
+        for x in str1[2:]:
+            gram.append(tmp1 + tmp2 + x)
+            tmp1 = tmp2
+            tmp2 = x
+    point = 0
+    for x in gram:
+        i = find_gram(x, str2)
+        if i > 0:
+            i = 90 + 10 * i
+        else:
+            i = 0
+        point = point + i
+    return point
 def find_gram(gram, s):
     """
     s中にあらわれるgramの数を調べる
index 41627e9..d024494 100644 (file)
@@ -238,13 +238,15 @@ def task():
                     if pid > 0:#親プロセスの場合
                         ""
                     else:
+                        print opt
                         pin = recpath + "/" + title + ".ts"
                         if re.search("d", opt):
-                            pin = recpath + "/" + title + "sa.avi"
+                            pin = recpath + "/" + title + ".sa.avi"
                         if re.search("5", opt):
-                            pin = recpath + "/" + title + "sa.avi"
+                            pin = recpath + "/" + title + ".sa.avi"
                         pout = recpath + "/" + title + ".avi"
                         print [pin, pout, opt]
+                        print pin
                         #print pin+":"+pout+":"+opt
                         recdb.del_reckey(recdb.REC_ENCODE_QUE, title, chtxt, btime)
                         recdb.rec_reckey(recdb.REC_ENCODE_LOCAL, title, chtxt, btime, etime, opt)
index bb705db..d3f927e 100644 (file)
@@ -77,11 +77,11 @@ def b252ts(pout, chtxt, btime, etime, opt):
         else:
             opts = opt
         if dualaudio == 1:
-            dualaudiots2avi(aviin, tsout + "sa.avi")
-            aviin = tsout + "sa.avi"
+            dualaudiots2avi(aviin, tsout + ".sa.avi")
+            aviin = tsout + ".sa.avi"
         if pentaaudio == 1:
-            dualaudiots2avi(aviin, tsout + "sa.avi")
-            aviin = tsout + "sa.avi"
+            dualaudiots2avi(aviin, tsout + ".sa.avi")
+            aviin = tsout + ".sa.avi"
     except:
         ""
     #status.setB25Decoding(status.getB25Decoding()-1)
@@ -129,11 +129,11 @@ def timetv2avi(pout, chtxt, btime, etime, opt):
     else:
         opts = opt
     if dualaudio == 1:
-        dualaudiots2avi(aviin, tsout + "sa.avi")
-        aviin = tsout + "sa.avi"
+        dualaudiots2avi(aviin, tsout + ".sa.avi")
+        aviin = tsout + ".sa.avi"
     if pentaaudio == 1:
-        dualaudiots2avi(aviin, tsout + "sa.avi")
-        aviin = tsout + "sa.avi"
+        dualaudiots2avi(aviin, tsout + ".sa.avi")
+        aviin = tsout + ".sa.avi"
 def ts2avi(pin, pout, opt):
     status.changeEncoding(1)
     #status.setEncoding(status.getEncoding() + 1)
@@ -183,11 +183,11 @@ def tv2avi(pout, chtxt, btime, etime, opt):
     else:
         opts = opts + "Ha2"
     if dualaudio == 1:
-        dualaudiots2avi(aviin, tsout + "sa.avi")
-        aviin = tsout + "sa.avi"
+        dualaudiots2avi(aviin, tsout + ".sa.avi")
+        aviin = tsout + ".sa.avi"
     if pentaaudio == 1:
-        dualaudiots2avi(aviin, tsout + "sa.avi")
-        aviin = tsout + "sa.avi"
+        dualaudiots2avi(aviin, tsout + ".sa.avi")
+        aviin = tsout + ".sa.avi"
     ts2x264.ts2x264(aviin, pout, opts)
     #os.remove(aviin)
 def b252avi(pout, chtxt, opt):
@@ -226,11 +226,11 @@ def b252avi(pout, chtxt, opt):
     else:
         makexvid = 1
     if dualaudio == 1:
-        dualaudiots2avi(aviin, tsout + "sa.avi")
-        aviin = tsout + "sa.avi"
+        dualaudiots2avi(aviin, tsout + ".sa.avi")
+        aviin = tsout + ".sa.avi"
     if pentaaudio == 1:
-        dualaudiots2avi(aviin, tsout + "sa.avi")
-        aviin = tsout + "sa.avi"
+        dualaudiots2avi(aviin, tsout + ".sa.avi")
+        aviin = tsout + ".sa.avi"
     if makexvid == 1:
         ts2xvid.ts2xvid(aviin, pout, opts)
     else: