示例#1
0
        private static string __GetTitle(IEnumerable <Title> seriesTitles, IEnumerable <Title> episodeTitles, string seriesTitle, string episodeTitle, DisplayTitleType outputType, params string[] languageCandidates)
        {
            // Lazy init string builder when/if we need it.
            StringBuilder titleBuilder = null;

            switch (outputType)
            {
            default:
                return(null);

            case DisplayTitleType.MainTitle:
            case DisplayTitleType.FullTitle: {
                string title = (GetTitleByTypeAndLanguage(seriesTitles, "official", languageCandidates) ?? seriesTitle)?.Trim();
                // Return series title.
                if (outputType == DisplayTitleType.MainTitle)
                {
                    return(title);
                }
                titleBuilder = new StringBuilder(title);
                goto case DisplayTitleType.SubTitle;
            }

            case DisplayTitleType.SubTitle: {
                string title = (GetTitleByLanguages(episodeTitles, languageCandidates) ?? episodeTitle)?.Trim();
                // Return episode title.
                if (outputType == DisplayTitleType.SubTitle)
                {
                    return(title);
                }
                // Ignore sub-title of movie if it strictly equals the text below.
                if (title != "Complete Movie" && !string.IsNullOrEmpty(title?.Trim()))
                {
                    titleBuilder?.Append($": {title}");
                }
                return(titleBuilder?.ToString() ?? "");
            }
            }
        }
示例#2
0
 public static string GetTitle(IEnumerable <Title> seriesTitles, IEnumerable <Title> episodeTitles, string seriesTitle, string episodeTitle, DisplayTitleType outputType, string metadataLanguage, params string[] originLanguages)
 => GetTitle(seriesTitles, episodeTitles, seriesTitle, episodeTitle, Plugin.Instance.Configuration.TitleMainType, outputType, metadataLanguage, originLanguages);
示例#3
0
        public static string GetTitle(IEnumerable <Title> seriesTitles, IEnumerable <Title> episodeTitles, string seriesTitle, string episodeTitle, DisplayLanguageType languageType, DisplayTitleType outputType, string displayLanguage, params string[] originLanguages)
        {
            // Don't process anything if the series titles are not provided.
            if (seriesTitles == null)
            {
                return(null);
            }
            // Guess origin language if not provided.
            if (originLanguages.Length == 0)
            {
                originLanguages = GuessOriginLanguage(seriesTitles);
            }
            switch (languageType)
            {
            // 'Ignore' will always return null, and all other values will also return null.
            default:
            case DisplayLanguageType.Ignore:
                return(null);

            // Let Shoko decide the title.
            case DisplayLanguageType.Default:
                return(__GetTitle(null, null, seriesTitle, episodeTitle, outputType));

            // Display in metadata-preferred language, or fallback to default.
            case DisplayLanguageType.MetadataPreferred:
                var title = __GetTitle(seriesTitles, episodeTitles, seriesTitle, episodeTitle, outputType, displayLanguage);
                if (string.IsNullOrEmpty(title))
                {
                    goto case DisplayLanguageType.Default;
                }
                return(title);

            // Display in origin language without fallback.
            case DisplayLanguageType.Origin:
                return(__GetTitle(seriesTitles, episodeTitles, seriesTitle, episodeTitle, outputType, originLanguages));
            }
        }
示例#4
0
        public static (string, string) GetTitles(IEnumerable <Title> seriesTitles, IEnumerable <Title> episodeTitles, string seriesTitle, string episodeTitle, DisplayTitleType outputType, string metadataLanguage)
        {
            // Don't process anything if the series titles are not provided.
            if (seriesTitles == null)
            {
                return(null, null);
            }
            var originLanguage = GuessOriginLanguage(seriesTitles);

            return(
                GetTitle(seriesTitles, episodeTitles, seriesTitle, episodeTitle, Plugin.Instance.Configuration.TitleMainType, outputType, metadataLanguage, originLanguage),
                GetTitle(seriesTitles, episodeTitles, seriesTitle, episodeTitle, Plugin.Instance.Configuration.TitleAlternateType, outputType, metadataLanguage, originLanguage)
                );
        }