private static async Task <List <GroupedSearchResult> > OnlineResult(string Query) { var User = Logincredentials.getuser(1); //Grab username and password var url = new Uri("https://myanimelist.net/api/anime/search.xml?q=" + Query); var url2 = new Uri("https://myanimelist.net/api/manga/search.xml?q=" + Query); //my god, I hate this hack //GET HttpResponseMessage AnimeResponse, MangaResponse; byte[] bytes = Encoding.UTF8.GetBytes(User.UserName + ":" + User.Password); string LoginToBase64 = Convert.ToBase64String(bytes); using (var client = new HttpClient()) { client.DefaultRequestHeaders.Add("Authorization", "Basic " + LoginToBase64); AnimeResponse = await client.GetAsync(url); AnimeResponse.EnsureSuccessStatusCode(); MangaResponse = await client.GetAsync(url2); MangaResponse.EnsureSuccessStatusCode(); } List <GroupedSearchResult> ItemList = new List <GroupedSearchResult>(); XDocument AnimeItems = ParseResponse(AnimeResponse.Content.ToString()); XDocument MangaItems = ParseResponse(MangaResponse.Content.ToString()); if (AnimeItems == null && MangaItems == null) { return(ItemList); // just return null list. } AnimeResponse.Dispose(); MangaResponse.Dispose(); if (AnimeItems != null) { var AnimeIndex = AnimeItems.Descendants("entry").Take(3); foreach (var item in AnimeIndex) { ItemList.Add(new GroupedSearchResult { GroupName = "Anime", Library = new ItemModel { Item_Id = (int)item.Element("id"), Item_Title = item.Element("title").Value, Imgurl = item.Element("image").Value } }); } } if (MangaItems != null) { var MangaIndex = MangaItems.Descendants("entry").Take(3); foreach (var item in MangaIndex) { ItemList.Add(new GroupedSearchResult { GroupName = "Manga", Library = new ItemModel { Item_Id = (int)item.Element("id"), Item_Title = item.Element("title").Value, Imgurl = item.Element("image").Value } }); } } return(ItemList); }
public void LoadFromTitleId() { if (_chapterRoutine != null) { StopCoroutine(_chapterRoutine); } _mangaRequest?.Abort(); var url = _titleId.text.Trim(); if (string.IsNullOrEmpty(url) || !Uri.TryCreate(url, UriKind.Absolute, out var uri) || !uri.Host.Contains("mangadex") || uri.Segments.Length < 3) { return; } var title = uri.Segments[2].Trim('/'); if (string.IsNullOrEmpty(title)) { return; } _currentManga = null; _chapters.Clear(); _chapter.ClearOptions(); foreach (Transform child in _list) { Destroy(child.gameObject); } var titleId = long.Parse(title); _mangaRequest = UnityWebRequest.Get(API_MANGA + titleId); _mangaRequest.SendWebRequest().completed += _ => { if (_mangaRequest.isHttpError || _mangaRequest.isNetworkError) { Debug.LogError($"Error while trying to get Manga info ERROR: {_mangaRequest.error}"); return; } var options = new List <string>(); var response = MangaResponse.FromJson(_mangaRequest.downloadHandler.text); foreach (var chapter in response.Chapters) { if (chapter.Value.LangCode == "gb") { var chapterName = $"Vol. {chapter.Value.Volume} Ch. {chapter.Value.ChapterNo}"; if (string.IsNullOrEmpty(chapter.Value.ChapterNo)) { chapterName = "Oneshot"; } else if (!string.IsNullOrEmpty(chapter.Value.Title)) { chapterName += $" - {chapter.Value.Title}"; } _chapters[chapterName] = chapter.Key; options.Add(chapterName); } } _chapter.AddOptions(options.Select(x => { var split = x.Split(' '); return(new { str = x, split = split.Length >= 4 ? split : new string[4] }); }) .OrderBy(x => float.Parse("0" + x.split[3])) .Select(x => x.str) .ToList()); _currentManga = response; SetChapterNo(PlayerPrefs.GetInt(_currentManga.Manga.Title, 0)); // Load the chapters _chapterRoutine = StartCoroutine(LoadMangaChapter()); }; }