def store_subtitle_info(scanned_video_part_map, downloaded_subtitles, storage_type, mode="a"): """ stores information about downloaded subtitles in plex's Dict() """ for video, video_subtitles in downloaded_subtitles.items(): part = scanned_video_part_map[video] part_id = str(part.id) video_id = str(video.id) plex_item = get_item(video_id) metadata = video.plexapi_metadata title = get_title_for_video_metadata(metadata) subtitle_storage = get_subtitle_storage() stored_subs = subtitle_storage.load_or_new(plex_item) for subtitle in video_subtitles: lang = str(subtitle.language) subtitle.normalize() Log.Debug(u"Adding subtitle to storage: %s, %s, %s, %s, %s" % (video_id, part_id, lang, title, subtitle.guess_encoding())) ret_val = stored_subs.add(part_id, lang, subtitle, storage_type, mode=mode) if ret_val: Log.Debug("Subtitle stored") else: Log.Debug("Subtitle already existing in storage") Log.Debug("Saving subtitle storage for %s" % video_id) subtitle_storage.save(stored_subs) subtitle_storage.destroy()
def store_subtitle_info(scanned_video_part_map, downloaded_subtitles, storage_type, mode="a", set_current=True): """ stores information about downloaded subtitles in plex's Dict() """ subtitle_storage = get_subtitle_storage() for video, video_subtitles in downloaded_subtitles.items(): part = scanned_video_part_map[video] part_id = str(part.id) video_id = str(video.id) plex_item = get_item(video_id) if not plex_item: Log.Warn("Plex item not found: %s", video_id) continue metadata = video.plexapi_metadata title = get_title_for_video_metadata(metadata) stored_subs = subtitle_storage.load(video_id) is_new = False if not stored_subs: is_new = True Log.Debug(u"Creating new subtitle storage: %s, %s", video_id, part_id) stored_subs = subtitle_storage.new(plex_item) for subtitle in video_subtitles: lang = str(subtitle.language) subtitle.normalize() Log.Debug( u"Adding subtitle to storage: %s, %s, %s, %s, %s" % (video_id, part_id, lang, title, subtitle.guess_encoding())) last_mod = None if subtitle.storage_path: last_mod = datetime.datetime.fromtimestamp( os.path.getmtime(subtitle.storage_path)) ret_val = stored_subs.add(part_id, lang, subtitle, storage_type, mode=mode, last_mod=last_mod, set_current=set_current) if ret_val: Log.Debug("Subtitle stored") else: Log.Debug("Subtitle already existing in storage") if is_new or video_subtitles: Log.Debug("Saving subtitle storage for %s" % video_id) subtitle_storage.save(stored_subs) subtitle_storage.destroy()
def store_subtitle_info(scanned_video_part_map, downloaded_subtitles, storage_type, mode="a", set_current=True): """ stores information about downloaded subtitles in plex's Dict() """ subtitle_storage = get_subtitle_storage() for video, video_subtitles in downloaded_subtitles.items(): part = scanned_video_part_map[video] part_id = str(part.id) video_id = str(video.id) plex_item = get_item(video_id) if not plex_item: Log.Warn("Plex item not found: %s", video_id) continue metadata = video.plexapi_metadata title = get_title_for_video_metadata(metadata) stored_subs = subtitle_storage.load(video_id) is_new = False if not stored_subs: is_new = True Log.Debug(u"Creating new subtitle storage: %s, %s", video_id, part_id) stored_subs = subtitle_storage.new(plex_item) for subtitle in video_subtitles: lang = str(subtitle.language) subtitle.normalize() Log.Debug(u"Adding subtitle to storage: %s, %s, %s, %s, %s" % (video_id, part_id, lang, title, subtitle.guess_encoding())) last_mod = None if subtitle.storage_path: last_mod = datetime.datetime.fromtimestamp(os.path.getmtime(subtitle.storage_path)) ret_val = stored_subs.add(part_id, lang, subtitle, storage_type, mode=mode, last_mod=last_mod, set_current=set_current) if ret_val: Log.Debug("Subtitle stored") else: Log.Debug("Subtitle already existing in storage") if is_new or video_subtitles: Log.Debug("Saving subtitle storage for %s" % video_id) subtitle_storage.save(stored_subs) subtitle_storage.destroy()
def store_subtitle_info(scanned_video_part_map, downloaded_subtitles, storage_type, mode="a"): """ stores information about downloaded subtitles in plex's Dict() """ existing_parts = [] for video, video_subtitles in downloaded_subtitles.items(): part = scanned_video_part_map[video] part_id = str(part.id) video_id = str(video.id) plex_item = get_item(video_id) metadata = video.plexapi_metadata title = get_title_for_video_metadata(metadata) subtitle_storage = get_subtitle_storage() stored_subs = subtitle_storage.load_or_new(plex_item) existing_parts.append(part_id) stored_any = False for subtitle in video_subtitles: lang = Locale.Language.Match(subtitle.language.alpha2) Log.Debug(u"Adding subtitle to storage: %s, %s, %s" % (video_id, part_id, title)) ret_val = stored_subs.add(part_id, lang, subtitle, storage_type, mode=mode) if ret_val: Log.Debug("Subtitle stored") stored_any = True else: Log.Debug("Subtitle already existing in storage") if stored_any: Log.Debug("Saving subtitle storage for %s" % video_id) subtitle_storage.save(stored_subs)
def store_subtitle_info(scanned_video_part_map, downloaded_subtitles, storage_type, mode="a"): """ stores information about downloaded subtitles in plex's Dict() """ if "subs" not in Dict: Dict["subs"] = {} existing_parts = [] for video, video_subtitles in downloaded_subtitles.items(): part = scanned_video_part_map[video] part_id = str(part.id) video_id = str(video.id) if video_id not in Dict["subs"]: Dict["subs"][video_id] = {} if part_id not in Dict["subs"][video_id]: Dict["subs"][video_id][part_id] = {} existing_parts.append(part_id) for subtitle in video_subtitles: lang = Locale.Language.Match(subtitle.language.alpha2) sub_key = subtitle.provider_name, str(subtitle.id) metadata = video.plexapi_metadata # compute title title = get_title_for_video_metadata(metadata) Dict["subs"][video_id][part_id][lang] = { sub_key: dict(score=subtitle.score, storage=storage_type, hash=Hash.MD5(subtitle.content), date_added=datetime.datetime.now(), title=title, mode=mode), "current": sub_key } Dict.Save() if existing_parts: whack_missing_parts(scanned_video_part_map, existing_parts=existing_parts)