public override NonBloatSeasonData GetSeasonData(MALSeason ms, TempThread tempThread, string year, object storedData)
        {
            List <AnimeVibeData> data    = (List <AnimeVibeData>)storedData;
            NonBloatSeasonData   setData = new NonBloatSeasonData()
            {
                dubEpisodes = new List <string>(), subEpisodes = new List <string>()
            };

            foreach (var subData in data)
            {
                if (subData.title.Contains(ms.japName))
                {
                    bool isDub = subData.isDub;
                    if (isDub && !setData.DubExists)
                    {
                        for (int i = 1; i <= subData.maxEp; i++)
                        {
                            setData.dubEpisodes.Add(subData.href + i);
                        }
                    }
                    else if (!setData.SubExists)
                    {
                        for (int i = 1; i <= subData.maxEp; i++)
                        {
                            setData.subEpisodes.Add(subData.href + i);
                        }
                    }
                }
            }
            return(setData);
        }
Exemple #2
0
        public override NonBloatSeasonData GetSeasonData(MALSeason ms, TempThread tempThread, string year, object storedData)
        {
            List <RealShiroItem> data    = (List <RealShiroItem>)storedData;
            NonBloatSeasonData   setData = new NonBloatSeasonData()
            {
                dubEpisodes = new List <string>(), subEpisodes = new List <string>()
            };

            if (Token == "")
            {
                error("NO SHIRO TOKEN! AT " + nameof(GetSeasonData));
                return(setData);
            }

            string[] extraData = new string[2];
            foreach (var subData in data)
            {
                if ((setData.DubExists && subData.isDub) || (setData.SubExists && !subData.isDub))
                {
                    continue;
                }

                bool synoExist = false;
                if (subData.synonyms != null && ms.synonyms != null && ms.synonyms.Count > 0 && subData.synonyms.Length > 0)
                {
                    synoExist = ms.synonyms.Where(t => subData.synonyms.Contains(t)).ToArray().Length > 0;
                }

                if (ToDown(ms.engName) == ToDown(subData.name) || synoExist)
                {
                    List <string> episodes = new List <string>();
                    string        slug     = subData.slug;

                    for (int i = 1; i <= subData.episodes; i++)
                    {
                        episodes.Add($"https://tapi.{shiroBase._siteUrl.Replace("https://", "")}/anime-episode/slug/{slug}-episode-{i}?token={Token}");
                    }

                    if (subData.isDub)
                    {
                        setData.dubEpisodes = episodes;
                    }
                    else
                    {
                        setData.subEpisodes = episodes;
                    }
                    extraData[subData.isDub ? 1 : 0] = slug;
                }
            }
            setData.extraData = extraData;

            return(setData);
        }
        public override NonBloatSeasonData GetSeasonData(MALSeason ms, TempThread tempThread, string year, object storedData)
        {
            List <string>      data    = (List <string>)storedData;
            NonBloatSeasonData setData = new NonBloatSeasonData()
            {
                dubEpisodes = new List <string>(), subEpisodes = new List <string>()
            };

            foreach (var subData in data)
            {
            }

            return(setData);
        }
Exemple #4
0
        public override NonBloatSeasonData GetSeasonData(MALSeason ms, TempThread tempThread, string year, object storedData)
        {
            YuSearchItems[]    data    = (YuSearchItems[])storedData;
            NonBloatSeasonData setData = new NonBloatSeasonData()
            {
                dubEpisodes = new List <string>(), subEpisodes = new List <string>()
            };

            if (baseProvider == null)
            {
                return(setData);
            }
            int index = 0;

            foreach (var subData in data)
            {
                string toDownTitle = ToDown(subData.fields.title);
                if (index < 2 || ToDown(ms.name) == toDownTitle || ToDown(ms.engName) == toDownTitle || ToDown(ms.japName) == toDownTitle)                   // CAN BE REMOVED, BUT MIGHT BE BLOCKED DUE TO MANY REQUESTS
                {
                    var info = baseProvider.GetYuInfo(subData.pk, subData.fields.slug);
                    if (!GetThredActive(tempThread))
                    {
                        return(setData);
                    }
                    if (info.HasValue)
                    {
                        var infoVal = info.Value;
                        if (infoVal.malId == ms.MalId)
                        {
                            for (int i = 0; i < infoVal.subbedEps; i++)
                            {
                                setData.subEpisodes.Add($"https://yugenani.me/watch/{subData.pk}/{subData.fields.slug}/{(i + 1)}/");
                            }
                            for (int i = 0; i < infoVal.dubbedEps; i++)
                            {
                                setData.dubEpisodes.Add($"https://yugenani.me/watch/{subData.pk}/{subData.fields.slug}-dub/{(i + 1)}/");
                            }
                            return(setData);
                        }
                    }
                }

                index++;
            }

            return(setData);
        }
        public override NonBloatSeasonData GetSeasonData(MALSeason ms, TempThread tempThread, string year, object storedData)
        {
            AnimeFeverHelper.AnimeFeverSearchInfo data = (AnimeFeverHelper.AnimeFeverSearchInfo)storedData;
            NonBloatSeasonData setData = new NonBloatSeasonData()
            {
                dubEpisodes = new List <string>(), subEpisodes = new List <string>()
            };

            foreach (var subData in data.data)
            {
                if (subData.name == ms.engName || subData.alt_name == ms.engName)
                {
                    try {
                        var mainInfo = helper.GetAnimeFeverEpisodeInfo(subData.id, subData.slug);
                        if (mainInfo == null)
                        {
                            continue;
                        }
                        var _mainInfo = mainInfo.Value;

                        var emtyList = new string[_mainInfo.data.Count].ToList();
                        var referers = new string[_mainInfo.data.Count];
                        int index    = 0;
                        setData.dubEpisodes = emtyList;
                        setData.subEpisodes = emtyList;
                        foreach (var epInfo in _mainInfo.data)
                        {
                            var langs = epInfo.video_meta.audio_languages;
                            if (langs.Contains("eng"))
                            {
                                setData.dubEpisodes[index] = (epInfo.id.ToString());
                            }
                            if (langs.Contains("jap"))
                            {
                                setData.subEpisodes[index] = (epInfo.id.ToString());
                            }
                            referers[index] = $"https://www.animefever.tv/series/{subData.id}-{subData.slug}/episode/{epInfo.id}-episode-{index+1}-{epInfo.slug}";
                            print("ANIMEFEVER REFERER: " + referers[index]);
                            index++;
                        }
                        setData.extraData = referers;
                    }
                    catch (Exception) { }
                }
            }
            return(setData);
        }
Exemple #6
0
        public override NonBloatSeasonData GetSeasonData(MALSeason ms, TempThread tempThread, string year, object storedData)
        {
            if (storedData == null)
            {
                return(new NonBloatSeasonData());
            }

            List <NineAnimeDataSearch> data = (List <NineAnimeDataSearch>)storedData;

            if (data.Count == 0)
            {
                return(new NonBloatSeasonData());
            }

            print("START:::: " + data.FString());
            NonBloatSeasonData setData = new NonBloatSeasonData()
            {
                dubEpisodes = new List <string>(), subEpisodes = new List <string>()
            };

            foreach (var subData in data)
            {
                if (subData.names.Split(' ').Contains(ms.japName))
                {
                    bool isDub = subData.isDub;
                    if (isDub && !setData.dubExists)
                    {
                        for (int i = 1; i <= subData.maxEp; i++)
                        {
                            setData.dubEpisodes.Add(subData.href);
                        }
                    }
                    else if (!setData.subExists)
                    {
                        for (int i = 1; i <= subData.maxEp; i++)
                        {
                            setData.subEpisodes.Add(subData.href);
                        }
                    }
                }
            }
            return(setData);
        }
Exemple #7
0
            public override void FishMainLink(string year, TempThread tempThred, MALData malData)
            {
                print("FF:::: <>>");
                print("NDNDNDNND;;; " + Name + "|" + year + "|" + malData.engName);
                object storedData = NullMetadata ? null : StoreData(year, tempThred, malData);

                if (storedData == null && !NullMetadata)
                {
                    return;
                }
                for (int i = 0; i < ActiveMovie.title.MALData.seasonData.Count; i++)
                {
                    for (int q = 0; q < ActiveMovie.title.MALData.seasonData[i].seasons.Count; q++)
                    {
                        try {
                            MALSeason ms;
                            lock (_lock) {
                                ms        = ActiveMovie.title.MALData.seasonData[i].seasons[q];
                                ms.season = i;
                                ms.part   = q + 1;
                            }

                            NonBloatSeasonData data = GetSeasonData(ms, tempThred, year, storedData);
                            data.name = Name;

                            lock (_lock) {
                                ms = ActiveMovie.title.MALData.seasonData[i].seasons[q];
                                if (ms.nonBloatSeasonData == null)
                                {
                                    ms.nonBloatSeasonData = new List <NonBloatSeasonData>();
                                }
                                ms.nonBloatSeasonData.Add(data);
                                ActiveMovie.title.MALData.seasonData[i].seasons[q] = ms;
                            }
                        }
                        catch (Exception _ex) {
                            print("FATAL EX IN Fish " + Name + " | " + _ex);
                        }
                    }
                }
            }
            public override void FishMainLink(string year, TempThread tempThred, MALData malData)
            {
                object storedData = StoreData(year, tempThred, malData);

                if (storedData == null)
                {
                    return;
                }
                for (int i = 0; i < activeMovie.title.MALData.seasonData.Count; i++)
                {
                    for (int q = 0; q < activeMovie.title.MALData.seasonData[i].seasons.Count; q++)
                    {
                        try {
                            MALSeason ms;
                            lock (_lock) {
                                ms = activeMovie.title.MALData.seasonData[i].seasons[q];
                            }

                            NonBloatSeasonData data = GetSeasonData(ms, tempThred, year, storedData);
                            data.name = Name;

                            lock (_lock) {
                                ms = activeMovie.title.MALData.seasonData[i].seasons[q];
                                if (ms.nonBloatSeasonData == null)
                                {
                                    ms.nonBloatSeasonData = new List <NonBloatSeasonData>();
                                }
                                ms.nonBloatSeasonData.Add(data);
                                activeMovie.title.MALData.seasonData[i].seasons[q] = ms;
                            }
                        }
                        catch (Exception _ex) {
                            print("FATAL EX IN Fish " + Name + " | " + _ex);
                        }
                    }
                }
            }
        public override NonBloatSeasonData GetSeasonData(MALSeason ms, TempThread tempThread, string year, object storedData)
        {
            try {
                List <FourAnimeQuickSearchItem> data = (List <FourAnimeQuickSearchItem>)storedData;
                NonBloatSeasonData setData           = new NonBloatSeasonData()
                {
                    dubEpisodes = new List <string>(), subEpisodes = new List <string>()
                };
                foreach (var subData in data)
                {
                    var _title = ToLowerAndReplace(subData.title);
                    if ((ms.Year == -1 || (subData.year == ms.Year.ToString())) && (
                            _title == ToLowerAndReplace(ms.engName) ||
                            _title == ToLowerAndReplace(ms.name) ||
                            ms.synonyms.Select(t => ToLowerAndReplace(t)).Contains(_title)))                       // CHECK

                    {
                        string url = subData.href;
                        string d   = DownloadString(url, tempThread);
                        if (!d.IsClean())
                        {
                            continue;
                        }

                        bool isSub = d.Contains("/language/subbed");                         // There is some dubbed anime

                        if ((isSub && !setData.SubExists) || (!isSub && !setData.DubExists)) // To prevent duplicates, first result if often right
                        {
                            try {
                                var doc = new HtmlAgilityPack.HtmlDocument();
                                doc.LoadHtml(d);
                                var episodes = doc.QuerySelectorAll("ul.episodes.range.active > li > a");
                                List <FourAnimeEpisode> localEpisodes = new List <FourAnimeEpisode>();

                                foreach (var f in episodes)                                   // This is to really make sure no offset happends, if for some reason some episode is misson
                                {
                                    int.TryParse(f.InnerText, out int ep);
                                    if (ep > 0)
                                    {
                                        localEpisodes.Add(new FourAnimeEpisode()
                                        {
                                            episode = ep,
                                            href    = f.GetAttributeValue("href", "")
                                        });
                                    }
                                }

                                if (localEpisodes.Count == 0)
                                {
                                    continue;
                                }
                                int maxEp = localEpisodes.OrderBy(t => - t.episode).First().episode;
                                var list  = new string[maxEp].ToList();
                                foreach (var item in localEpisodes)
                                {
                                    list[item.episode - 1] = item.href;
                                }

                                if (isSub)
                                {
                                    setData.subEpisodes = list;
                                }
                                else
                                {
                                    setData.dubEpisodes = list;
                                }
                            }
                            catch (Exception _ex) {
                                error(_ex);
                            }
                        }
                    }
                }
                return(setData);
            }
            catch (Exception _ex) {
                error("Fatal Ex in 4Anime Getseason: " + _ex);
                return(new NonBloatSeasonData());
            }
        }
        public override NonBloatSeasonData GetSeasonData(MALSeason ms, TempThread tempThread, string year, object storedData)
        {
            NonBloatSeasonData setData = new NonBloatSeasonData()
            {
                dubEpisodes = new List <string>(), subEpisodes = new List <string>()
            };

            try {
                string name = ms.name;
                var    list = (List <TheMovieTitle>)storedData;

                string compare = ToDown(name, true, "");
                var    end     = list.Where(t => (t.href.Contains("/anime-info/")) && ToDown(t.name, true, "") == compare).OrderBy(t => { FuzzyMatch(t.name, name, out int score); return(-score); }).ToArray();

                bool   subExists = false;
                bool   dubExists = false;
                string subUrl    = "";
                string dubUrl    = "";
                for (int k = 0; k < end.Length; k++)
                {
                    if (!subExists && !end[k].isDub)
                    {
                        subExists = true;
                        subUrl    = end[k].href;
                    }
                    if (!dubExists && end[k].isDub)
                    {
                        dubExists = true;
                        dubUrl    = end[k].href;
                    }
                }

                try {
                    int maxSubbedEp = subExists ? TheMovieHelper.GetMaxEp(DownloadString(subUrl), subUrl) : 0;
                    if (!GetThredActive(tempThread))
                    {
                        return(setData);
                    }
                    ;                                                     // COPY UPDATE PROGRESS
                    int maxDubbedEp = dubExists ? TheMovieHelper.GetMaxEp(DownloadString(dubUrl), dubUrl) : 0;
                    if (!GetThredActive(tempThread))
                    {
                        return(setData);
                    }
                    ;                                                     // COPY UPDATE PROGRESS

                    for (int i = 0; i < maxDubbedEp; i++)
                    {
                        setData.dubEpisodes.Add(dubUrl);
                    }

                    for (int i = 0; i < maxSubbedEp; i++)
                    {
                        setData.subEpisodes.Add(subUrl);
                    }
                    return(setData);
                }
                catch (Exception _ex) {
                    print("ANIME ERROROROROOR.::" + _ex);
                    return(setData);
                }
            }
            catch (Exception) {
                return(setData);
            }
        }