Exemplo n.º 1
0
        async public Task <IResult <Show> > GetShow(string ShowUri)
        {
            IResult <Show> Donut = null;

            var Req = new RestRequest("/anime/" + ShowUri);
            var Res = this._HttpClient.Get(Req);

            if (Res.StatusCode != System.Net.HttpStatusCode.OK)
            {
                Donut = Result.Fail <Show>(Res.StatusDescription);
            }
            else
            {
                var Document = await Res.Content.ConvertHTML();

                var Show = new Show();

                var TagInner = Document.QuerySelector(".tags-inner");

                var TagsHTML = TagInner.QuerySelectorAll(".tag");

                foreach (var TagHTML in TagsHTML)
                {
                    Show.Categories.Add(new ShortCategory()
                    {
                        Name = TagHTML.Text(),
                        Uri  = TagHTML.Attributes["href"].Value
                    });
                }

                TagInner.ParentElement.PreviousElementSibling.Remove();

                var OtherNamesHTML = TagInner.ParentElement.ParentElement;

                TagInner.ParentElement.Remove();

                OtherNamesHTML.QuerySelectorAll("dd")[0].Remove();

                var NamesHTML = OtherNamesHTML.QuerySelectorAll("dt");

                foreach (var NameHTML in NamesHTML)
                {
                    Show.OtherNames.Add(NameHTML.Text().Trim().Replace(" ", "").ClearHtmlTags());
                }

                var Bilgiler  = OtherNamesHTML.NextElementSibling.QuerySelector("dl");
                var Bilgiler2 = OtherNamesHTML.NextElementSibling.NextElementSibling.QuerySelector("dl");



                Show.EpisodeCounter   = Convert.ToInt32(Bilgiler.QuerySelectorAll("dt")[1].Text().Split('/')[0].Trim().Replace(" ", ""));
                Show.StartedDay       = Bilgiler.QuerySelectorAll("dt")[2].Text().ClearHtmlTags();
                Show.LastAddedDay     = Bilgiler.QuerySelectorAll("dt")[3].Text().ClearHtmlTags();;
                Show.MinutePerEpisode = Bilgiler2.QuerySelectorAll("dt")[1].Text().ClearHtmlTags();
                Show.EndedDay         = Bilgiler2.QuerySelectorAll("dt")[2].Text().ClearHtmlTags();
                Show.YearOfShow       = Bilgiler2.QuerySelectorAll("dt")[3].Text().ClearHtmlTags();

                var TranslartorsHTML = Bilgiler2.ParentElement.NextElementSibling.QuerySelector("dl").QuerySelectorAll("dt>ul>li");

                foreach (var TranslartorHTML in TranslartorsHTML)
                {
                    Show.Translators.Add(TranslartorHTML.Text());
                }

                Show.Image = Document.QuerySelector(".animeDetail-video-player").QuerySelector(".poster").QuerySelector("img").Attributes["src"].Value;

                var IdParserRegex = new Regex(@"\/animes\/(.*?)\/");
                var IdParseTest   = IdParserRegex.Match(Show.Image);

                if (IdParseTest.Success)
                {
                    Show.ID = Convert.ToInt32(IdParseTest.Groups[1].Value);
                }

                Show.Name = Document.QuerySelector(".playlist-title").QuerySelector("h1").Text();

                Regex    SezonAndBolum = new Regex(@"(.*?) ([\d]+). sezon ([\d]+). bölüm izle");
                Regex    OnlyBolum     = new Regex(@"(.*?) ([\d]+). bölüm izle");
                Regex    Onlyizle      = new Regex(@"(.*?) izle");
                TextInfo ti            = CultureInfo.CurrentCulture.TextInfo;

                var EpisodesHTML = Document.QuerySelectorAll(".episodeBtn");
                foreach (var EpisodeHTML in EpisodesHTML)
                {
                    var ShortEp = new ShortEpisode();
                    ShortEp.Name = EpisodeHTML.QuerySelector("p>span").Text();
                    ShortEp.EpID = EpisodeHTML.QuerySelector("p>meta").Attributes["content"].Value;

                    EpisodeHTML.QuerySelector("p>small>br").Remove();

                    ShortEp.PublisedDay = EpisodeHTML.QuerySelector("p>small").Text().ClearHtmlTags();
                    ShortEp.Image       = EpisodeHTML.QuerySelector(".imgContainer>img").Attributes["src"].Value;
                    ShortEp.Uri         = EpisodeHTML.Attributes["data-slug"].Value;

                    var TestSezonAndBolum = SezonAndBolum.Match(ShortEp.Name.ToLower());
                    if (TestSezonAndBolum.Success)
                    {
                        ShortEp.ShowName = ti.ToTitleCase(TestSezonAndBolum.Groups[1].Value);
                        ShortEp.SeasonID = TestSezonAndBolum.Groups[2].Value;
                    }
                    else
                    {
                        var TestBolum = OnlyBolum.Match(ShortEp.Name.ToLower());

                        if (TestBolum.Success)
                        {
                            ShortEp.ShowName = ti.ToTitleCase(TestBolum.Groups[1].Value);
                        }
                        else
                        {
                            var TestIzle = Onlyizle.Match(ShortEp.Name.ToLower());
                            if (TestIzle.Success)
                            {
                                ShortEp.ShowName = ti.ToTitleCase(TestIzle.Groups[1].Value);
                            }
                            else
                            {
                                ShortEp.ShowName = ShortEp.Name;
                            }
                        }
                    }

                    Show.Episodes.Add(ShortEp);
                }
                Show.Description = Document.QuerySelector("p[itemprop=description]").Text();

                Donut = Result.Success(Show);
            }

            return(Donut);
        }
