Exemplo n.º 1
0
        async void SelectManga(MangaResult parameter)
        {
            var navParams = new NavigationParameters();

            navParams.Add("manga", parameter);
            await _navigationService.NavigateAsync("ChaptersPage", navParams);
        }
Exemplo n.º 2
0
 public ReadMangaPage(MangaResult manga, ChapterDetailResult chapter)
 {
     _manga   = manga;
     _chapter = chapter;
     InitializeComponent();
     Title = $"{_manga.Name}: {_chapter.ShowChapter}";
 }
Exemplo n.º 3
0
        public async Task SearchAlMangaAsync([Summary("Title to search")][Remainder] string name = "Azur Lane")
        {
            Logger.LogInfo($"Searching for {name} on anilist");

            MangaResult mangaResult = await AnilistClient.GetMangaAsync(name);

            await ReplyAsync(embed : GetMangaResultEmbed(mangaResult, 0, new EmbedFooterBuilder()));
        }
Exemplo n.º 4
0
        public override async void OnNavigatedTo(INavigationParameters parameters)
        {
            OnGoing = true;
            base.OnNavigatedTo(parameters);
            _mangaResult   = parameters.GetValue <MangaResult>("manga");
            _chapterDetail = parameters.GetValue <ChapterDetailResult>("chapter");
            Title          = _chapterDetail.ShowChapter;
            await InnitMangaPageCarouselAsync(_mangaResult, _chapterDetail);

            OnGoing = false;
        }
Exemplo n.º 5
0
 public async Task InnitMangaPageCarouselAsync(MangaResult manga, ChapterDetailResult chapter)
 {
     try
     {
         MangaPages = new ObservableCollection <MangaPage>(await _inMangaService.GetListPageModels(manga, chapter));
     }
     catch (Utils.UnsuccessfulRequestException ex)
     {
         //A form to notify error
     }
 }
        public override async void OnNavigatedTo(INavigationParameters parameters)
        {
            _mangaResult = parameters.GetValue <MangaResult>("manga") != null?parameters.GetValue <MangaResult>("manga") : _mangaResult;

            Title = _mangaResult.Name;
            if (!ChapterResults.Any())
            {
                await InnitChapterListAsync(_mangaResult);
            }
            base.OnNavigatedTo(parameters);
        }
 public async Task InnitChapterListAsync(MangaResult manga)
 {
     IsListRefreshing = true;
     try
     {
         ChapterResults = new ObservableCollection <ChapterDetailResult>(await _inMangaService.GetMangaDetails(manga.Identification));
     }
     catch (Utils.UnsuccessfulRequestException ex)
     {
         //A form to notify error
     }
     IsListRefreshing = false;
 }
Exemplo n.º 8
0
        public async Task <IEnumerable <string> > GetListPages(MangaResult manga, ChapterDetailResult chapter)
        {
            var res = await GetSuscessStringResponse(string.Format(PageList, chapter.Identification));

            var doc = new HtmlDocument();

            doc.LoadHtml(res);
            var pageIdList = doc.GetElementbyId("PageList")
                             .ChildNodes.Where(n => n.Name == "option").ToList()
                             .Select(n => string.Format(PageUrl,
                                                        manga.Name.Replace(" ", "-"), chapter.FriendlyChapterNumberUrl, n.InnerText, n.GetAttributeValue("value", ""))
                                     );

            return(pageIdList);
        }
 public async void GetPageTest()
 {
     var manga = new MangaResult {
         Identification  = "74d824c1-85ba-4544-8fb2-aa4ccecd9eea",
         Name            = "Nanatsu no Taizai",
         BroadcastStatus = 1
     };
     var chapter = new ChapterDetailResult {
         PagesCount            = 28,
         Id                    = 98,
         Number                = 121.0,
         Identification        = "89ea769e-c871-4fea-95cd-e19d4421ceaa",
         FriendlyChapterNumber = "121", FriendlyChapterNumberUrl = "121"
     };
     var listPages = await GetListPages(manga, chapter);
 }
Exemplo n.º 10
0
        public async Task SearchMalMangaAsync([Summary("Title to search")][Remainder] string name = "Azur Lane")
        {
            Logger.LogInfo($"Searching for {name} on myanimelist");

            ulong[] ids = await MalClient.GetMangaIdAsync(name);

            MangaResult[] resultCache = new MangaResult[ids.Length];

            await PaginatedMessageService.SendPaginatedDataAsyncMessageAsync(Context.Channel, ids, async (ulong id, int index, EmbedFooterBuilder footer) => {
                if (resultCache[index].MalId != 0)
                {
                    return(GetMangaResultEmbed(resultCache[index], index, footer));
                }
                else
                {
                    MangaResult result = resultCache[index] = await MalClient.GetDetailedMangaResultsAsync(id);
                    return(GetMangaResultEmbed(result, index, footer));
                }
            });
        }
