def DownloadSubtitles(key, type): data = [] oc = ObjectContainer(no_cache=True, title2='Subtitles') video = XML.ElementFromURL(HOST + key).xpath('//Video')[0] if video: subs = OpenSubtitles(SETTINGS) token = subs.login(SETTINGS['username'], SETTINGS['password']) full_path = video.xpath('./Media/Part')[0].get('file') root, filename = os.path.split(full_path) filename = filename.split('.')[0] if type == 'show': title = video.get('grandparentTitle') season = video.get('parentIndex') episode = video.get('index') if title and season and episode: data = subs.search_subtitles([{'sublanguageid': SETTINGS['language'], 'query': title, 'season': season, 'episode': episode}]) else: title = video.get('title') if title: data = subs.search_subtitles([{'sublanguageid': SETTINGS['language'], 'query': title}]) subs.logout() for item in data: oc.add(DirectoryObject(key = Callback(WriteSubtitle, url=item['SubDownloadLink'], root=root, filename=filename), title = item['MovieReleaseName'] + ' (' + item['SubDownloadsCnt'] + ' downloads)')) return oc
def get_sentence(word, imdb_id): """ Получить предложение для слова Args: word (:obj:`str`): слово imdb_id (:obj:`int`): id фильма на сайте *imdb.com* Returns: sentence (:obj:`str`): предложение для слова """ OP = OpenSubtitles() logger.info("Getting sentence, OpenSubtitles token %s" % OP.login()) postgre = DataBase() sentence = postgre.GetSentence(word, imdb_id) if sentence: return sentence subtitle_id = postgre.GetSubtitleID(imdb_id) logger.info("subtitle id - %s" % subtitle_id) FileData = (OP.download_subtitles([subtitle_id])) sentence = search_sentence(FileData['data'][0]['data'], word) OP.logout() if sentence: postgre.AddSentence(word, imdb_id, sentence) return sentence else: return None
def SearchSubtitles(subtitles, auto=False): try: sortedList = [] update = False subs = OpenSubtitles(SETTINGS) token = subs.login(SETTINGS['username'], SETTINGS['password']) for item in subtitles: data = cleanedList = sortedList = [] if item['type'] == 'episode': data = subs.search_subtitles([{ 'sublanguageid': SETTINGS['language'], 'imdbid': item['id'], 'season': item['season'], 'episode': item['episode'] }]) else: data = subs.search_subtitles([{ 'sublanguageid': SETTINGS['language'], 'imdbid': item['id'] }]) if data != False: for video in data: if video['SubFormat'] == 'srt': cleanedList.append(video) sortedList = sorted(cleanedList, key=lambda k: int(k['SubDownloadsCnt']), reverse=True) if auto == True: update = True response = WriteSubtitle(sortedList[0]['SubDownloadLink'], item['root'], item['filename']) else: Log.Info('There are no subtites for ' + item['filename'] + ' at this time') subs.logout() if update: UpdateLibrary() except: Log.Exception('Error connecting to Opensubtitles.org') return sortedList
def SearchSubtitles(subtitles, auto=False): try: sortedList = [] update = False subs = OpenSubtitles({ 'opensubtitles_server' : 'http://api.opensubtitles.org/xml-rpc', 'user_agent' : 'plexapp.com v9.0', 'language' : Prefs['language'], 'username' : Prefs['username'], 'password' : Prefs['password'] }) token = subs.login(Prefs['username'], Prefs['password']) for item in subtitles: data = cleanedList = sortedList = [] if item['type'] == 'episode': data = subs.search_subtitles([{'sublanguageid': Prefs['language'], 'imdbid': item['id'], 'season': item['season'], 'episode': item['episode']}]) else: data = subs.search_subtitles([{'sublanguageid': Prefs['language'], 'imdbid': item['id']}]) if data != None and data != False: for video in data: if video['SubFormat'] == 'srt': cleanedList.append(video) sortedList = sorted(cleanedList, key=lambda k: int(k['SubDownloadsCnt']), reverse=True) if auto == True: update = True response = WriteSubtitle(sortedList[0]['SubDownloadLink'], item['root'], item['filename']) else: Log.Info('There are no subtites for ' + item['filename'] + ' at this time') subs.logout() if update: UpdateLibrary() except: Log.Exception('Error connecting to Opensubtitles.org') return sortedList