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

            foreach (var subData in data)
            {
                if ((setData.DubExists && subData.isDub) || (setData.SubExists && !subData.isDub))
                {
                    continue;
                }

                if (subData.season == ms.season &&
                    (ToLowerAndReplace(ms.name, false).StartsWith(ToLowerAndReplace(subData.name, false)) ||
                     ToLowerAndReplace(ms.engName, false).StartsWith(ToLowerAndReplace(subData.name, false))))                       // THIS IS BECAUSE SEASON IS SEPERATED FROM NAME
                {
                    try {
                        string d   = DownloadString("https://animeparadise.cc/anime.php?s=" + subData.id, referer: subData.referer);
                        var    doc = new HtmlAgilityPack.HtmlDocument();
                        doc.LoadHtml(d);
                        var nodes = doc.QuerySelectorAll("h1.title");

                        int lastEp = int.Parse(nodes[^ 1].InnerText);
        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);
        }
Esempio n. 3
0
        public override NonBloatSeasonData GetSeasonData(MALSeason ms, TempThread tempThread, string year, object storedData)
        {
            List <AnimeSimpleTitle> data    = (List <AnimeSimpleTitle>)storedData;
            NonBloatSeasonData      setData = new NonBloatSeasonData()
            {
                dubEpisodes = new List <string>(), subEpisodes = new List <string>()
            };

            foreach (var subData in data)
            {
                if (ms.MalId == subData.malId)
                {
                    var ep = GetAnimeSimpleEpisodes(subData.id);
                    if (ep.HasValue)
                    {
                        var _val = ep.Value;
                        for (int i = 0; i < _val.subbedEpisodes; i++)
                        {
                            setData.subEpisodes.Add(_val.urls[i]);
                        }
                        for (int i = 0; i < _val.dubbedEpisodes; i++)
                        {
                            setData.dubEpisodes.Add(_val.urls[i]);
                        }
                    }
                }
            }

            return(setData);
        }
Esempio n. 4
0
            public NonBloatSeasonData GetData(MALSeason data, out bool suc)
            {
                var list = data.nonBloatSeasonData.Where(t => t.name == Name).ToList();

                suc = list.Count > 0;
                return(suc ? list[0] : new NonBloatSeasonData());
            }
Esempio n. 5
0
        public override NonBloatSeasonData GetSeasonData(MALSeason ms, TempThread tempThread, string year, object storedData)
        {
            List <DubbedSearchItem> data    = (List <DubbedSearchItem>)storedData;
            NonBloatSeasonData      setData = new NonBloatSeasonData()
            {
                dubEpisodes = new List <string>(), subEpisodes = new List <string>()
            };

            foreach (var subData in data)
            {
                if (subData.isMovie)
                {
                    continue;
                }
                // SEE https://bestdubbedanime.com/search/_
                string name     = subData.name.ToLower();
                string baseName = ToDown(name);
                if (baseName.StartsWith(ToDown(ms.name)) || baseName.StartsWith(ToDown(ActiveMovie.title.name)) || baseName.StartsWith(ToDown(ActiveMovie.title.ogName)))
                {
                    int season = 1;
                    if (name.Contains("season 2") || name.Contains("2nd season") || name.Contains("second season") || (name.EndsWith(" 2") && !name.EndsWith("part 2")))
                    {
                        season = 2;
                    }
                    else if (name.Contains("season 3") || name.Contains("3rd season") || (name.EndsWith(" 3") && !name.EndsWith("part 3")))
                    {
                        season = 3;
                    }
                    if (ms.season != season)
                    {
                        continue;
                    }
                    int part = 1;
                    if (name.Contains("part 2") || name.Contains("part ii"))
                    {
                        part = 2;
                    }
                    if (ms.part != part)
                    {
                        continue;
                    }
                    var ep = provider.GetDubbedAnimeEpisode(subData.slug, 1);
                    if (!ep.HasValue)
                    {
                        continue;
                    }

                    for (int i = 0; i < ep.Value.totalEp; i++)
                    {
                        setData.dubEpisodes.Add(subData.slug);
                    }
                    break;
                }
            }

            return(setData);
        }
Esempio n. 6
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);
        }
