1- #hdbits.org
1+ # hdbits.org
22
33import string , os , urllib , zipfile , re , copy
44from babelfish import Language
77import logger
88
99OS_PLEX_USERAGENT = 'plexapp.com v9.0'
10- subtitleExt = ['utf' ,'utf8' ,'utf-8' ,'sub' ,'srt' ,'smi' ,'rt' ,'ssa' ,'aqt' ,'jss' ,'ass' ,'idx' ]
11-
12- langPrefs2Podnapisi = {'sq' :'29' ,'ar' :'12' ,'be' :'50' ,'bs' :'10' ,'bg' :'33' ,'ca' :'53' ,'zh' :'17' ,'cs' :'7' ,'da' :'24' ,'nl' :'23' ,'en' :'2' ,'et' :'20' ,'fi' :'31' ,'fr' :'8' ,'de' :'5' ,'el' :'16' ,'he' :'22' ,'hi' :'42' ,'hu' :'15' ,'is' :'6' ,'id' :'54' ,'it' :'9' ,'ja' :'11' ,'ko' :'4' ,'lv' :'21' ,'lt' :'19' ,'mk' :'35' ,'ms' :'55' ,'no' :'3' ,'pl' :'26' ,'pt' :'32' ,'ro' :'13' ,'ru' :'27' ,'sr' :'36' ,'sk' :'37' ,'sl' :'1' ,'es' :'28' ,'sv' :'25' ,'th' :'44' ,'tr' :'30' ,'uk' :'46' ,'vi' :'51' ,'hr' :'38' }
13-
14- mediaCopies = {}
1510
1611DEPENDENCY_MODULE_NAMES = ['subliminal' , 'enzyme' , 'guessit' , 'requests' ]
1712
13+ SUPPORTED_PROVIDERS = ['opensubtitles' , 'thesubdb' , 'podnapisi' , 'addic7ed' , 'tvsubtitles' ]
14+
15+ ENABLED_PROVIDERS = {'opensubtitles' : Prefs ['provider.opensubtitles' ],
16+ 'thesubdb' : Prefs ['provider.thesubdb' ],
17+ 'podnapisi' : Prefs ['provider.podnapisi' ],
18+ 'addic7ed' : Prefs ['provider.addic7ed' ],
19+ 'tvsubtitles' : Prefs ['provider.tvsubtitles' ]
20+ }
21+ # dict((key,value) for key, value in a.iteritems() if key == 1)
22+ SUPPORTED_PROVIDER_SETTINGS = {'addic7ed' : {
23+ 'username' : Prefs ['provider.addic7ed.username' ],
24+ 'password' : Prefs ['provider.addic7ed.password' ]
25+ }
26+ }
27+
1828def Start ():
1929 HTTP .CacheTime = 0
2030 HTTP .Headers ['User-agent' ] = OS_PLEX_USERAGENT
21- Log .Debug ("START CALLED" )
31+ Log .Debug ("START CALLED" )
2232 logger .registerLoggingHander (DEPENDENCY_MODULE_NAMES )
2333
2434def ValidatePrefs ():
2535 Log .Debug ("Validate Prefs called." )
2636 return
2737
28- #Prepare a list of languages we want subs for
38+ # Prepare a list of languages we want subs for
2939def getLangList ():
30- langList = [ Prefs ["langPref1" ]]
40+ langList = { Language . fromietf ( Prefs ["langPref1" ])}
3141 if (Prefs ["langPref2" ] != "None" ):
32- langList .append (Prefs ["langPref2" ])
42+ langList .update ({Language .fromietf (Prefs ["langPref2" ])})
43+
3344 return langList
3445
35- class SubInfo ():
36- def __init__ (self , lang , url , sub , name ):
37- self .lang = lang
38- self .url = url
39- self .sub = sub
40- self .name = name
41- self .ext = string .split (self .name , '.' )[- 1 ]
46+ def getProviders ():
47+ enabledProviders = []
48+ for supportedProvider in SUPPORTED_PROVIDERS :
49+ if Prefs ["provider." + supportedProvider ]:
50+ Log .Debug ("Provider %s is enabled" % supportedProvider )
51+ enabledProviders .append (supportedProvider )
52+ return enabledProviders
53+
54+ def getProviderSettings ():
55+ return SUPPORTED_PROVIDER_SETTINGS
4256
4357class SubliminalSubtitlesAgentMovies (Agent .Movies ):
4458 name = 'Subliminal Movie Subtitles'
@@ -48,41 +62,51 @@ class SubliminalSubtitlesAgentMovies(Agent.Movies):
4862
4963 def search (self , results , media , lang ):
5064 Log .Debug ("MOVIE SEARCH CALLED" )
51-
65+ results .Append (MetadataSearchResult (id = 'null' , score = 100 ))
66+
5267
5368 def update (self , metadata , media , lang ):
5469 Log .Debug ("MOVIE UPDATE CALLED" )
55-
70+ for item in media .items :
71+ for part in item .parts :
72+ Log .Debug ("Append: %s" % part .file )
73+ try :
74+ scannedVideo = subliminal .video .scan_video (part .file , subtitles = True , embedded_subtitles = True )
75+ except ValueError :
76+ Log .Warn ("File could not be guessed by subliminal" )
77+ continue
78+
79+ videos .append (scannedVideo )
80+
81+ subtitles = subliminal .api .download_best_subtitles (videos , getLangList (), getProviders (), getProviderSettings ())
82+ subliminal .api .save_subtitles (subtitles )
5683
5784class SubliminalSubtitlesAgentTvShows (Agent .TV_Shows ):
5885
59- providers = ['opensubtitles' ]
6086 name = 'Subliminal TV Subtitles'
6187 languages = [Locale .Language .English ]
6288 primary_provider = False
6389 contributes_to = ['com.plexapp.agents.thetvdb' ]
6490
6591 def search (self , results , media , lang ):
6692 Log .Debug ("TV SEARCH CALLED" )
67- results .Append (MetadataSearchResult (id = 'null' , score = 100 ))
68-
93+ results .Append (MetadataSearchResult (id = 'null' , score = 100 ))
6994
7095 def update (self , metadata , media , lang ):
71- videos = []
96+ videos = []
7297 Log .Debug ("TvUpdate. Lang %s" % lang )
7398 for season in media .seasons :
7499 for episode in media .seasons [season ].episodes :
75100 for item in media .seasons [season ].episodes [episode ].items :
76101 for part in item .parts :
77102 Log .Debug ("Append: %s" % part .file )
78103 try :
79- scannedVideo = subliminal .video .scan_video (part .file )
104+ scannedVideo = subliminal .video .scan_video (part .file , subtitles = True , embedded_subtitles = True )
80105 except ValueError :
81106 Log .Warn ("File could not be guessed by subliminal" )
82107 continue
83108
84109 videos .append (scannedVideo )
85-
86- result = subliminal .api .list_subtitles (videos ,{Language ('eng' )}, self .providers )
87- Log .Debug (result )
88-
110+
111+ subtitles = subliminal .api .download_best_subtitles (videos , getLangList (), getProviders (), getProviderSettings ())
112+ subliminal .api .save_subtitles (subtitles )
0 commit comments