Example #1
0
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()
Example #2
0
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()
Example #3
0
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()
Example #4
0
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)
Example #5
0
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)