Esempio n. 8
0
            public override void GetHasDubSub(MALSeason data, out bool dub, out bool sub)
            {
                var _data = GetData(data, out bool suc);

                if (suc)
                {
                    dub = _data.DubExists;
                    sub = _data.SubExists;
                }
                else
                {
                    dub = false;
                    sub = false;
                }
            }
Esempio n. 9
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);
        }
Esempio n. 11
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);
        }
Esempio n. 12
0
        public override NonBloatSeasonData GetSeasonData(MALSeason ms, TempThread tempThread, string year, object storedData)
        {
            GenoanimeSearchItem[] data    = (GenoanimeSearchItem[])storedData;
            NonBloatSeasonData    setData = new NonBloatSeasonData()
            {
                dubEpisodes = new List <string>(), subEpisodes = new List <string>()
            };
            string cName = ToDown(ms.engName);

            string[] cSyno = ms.synonyms.Select(t => ToDown(t)).ToArray();
            foreach (var subData in data)
            {
                bool   isDub = subData.name.Contains(" (Dub)");
                string name  = subData.name.Replace(" (Dub)", "");
                string dName = ToDown(name);
                if (dName == cName || cSyno.Contains(dName))
                {
                    if ((!setData.DubExists && isDub) || (!setData.SubExists && !isDub))
                    {
                        string d   = DownloadString("https://genoanime.com" + subData.link[1..]);
        public override NonBloatSeasonData GetSeasonData(MALSeason ms, TempThread tempThread, string year, object storedData)
        {
            ArrayAnimeSearchResult[] data    = (ArrayAnimeSearchResult[])storedData;
            NonBloatSeasonData       setData = new NonBloatSeasonData()
            {
                dubEpisodes = new List <string>(), subEpisodes = new List <string>()
            };

            foreach (var subData in data)
            {
                bool isDub = subData.title.Contains(" (Dub)");
                if ((!setData.SubExists && !isDub) || (!setData.DubExists && isDub))
                {
                    string realTitle     = subData.title.Replace(" (Dub)", "");
                    string realDownTitle = ToDown(realTitle);

                    bool synoExist = false;
                    if (ms.synonyms != null && ms.synonyms.Count > 0)
                    {
                        foreach (var syno in ms.synonyms)
                        {
                            if (ToDown(syno) == realDownTitle)
                            {
                                synoExist = true;
                                break;
                            }
                        }
                    }

                    if (ToDown(ms.engName) == realDownTitle || synoExist)
                    {
                        try {
                            string d = DownloadString("https://arrayanimeapi.vercel.app/api/details/" + subData.id, tempThread, referer: "https://www.arrayanime.com/");
                            if (d.IsClean())
                            {
                                ArrayAnimeItemResultRoot itemRoot = JsonConvert.DeserializeObject <ArrayAnimeItemResultRoot>(d);
                                if (itemRoot.results != null && itemRoot.results.Length > 0)
                                {
                                    int totalEpisodes = int.Parse(itemRoot.results[0].totalepisode);

                                    List <string> episodes = new List <string>(totalEpisodes);
                                    for (int i = 0; i < totalEpisodes; i++)
                                    {
                                        episodes.Add($"https://t-arrayapi.vercel.app/api/watching/{subData.id}/{(i + 1)}");
                                    }

                                    if (isDub)
                                    {
                                        setData.dubEpisodes = episodes;
                                    }
                                    else
                                    {
                                        setData.subEpisodes = episodes;
                                    }
                                }
                            }
                        }
                        catch (System.Exception _ex) {
                            error(_ex);
                        }
                    }
                }
            }

            return(setData);
        }
Esempio n. 14
0
 public virtual NonBloatSeasonData GetSeasonData(MALSeason ms, TempThread tempThread, string year, object storedData)
 {
     throw new NotImplementedException();
 }
        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);
            }
        }