Exemplo n.º 11
0
 private Embed GetMangaResultEmbed(MangaResult result, int index, EmbedFooterBuilder footer) => new EmbedBuilder()
 .WithColor(0x2E51A2)
 .WithAuthor(author => {
     author
     .WithName($"{result.Title}")
     .WithUrl($"{result.SiteUrl}")
     .WithIconUrl(result.ApiType.ToIconUrl());
 })
 .WithDescription($"" +
                  $"__**Description:**__\n" +
                  $"{result.Synopsis.ShortenText()}")
 .AddField("Details ▼",
           $"► Type: **{result.Type}**\n" +
           $"► Status: **{result.Status}**\n" +
           $"► Chapters: **{"Unknown".IfTargetIsNullOrEmpty(result.Chapters?.ToString())}**\n" +
           $"► Volumes: **{"Unknown".IfTargetIsNullOrEmpty(result.Volumes?.ToString())}**\n" +
           $"► Average Score: **{"NaN".IfTargetIsNullOrEmpty(result.Score?.ToString())}**☆\n" +
           $"► Author(s): **{(result.Staff.Length > 0 ? result.Staff.Select(author => $"[{author.Name}]({author.SiteUrl})").CommaSeperatedString() : "Unknown")}**\n")
 .WithFooter(footer)
 .WithImageUrl(result.ImageUrl)
 .Build();
Exemplo n.º 12
0
        public MangaResult GetManga(string searchQuery)
        {
            try
            {
                var result = new MangaResult();

                var responseText = httpClient.HttpGet($"manga/search.xml?q={searchQuery}").Result;
                if (responseText == null)
                {
                    Logging.LogError($"Could not find manga \"{searchQuery}\"").Wait();
                    return(null);
                }

                var root        = XElement.Parse(responseText);
                var firstResult = (from el in root.Descendants("entry") select el).First();

                result.Title = firstResult.Descendants("title").First().Value;

                var englishTitle = firstResult.Descendants("english").First().Value;
                if (englishTitle.Length > 0)
                {
                    result.EnglishTitle = englishTitle;
                }

                var synonyms = firstResult.Descendants("synonyms").First().Value;
                if (synonyms.Length > 0)
                {
                    result.Synonyms = synonyms;
                }

                result.Type   = firstResult.Descendants("type").First().Value;
                result.Status = firstResult.Descendants("status").First().Value;
                result.Score  = float.Parse(firstResult.Descendants("score").First().Value);

                var chaptersString = firstResult.Descendants("chapters").First().Value;
                var volumesString  = firstResult.Descendants("volumes").First().Value;
                if (chaptersString != "0")
                {
                    result.ChapterCount = int.Parse(chaptersString);
                }
                if (volumesString != "0")
                {
                    result.VolumeCount = int.Parse(volumesString);
                }

                var startDate = DateTime.Parse(firstResult.Descendants("start_date").First().Value).ToString("MMMM dd, yyyy");
                var endDate   = firstResult.Descendants("end_date").First().Value;
                endDate           = endDate == "0000-00-00" ? "?" : DateTime.Parse(endDate).ToString("MMMM dd, yyyy");
                result.DateString = $"{startDate} -> {endDate}\n";

                result.Id           = int.Parse(firstResult.Descendants("id").First().Value);
                result.ThumbnailUrl = firstResult.Descendants("image").First().Value;
                result.Synopsis     = GenerateSynopsisString(firstResult.Descendants("synopsis").First().Value);
                return(result);
            }
            catch (Exception)
            {
                Logging.LogError($"Could not find manga \"{searchQuery}\"").Wait();
                return(null);
            }
        }
Exemplo n.º 13
0
 public CapitulosPage(MangaResult manga)
 {
     _manga = manga;
     InitializeComponent();
     Title = _manga.Name;
 }
Exemplo n.º 14
0
        public static MangaResult GetManga(string searchQuery)
        {
            try
            {
                var result = new MangaResult();

                var httpClient = new HttpClient();
                httpClient.SetBasicHttpCredentials((string)Shinoa.Config["mal_username"], (string)Shinoa.Config["mal_password"]);
                httpClient.BaseAddress = new Uri("https://myanimelist.net/api/");

                var      responseText = httpClient.HttpGet($"manga/search.xml?q={searchQuery}");
                XElement root         = XElement.Parse(responseText);
                var      firstResult  = (from el in root.Descendants("entry") select el).First();

                result.title = firstResult.Descendants("title").First().Value;

                var englishTitle = firstResult.Descendants("english").First().Value;
                if (englishTitle.Length > 0)
                {
                    result.englishTitle = englishTitle;
                }

                var synonyms = firstResult.Descendants("synonyms").First().Value;
                if (synonyms.Length > 0)
                {
                    result.synonyms = synonyms;
                }

                result.type   = firstResult.Descendants("type").First().Value;
                result.status = firstResult.Descendants("status").First().Value;
                result.score  = float.Parse(firstResult.Descendants("score").First().Value);

                var chaptersString = firstResult.Descendants("chapters").First().Value;
                var volumesString  = firstResult.Descendants("volumes").First().Value;
                if (chaptersString != "0")
                {
                    result.chapterCount = int.Parse(chaptersString);
                }
                if (volumesString != "0")
                {
                    result.volumeCount = int.Parse(volumesString);
                }

                var startDate = DateTime.Parse(firstResult.Descendants("start_date").First().Value).ToString("MMMM dd, yyyy");
                var endDate   = firstResult.Descendants("end_date").First().Value;
                if (endDate == "0000-00-00")
                {
                    endDate = "?";
                }
                else
                {
                    endDate = DateTime.Parse(endDate).ToString("MMMM dd, yyyy");
                }
                result.dateString = $"{startDate} -> {endDate}\n";

                result.id           = int.Parse(firstResult.Descendants("id").First().Value);
                result.thumbnailUrl = firstResult.Descendants("image").First().Value;
                result.synopsis     = GenerateSynopsisString(firstResult.Descendants("synopsis").First().Value);
                return(result);
            }
            catch (Exception e)
            {
                return(null);
            }
        }