OSDN Git Service

begin to implement guess function.
authorgn64_jp <gn64_jp@4e526526-5e11-4fc0-8910-f8fd03428081>
Sat, 17 Oct 2009 02:08:23 +0000 (02:08 +0000)
committergn64_jp <gn64_jp@4e526526-5e11-4fc0-8910-f8fd03428081>
Sat, 17 Oct 2009 02:08:23 +0000 (02:08 +0000)
git-svn-id: svn+ssh://svn.sourceforge.jp/svnroot/rec10@180 4e526526-5e11-4fc0-8910-f8fd03428081

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

index 5a044fd..0ab674c 100644 (file)
@@ -145,12 +145,16 @@ def searchFolder(title,path):
         return ""
 def execMove(title,temppath,recpath):
     srcpath=os.path.join(temppath,title+".mkv")
-    desttitle=destName(title, temppath, recpath)
+    #desttitle=destName(title, temppath, recpath)
+    
     sf=searchFolder(title, recpath)
     if sf!="":
-        destpath=os.path.join(sf,desttitle+".mkv")
+        destpath=os.path.join(sf,destNameMKV(title, temppath, sf)+".mkv")
+        #os.path.join(sf,desttitle+".mkv")
         #print srcpath
         #print destpath
+        print "moving now.."
+        print srcpath+" : "+destpath
         shutil.move(srcpath, destpath)
         #shutil.copy(srcpath, destpath)
         delpath=[os.path.join(temppath,title+".ts")]
diff --git a/rec10/trunk/src/guess.py b/rec10/trunk/src/guess.py
new file mode 100644 (file)
index 0000000..370eafa
--- /dev/null
@@ -0,0 +1,132 @@
+import time
+import os.path
+#!/usr/bin/python
+# coding: UTF-8
+# Rec10 TS Recording Tools
+# Copyright (C) 2009 Yukikaze
+
+import os
+import re
+
+import n_gram
+
+def detName(title,path):
+    tt=detNameType(title, path)
+    if tt['type']=="C"or tt['type']=="D":
+        tt['num']=detNum(tt['title'],tt['folder'])
+def detNum(title,movepath):
+    """
+        typeC or typeD
+        #
+    """
+    files=os.listdir(movepath)
+    ff=[]
+    for file in files:
+        if os.path.isfile(file):
+            name=os.path.splitext(os.path.split(file)[1])
+            p1=detNameType(name,movepath)
+            print p1['title']+" "+str(p1['num'])
+            time1=time.localtime(os.path.getmtime(file))
+            ff.append([p1['num'],p1['title'],time1])
+def detNameType(title,path):
+    """
+    type A ---title#<number>
+    type B ---title#<number>subtitle
+    type C ---title subtitle
+    type D ---title(without number)
+    path --search reflexively
+    """
+    #print title
+    #rA=re.compile(".+(?P<title>)#\d(?P<num>)\s[0,10]\z")
+    rA=re.compile("(.+)#(\d*)\s*\Z")
+    tA=rA.match(title)
+    rB=re.compile("(.+)#(\d*)\s*(\D*)")
+    tB=rB.match(title)
+    ret={'title':"",'type':"",'num':0,'subtitle':"",'folder':""}
+    if tA:
+        print "typeA"
+        print "title="+tA.group(1)
+        print "num="+tA.group(2)
+        ret['type']="A"
+        ret['title']=tA.group(1)
+        ret['num']=int(tA.group(2))
+        ret['folder']=searchFolder(tA.group(1),path)
+    elif tB:
+        print "typeB"
+        print "title="+tB.group(1)
+        print "num="+tB.group(2)
+        print "subtitle="+tB.group(3)
+        ret['type']="B"
+        ret['title']=tB.group(1)
+        ret['num']=int(tB.group(2))
+        ret['folder']=searchFolder(tB.group(1),path)
+        ret['subtitle']=tB.group(3)
+    else:#type C or type D
+        #fold=searchFolder(title, path)
+        ts=title.split(" ")
+        tt=""
+        rt=["",0,""]
+        for t in ts:
+            tt=tt+" "+t
+            ft1=searchFolder(tt,path)
+            print tt
+            print ft1
+            if ft1!="":
+                #print rt
+                #print ft1[0]+" : "+str(ft1[1])
+                if ft1[1]>rt[1]:
+                    rt[0]=tt
+                    rt[1]=ft1[1]
+                    rt[2]=ft1[0]
+                    #print rt
+        #print "title="+rt[0][1:]+"/"
+        #print "subtitle = "+title.replace(rt[0][1:],"")[1:]
+        ret['title']=rt[0][1:]
+        ret['num']=""
+        ret['folder']=rt[2]
+        ret['subtitle']=title.replace(rt[0][1:],"")[1:]
+        if ret['subtitle'].replace(" ","")=="":
+            ret['type']="D"
+        else:
+            ret['type']="C"
+    return ret
+def searchFolder(title,path):
+    """
+    titleにマッチするフォルダを探し出す。
+    """
+    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:
+        #print title + ngram[0][1] + " : "+str(ngram[0][0])
+        if ngram[0][0]>300:
+            return [ngram[0][1],ngram[0][0]]
+        else:
+            return ""
+    else:
+        return ""
\ No newline at end of file
index bfc72ee..6564813 100644 (file)
@@ -57,7 +57,7 @@ def trigram(str1, str2):
         else:
             i = 0
         point = point + i
-    point =point + 20*count*count
+    point = point + 20*count*count
     point = point / len(str1) * 10
     point = point / len(str2) * 10
     return point
index 2d73f02..b6c26c2 100644 (file)
@@ -19,11 +19,13 @@ import recdb
 from ts2x264 import ts2x264
 import tv2avi
 import xml2db
+import guess
 __author__ = "yukikaze"
 __date__ = "$2009/08/01 22:25:13$"
 path = str(os.path.dirname(os.path.abspath(__file__))) + "/"
 recpath = "/home/ftpusr/ftp-tmp/Recording/"
 ftpusr = "/home/ftpusr/ftp-tmp"
+recordedpath = "/home/ftpusr/ftp5/Series-Finish/"
 dualtest = ftpusr + "/Encode-Test/DualAudioTest"
 if __name__ == "__main__":
     #d=time.time()#
@@ -53,4 +55,5 @@ if __name__ == "__main__":
     #xml2db.xml2db("te18.xml", "te20")
     #classify.detNameType("te#st#25")
     #classify.detNameType("te#st#32 subtest")
+    guess.detNameType("",recordedpath)
     ""
\ No newline at end of file