You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
86 lines
2.9 KiB
86 lines
2.9 KiB
import traceback
|
|
|
|
from couchpotato.core.event import addEvent
|
|
from couchpotato.core.helpers.encoding import toUnicode, sp
|
|
from couchpotato.core.helpers.variable import splitString
|
|
from couchpotato.core.logger import CPLog
|
|
from couchpotato.core.plugins.base import Plugin
|
|
from couchpotato.environment import Env
|
|
import subliminal
|
|
|
|
|
|
log = CPLog(__name__)
|
|
|
|
autoload = 'Subtitle'
|
|
|
|
|
|
class Subtitle(Plugin):
|
|
|
|
services = ['opensubtitles', 'thesubdb', 'subswiki', 'subscenter']
|
|
|
|
def __init__(self):
|
|
addEvent('renamer.before', self.searchSingle)
|
|
|
|
def searchSingle(self, group):
|
|
if self.isDisabled(): return
|
|
|
|
try:
|
|
available_languages = sum(group['subtitle_language'].values(), [])
|
|
downloaded = []
|
|
files = [toUnicode(x) for x in group['files']['movie']]
|
|
log.debug('Searching for subtitles for: %s', files)
|
|
|
|
for lang in self.getLanguages():
|
|
if lang not in available_languages:
|
|
download = subliminal.download_subtitles(files, multi = True, force = self.conf('force'), languages = [lang], services = self.services, cache_dir = Env.get('cache_dir'))
|
|
for subtitle in download:
|
|
downloaded.extend(download[subtitle])
|
|
|
|
for d_sub in downloaded:
|
|
log.info('Found subtitle (%s): %s', (d_sub.language.alpha2, files))
|
|
group['files']['subtitle'].append(sp(d_sub.path))
|
|
group['before_rename'].append(sp(d_sub.path))
|
|
group['subtitle_language'][sp(d_sub.path)] = [d_sub.language.alpha2]
|
|
|
|
return True
|
|
|
|
except:
|
|
log.error('Failed searching for subtitle: %s', (traceback.format_exc()))
|
|
|
|
return False
|
|
|
|
def getLanguages(self):
|
|
return splitString(self.conf('languages'))
|
|
|
|
|
|
config = [{
|
|
'name': 'subtitle',
|
|
'groups': [
|
|
{
|
|
'tab': 'renamer',
|
|
'name': 'subtitle',
|
|
'label': 'Download subtitles',
|
|
'description': 'after rename',
|
|
'options': [
|
|
{
|
|
'name': 'enabled',
|
|
'label': 'Search and download subtitles',
|
|
'default': False,
|
|
'type': 'enabler',
|
|
},
|
|
{
|
|
'name': 'languages',
|
|
'description': ('Comma separated, 2 letter country code.', 'Example: en, nl. See the codes at <a href="http://en.wikipedia.org/wiki/List_of_ISO_639-1_codes" target="_blank">on Wikipedia</a>'),
|
|
},
|
|
{
|
|
'advanced': True,
|
|
'name': 'force',
|
|
'label': 'Force',
|
|
'description': ('Force download all languages (including embedded).', 'This will also <strong>overwrite</strong> all existing subtitles.'),
|
|
'default': False,
|
|
'type': 'bool',
|
|
},
|
|
],
|
|
},
|
|
],
|
|
}]
|
|
|