Exemplo n.º 2
0
        async public Task <IResult <NewEpisode> > GetNewEpisodes(int Page = 1)
        {
            IResult <NewEpisode> Donut = null;

            var Liste = new NewEpisode();

            var Req = new RestRequest("listeler/yenibolum/sayfa-" + Page.ToString());
            var Res = this._HttpClient.Get(Req);

            if (Res.StatusCode != System.Net.HttpStatusCode.OK)
            {
                Donut = Result.Fail <NewEpisode>(Res.StatusDescription);
            }
            else
            {
                TextInfo ti = CultureInfo.CurrentCulture.TextInfo;

                var Document = await Res.Content.ConvertHTML();

                var BolumlerHTMLS = Document.QuerySelectorAll(".flx-block");

                Regex SezonAndBolum = new Regex(@"(.*?) ([\d]+). sezon ([\d]+). bölüm izle");
                Regex OnlyBolum     = new Regex(@"(.*?) ([\d]+). bölüm izle");
                Regex Onlyizle      = new Regex(@"(.*?) izle");


                foreach (var BolumHTML in BolumlerHTMLS)
                {
                    ShortEpisode ShortEpisode = new ShortEpisode();
                    var          Chip         = BolumHTML.QuerySelectorAll(".info-chip")[1].Text().ToLower().Trim().Replace(" ", "");

                    var Bol = Chip.Split('/');

                    if (Chip.Contains("böl"))
                    {
                        ShortEpisode.EpID = Bol[0].Replace("böl", "").Trim();
                    }
                    else
                    {
                        ShortEpisode.EpID = Bol[0].Replace(" ", "").Trim();
                    }

                    ShortEpisode.Name = BolumHTML.QuerySelector(".bar>h4").Text();


                    var TestSezonAndBolum = SezonAndBolum.Match(ShortEpisode.Name.ToLower());
                    if (TestSezonAndBolum.Success)
                    {
                        ShortEpisode.ShowName = ti.ToTitleCase(TestSezonAndBolum.Groups[1].Value);
                        ShortEpisode.SeasonID = TestSezonAndBolum.Groups[2].Value;
                    }
                    else
                    {
                        var TestBolum = OnlyBolum.Match(ShortEpisode.Name.ToLower());

                        if (TestBolum.Success)
                        {
                            ShortEpisode.ShowName = ti.ToTitleCase(TestBolum.Groups[1].Value);
                        }
                        else
                        {
                            var TestIzle = Onlyizle.Match(ShortEpisode.Name.ToLower());
                            if (TestIzle.Success)
                            {
                                ShortEpisode.ShowName = ti.ToTitleCase(TestIzle.Groups[1].Value);
                            }
                            else
                            {
                                ShortEpisode.ShowName = ShortEpisode.Name;
                            }
                        }
                    }


                    ShortEpisode.Uri   = BolumHTML.Attributes["data-href"].Value;
                    ShortEpisode.Image = BolumHTML.QuerySelector("a>img").Attributes["src"].Value;

                    Liste.Episodes.Add(ShortEpisode);
                }

                var PaginationHtml = Document.QuerySelectorAll(".pagination")[0];

                Liste.Pagination.Current = Convert.ToInt32(PaginationHtml.QuerySelector(".active").Text());

                Liste.Pagination.Max = Convert.ToInt32(PaginationHtml.QuerySelectorAll("li")[PaginationHtml.QuerySelectorAll("li").Length - 2].Text());

                Donut = Result.Success(Liste);
            }

            return(Donut);
        }