async void SelectManga(MangaResult parameter) { var navParams = new NavigationParameters(); navParams.Add("manga", parameter); await _navigationService.NavigateAsync("ChaptersPage", navParams); }
public ReadMangaPage(MangaResult manga, ChapterDetailResult chapter) { _manga = manga; _chapter = chapter; InitializeComponent(); Title = $"{_manga.Name}: {_chapter.ShowChapter}"; }
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())); }
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; }
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; }
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); }
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)); } }); }
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();
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); } }
public CapitulosPage(MangaResult manga) { _manga = manga; InitializeComponent(); Title = _manga.Name; }
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); } }