From c6b1b097d6bdfd4431c319367ebe998a28e25d25 Mon Sep 17 00:00:00 2001 From: MonkAlex <3amepob@gmail.com> Date: Sun, 4 Jun 2023 00:01:37 +0400 Subject: [PATCH] Fix bugs on grouple sites and henchan, release 1.51.9.39 --- CHANGELOG.md | 7 ++ MangaReader.Core/Account/SiteHttpClient.cs | 1 + MangaReader.Core/Account/SiteWebClient.cs | 4 +- MangaReader.Core/Manga/MangaPage.cs | 8 +- MangaReader.Core/Services/DownloadManager.cs | 10 ++- README.md | 2 +- Sites/Grouple.ru/GroupleMangaPage.cs | 2 - Sites/Grouple.ru/GroupleParser.cs | 4 +- Sites/Hentai2Read.com/Hentai2ReadParser.cs | 6 +- Sites/Hentaichan.me/Constants.cs | 2 +- .../Convertation/HentaichanFrom51_8To51_9.cs | 36 +++++++++ Tests/Tests.Entities/Builder.cs | 1 + Tests/Tests.Entities/Cache.json | 80 +++++++++++-------- Tests/Tests.Entities/MangaInfo.cs | 4 +- Tests/Tests.Entities/MangaInfos.cs | 12 +-- Tests/Tests.Entities/MangaTest.cs | 10 ++- VersionInfo.cs | 4 +- 17 files changed, 134 insertions(+), 59 deletions(-) create mode 100644 Sites/Hentaichan.me/Convertation/HentaichanFrom51_8To51_9.cs diff --git a/CHANGELOG.md b/CHANGELOG.md index 416893b1..c6a2664b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,4 +1,11 @@ # История версий +*** +## 1.51.9.39 — 2023-06-03 + +### Исправлено +* Актуализирована поддержка https://readmanga.live/, https://mintmanga.live +* Актуализирован адрес https://x.henchan.pro/ + *** ## 1.51.8.38 — 2022-10-27 diff --git a/MangaReader.Core/Account/SiteHttpClient.cs b/MangaReader.Core/Account/SiteHttpClient.cs index dbd069f1..b78302b8 100644 --- a/MangaReader.Core/Account/SiteHttpClient.cs +++ b/MangaReader.Core/Account/SiteHttpClient.cs @@ -190,6 +190,7 @@ public SiteHttpClient(Uri mainUri, IWebProxy proxy, CookieContainer cookieContai BaseAddress = mainUri }; this.httpClient.DefaultRequestHeaders.UserAgent.TryParseAdd("Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:57.0) Gecko/20100101 Firefox/57.0"); + this.httpClient.DefaultRequestHeaders.Accept.TryParseAdd("text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8"); } } } diff --git a/MangaReader.Core/Account/SiteWebClient.cs b/MangaReader.Core/Account/SiteWebClient.cs index ef5cd808..044c89d8 100644 --- a/MangaReader.Core/Account/SiteWebClient.cs +++ b/MangaReader.Core/Account/SiteWebClient.cs @@ -35,11 +35,13 @@ public async Task GetPage(Uri uri) private CookieClient GetCookieClient() { - return new CookieClient(this.cookieContainer) + var client = new CookieClient(this.cookieContainer) { BaseAddress = mainUri.OriginalString, Proxy = proxy, }; + client.Headers.Add(HttpRequestHeader.Accept, "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8"); + return client; } private static async Task GetPageImpl(Uri uri, CookieClient client) diff --git a/MangaReader.Core/Manga/MangaPage.cs b/MangaReader.Core/Manga/MangaPage.cs index d2d90179..1b525aa1 100644 --- a/MangaReader.Core/Manga/MangaPage.cs +++ b/MangaReader.Core/Manga/MangaPage.cs @@ -99,9 +99,11 @@ public async Task Download(string chapterFolder) var plugin = ConfigStorage.Plugins.Single(p => p.MangaType == manga.GetType()); var cache = MangaSettingCache.Get(plugin.GetType()); - var file = await DownloadManager.DownloadImage(this.ImageLink, cache).ConfigureAwait(false); + var file = await DownloadManager.DownloadImage(this.ImageLink, cache, this.Uri.Host).ConfigureAwait(false); if (!file.Exist) - OnDownloadFailed(); + { + ThrowException(); + } var fileName = this.Number.ToString(CultureInfo.InvariantCulture).PadLeft(4, '0') + "." + file.Extension; await file.Save(Path.Combine(chapterFolder, fileName)).ConfigureAwait(false); this.IsDownloaded = true; @@ -115,7 +117,7 @@ public async Task Download(string chapterFolder) } } - protected virtual void OnDownloadFailed() + protected virtual void ThrowException() { throw new System.Exception("Restart download, downloaded file is corrupted, link = " + this.ImageLink); } diff --git a/MangaReader.Core/Services/DownloadManager.cs b/MangaReader.Core/Services/DownloadManager.cs index c5172856..ba19e5b9 100644 --- a/MangaReader.Core/Services/DownloadManager.cs +++ b/MangaReader.Core/Services/DownloadManager.cs @@ -31,14 +31,15 @@ public static async Task CheckPause() /// Ссылка на страницу манги. /// Настройки сети. /// Содержимое файла. - public static async Task DownloadImage(Uri uri, MangaSettingCache settingCache) + public static async Task DownloadImage(Uri uri, MangaSettingCache settingCache, string referer) { byte[] result; WebResponse response; var file = new ImageFile(); var request = (HttpWebRequest)WebRequest.Create(uri); - request.Referer = uri.Host; + request.Referer = referer; request.Proxy = settingCache.Proxy; + request.Accept = "image/webp,*/*"; try { @@ -47,6 +48,11 @@ public static async Task DownloadImage(Uri uri, MangaSettingCache set } catch (System.Exception ex) { + if (!string.IsNullOrEmpty(uri.Query)) + { + uri = new Uri(uri.GetLeftPart(UriPartial.Path)); + return await DownloadImage(uri, settingCache, referer); + } Log.Exception(ex, string.Format($"Загрузка {uri} не завершена. Использованы настройки прокси {settingCache.SettingType}")); return file; } diff --git a/README.md b/README.md index da09c1b6..737e08d7 100644 --- a/README.md +++ b/README.md @@ -10,7 +10,7 @@ На текущий момент поддерживаются: 1. [ReadManga](https://readmanga.live/) 2. [MintManga](https://mintmanga.live) - 3. [Hentaichan](https://y.hentaichan.live/) + 3. [Hentaichan](https://x.henchan.pro/) 4. [Acomics](https://acomics.ru) 5. [Mangachan](https://manga-chan.me/) 6. [Hentai2Read](https://hentai2read.com//) diff --git a/Sites/Grouple.ru/GroupleMangaPage.cs b/Sites/Grouple.ru/GroupleMangaPage.cs index b03fd685..dca883ce 100644 --- a/Sites/Grouple.ru/GroupleMangaPage.cs +++ b/Sites/Grouple.ru/GroupleMangaPage.cs @@ -1,6 +1,4 @@ using System; -using System.Collections.Generic; -using System.Linq; using MangaReader.Core.Manga; namespace Grouple diff --git a/Sites/Grouple.ru/GroupleParser.cs b/Sites/Grouple.ru/GroupleParser.cs index f7701579..e087e0c4 100644 --- a/Sites/Grouple.ru/GroupleParser.cs +++ b/Sites/Grouple.ru/GroupleParser.cs @@ -96,7 +96,7 @@ public override async Task UpdatePages(Chapter groupleChapter) if (node == null) return; - var initBlock = Regex.Match(node.OuterHtml, @"rm_h\.initReader\(.*?(\[\[.*?\]\])", RegexOptions.IgnoreCase); + var initBlock = Regex.Match(node.OuterHtml, @"rm_h\.readerInit\(.*?(\[\[.*?\]\])", RegexOptions.IgnoreCase); var jsonParsed = JToken.Parse(initBlock.Groups[1].Value).Children().ToList(); for (var i = 0; i < jsonParsed.Count; i++) { @@ -175,7 +175,7 @@ public override async Task UpdateContent(IManga manga) document.LoadHtml(page.Content); hasCopyrightNotice = Copyrights.Any(c => document.DocumentNode.InnerText.Contains(c)); var linkNodes = document.DocumentNode - .SelectNodes("//div[@class=\"expandable chapters-link\"]//a[contains(@class, 'chapter-link')]") + .SelectNodes("//div[@class=\"chapters-link chapters\"]//a[contains(@class, 'chapter-link')]") .Reverse() .ToList(); links = linkNodes diff --git a/Sites/Hentai2Read.com/Hentai2ReadParser.cs b/Sites/Hentai2Read.com/Hentai2ReadParser.cs index 0af5d68f..8676d765 100644 --- a/Sites/Hentai2Read.com/Hentai2ReadParser.cs +++ b/Sites/Hentai2Read.com/Hentai2ReadParser.cs @@ -33,7 +33,11 @@ public override async Task UpdateNameAndStatus(IManga manga) var client = await Hentai2ReadPlugin.Instance.GetCookieClient(true).ConfigureAwait(false); var document = new HtmlDocument(); document.LoadHtml((await client.GetPage(manga.Uri).ConfigureAwait(false)).Content); - var nameNode = document.DocumentNode.SelectSingleNode("//span[@itemprop=\"name\"]"); + var nameNode = document.DocumentNode + .SelectNodes("//div[@itemtype=\"http://schema.org/Book\"]") + .Single() + .SelectNodes(".//span[@itemprop=\"name\"]") + .Single(); if (nameNode != null) { var name = WebUtility.HtmlDecode(nameNode.InnerText); diff --git a/Sites/Hentaichan.me/Constants.cs b/Sites/Hentaichan.me/Constants.cs index e9b82c81..8ba6110d 100644 --- a/Sites/Hentaichan.me/Constants.cs +++ b/Sites/Hentaichan.me/Constants.cs @@ -6,6 +6,6 @@ namespace Hentaichan { public static class Constants { - public const string HentaichanHost = "https://y.hentaichan.live/"; + public const string HentaichanHost = "https://x.henchan.pro/"; } } diff --git a/Sites/Hentaichan.me/Convertation/HentaichanFrom51_8To51_9.cs b/Sites/Hentaichan.me/Convertation/HentaichanFrom51_8To51_9.cs new file mode 100644 index 00000000..755f2b5e --- /dev/null +++ b/Sites/Hentaichan.me/Convertation/HentaichanFrom51_8To51_9.cs @@ -0,0 +1,36 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using MangaReader.Core.Convertation; +using MangaReader.Core.Convertation.Primitives; +using MangaReader.Core.NHibernate; +using MangaReader.Core.Services.Config; + +namespace Hentaichan.me.Convertation +{ + internal class HentaichanFrom51_8To51_9 : ConfigConverter + { + protected override async Task ProtectedConvert(IProcess process) + { + using (var context = Repository.GetEntityContext()) + { + var setting = ConfigStorage.GetPlugin().GetSettings(); + var mainUri = new Uri("https://x.henchan.pro/"); + if (setting != null) + { + setting.MainUri = mainUri; + await context.Save(setting).ConfigureAwait(false); + } + } + } + + public HentaichanFrom51_8To51_9() + { + this.Version = new Version(1, 51, 9, 39); + this.CanReportProcess = false; + this.Name = "Обновляем ссылки на x.henchan.pro..."; + } + } +} diff --git a/Tests/Tests.Entities/Builder.cs b/Tests/Tests.Entities/Builder.cs index 1275dc70..5faafcb0 100644 --- a/Tests/Tests.Entities/Builder.cs +++ b/Tests/Tests.Entities/Builder.cs @@ -112,6 +112,7 @@ public static async Task Generate(InfoCacheAttribute cacheAttribute) info.Status = manga.Status; info.Description = manga.Description; + info.Name = manga.Name; return info; } diff --git a/Tests/Tests.Entities/Cache.json b/Tests/Tests.Entities/Cache.json index 363f5486..0cfa8543 100644 --- a/Tests/Tests.Entities/Cache.json +++ b/Tests/Tests.Entities/Cache.json @@ -5,7 +5,8 @@ "FilesInFolder": 6, "AllFilesUnique": true, "Description": "Комикс дополняет концовку игры Metal Gear 1, вышедшей на MSX, основываясь на финале игры Metal Gear Solid V: The Phantom Pain.", - "Status": "https://acomics.ru/~MGS-LDIOH\r\n\r\nАвтор оригинала: Shawcody34\r\nПереводчик: Sillhid\r\nКоличество выпусков: 6\r\nКоличество подписчиков: 33\r\nОфициальный сайт: http://shawcody34.tumblr.com\r\nВозрастной рейтинг: Parental guidance suggested (Не рекомендуется лицам до 10 лет)\r\nЛицензия: Нет лицензии или не CC\r\n" + "Status": "https://acomics.ru/~MGS-LDIOH\r\n\r\nАвтор оригинала: Shawcody34\r\nПереводчик: Sillhid\r\nКоличество выпусков: 6\r\nКоличество подписчиков: 33\r\nОфициальный сайт: http://shawcody34.tumblr.com\r\nВозрастной рейтинг: Parental guidance suggested (Не рекомендуется лицам до 10 лет)\r\nЛицензия: Нет лицензии или не CC\r\n", + "Name": "MGS: Последний день во Внешних Небесах" }, { "Uri": "https://acomics.ru/~supersciencefriends", @@ -13,31 +14,17 @@ "FilesInFolder": 0, "AllFilesUnique": false, "Description": "Комикс \"\r\nДрузья Супер Ученые\r\n: 2099\" является дополнением к анимационному сериалу\r\n\"Друзья Супер Ученые\"\r\n.", - "Status": "https://acomics.ru/~supersciencefriends\r\n\r\nАвтор оригинала: Tinman Creative Studios\r\nПереводчик: CrownedPenguin\r\nКоличество выпусков: 44\r\nКоличество подписчиков: 283\r\nОфициальный сайт: http://supersciencefriends.com/2099/\r\nВозрастной рейтинг: Parents strongly cautioned (Не рекомендуется лицам до 13 лет)\r\nЛицензия: Нет лицензии или не CC\r\n" + "Status": "https://acomics.ru/~supersciencefriends\r\n\r\nАвтор оригинала: Tinman Creative Studios\r\nПереводчик: CrownedPenguin\r\nКоличество выпусков: 44\r\nКоличество подписчиков: 280\r\nОфициальный сайт: http://supersciencefriends.com/2099/\r\nВозрастной рейтинг: Parents strongly cautioned (Не рекомендуется лицам до 13 лет)\r\nЛицензия: Нет лицензии или не CC\r\n", + "Name": "Super Science Friends: 2099" }, { "Uri": "https://hentai2read.com/attention_please_yamashita_shunya/", - "FolderSize": 563174, + "FolderSize": 551549, "FilesInFolder": 4, "AllFilesUnique": true, "Description": "Storyline\r\n\r\nFlight attendant genre + maid.", - "Status": "Parody -\r\nRanking 6891st\r\nStatus Completed\r\nRelease Year 2010\r\nView 115,669 views\r\nPage 4 pages\r\nAuthor YAMASHITA Shunya\r\nArtist YAMASHITA Shunya\r\nCategory Adult, Comedy, Oneshot\r\nContent Full Color, Gangbang, Group Intercourse, Maids\r\nCharacter -\r\nLanguage English\r\n" - }, - { - "Uri": "https://y.hentaichan.live/manga/12850-twisted-intent-chast-1.html", - "FolderSize": 18098126, - "FilesInFolder": 49, - "AllFilesUnique": true, - "Description": "", - "Status": "Аниме/манга League of Legends\r\nАвтор OptionalTypo\r\nПереводчик TheMaximchik\r\nЯзык На русском\r\n" - }, - { - "Uri": "https://y.hentaichan.live/manga/14212-love-and-devil-glava-25.html", - "FolderSize": 0, - "FilesInFolder": 0, - "AllFilesUnique": false, - "Description": "Конец серии + бонусная история", - "Status": "Аниме/манга Оригинальные работы\r\nАвтор Yanagi Masashi\r\nПереводчик Илион\r\nЯзык На русском\r\n" + "Status": "Parody -\r\nRanking 6891st\r\nStatus Completed\r\nRelease Year 2010\r\nView 132,096 views\r\nPage 4 pages\r\nAuthor YAMASHITA Shunya\r\nArtist YAMASHITA Shunya\r\nCategory Adult, Comedy, Oneshot\r\nContent Full Color, Gangbang, Group Intercourse, Maids\r\nCharacter -\r\nLanguage English\r\n", + "Name": "Attention Please (YAMASHITA Shunya)" }, { "Uri": "https://manga-chan.me/manga/15659-this-girlfriend-is-fiction.html", @@ -45,7 +32,8 @@ "FilesInFolder": 0, "AllFilesUnique": false, "Description": "Наш главный герой - наивный пацан, по уши влюблённый в девушку постарше чем он, которую все считают гениальным писателем. Он настолько влюбился в неё, что забыл о своем секретном хобби. Секрет заключался в том, что последние 10 лет он занимался составлением \"девушки своей мечты\". Её день рождения, индивидуальность, хобби, разговорный тон и так далее. Это всё было записано в огромной стопке бумаг. Всё это время его воображение было для него и другом, и возлюбленной, но теперь он влюблён в совсем живую и даже реальную девушку. Сделав свой выбор, он сжигает весь свой многолетний труд. К его удивлению, она была рядом. Начался дождь и в процессе беседы, она призналась, что имеет трудности с написанием своего романа из-за отсутствия опыта. С усилением шторма, наш пацанчик, заполучив информацию о её слабости, решается открыть ей свой секрет. Собрав волю в кулак, он открывает ящик, где были собраны все его записи... помимо этого в ящике была обнажённая девушка, которую он создавал на протяжении 10 лет!", - "Status": "Другие названия Kono Kanojo wa Fiction desu\r\nТип Манга\r\nАвтор Watanabe Shizumu\r\nСтатус (Томов) 4 тома, выпуск завершен\r\nЗагружено 34 глав, перевод завершен\r\nТэги эротика, сёнэн, школа, романтика, комедия, сверхъестественное\r\nПереводчики Ready Steady GO! (R.S.G.), Revolt Squad\r\n" + "Status": "Другие названия Kono Kanojo wa Fiction desu\r\nТип Манга\r\nАвтор Watanabe Shizumu\r\nСтатус (Томов) 4 тома, выпуск завершен\r\nЗагружено 34 глав, перевод завершен\r\nТэги эротика, сёнэн, школа, романтика, комедия, сверхъестественное\r\nПереводчики Ready Steady GO! (R.S.G.), Revolt Squad\r\n", + "Name": "This Girlfriend is Fiction" }, { "Uri": "https://manga-chan.me/manga/35617--rain-.html", @@ -53,7 +41,8 @@ "FilesInFolder": 16, "AllFilesUnique": true, "Description": "В дождливый день, когда Мае отказал парень, который ей нравиться она встретила красивую девушку, которая сказала что ее зовут Дождь и что она пришла из-за её слез. После этого дни Маи наполнялись горечью предательства, и только воспоминания о девушке называвшей себя Дождь успокаивало её сердце. История о любви, возникшей в дождливый сезон.", - "Status": "Другие названия -RAIN-\r\nТип Манга\r\nАвтор Hayase Hashiba\r\nСтатус (Томов) Сингл\r\nЗагружено 1 глава, перевод завершен\r\nТэги эротика, фэнтези, драма, юри, 18_плюс\r\nПереводчики Unknown\r\n" + "Status": "Другие названия -RAIN-\r\nТип Манга\r\nАвтор Hayase Hashiba\r\nСтатус (Томов) Сингл\r\nЗагружено 1 глава, перевод завершен\r\nТэги эротика, фэнтези, драма, юри, 18_плюс\r\nПереводчики Unknown\r\n", + "Name": "-RAIN-" }, { "Uri": "https://manga-chan.me/manga/64187-eve-scramble.html", @@ -61,15 +50,8 @@ "FilesInFolder": 0, "AllFilesUnique": false, "Description": "Есть девушка, способная осчастливить жизнь любого, даже проведя с ним всего лишь один день. Эта девушка, по имени Ева, когда её похитил неизвестный, присылает мне сообщение с просьбой о помощи. Однако, похоже, не я один был готов, бросив всё, бежать к ней на выручку. В действие вступает грандиозный план по вызволению Евы, разработанный особым альянсом бывших парней , который был создан с целью спасти любимую девушку!", - "Status": "Другие названия\r\nТип Манхва\r\nАвтор Hale, Gaonbi\r\nСтатус (Томов) 1 том, выпуск продолжается\r\nЗагружено 5 глав, перевод продолжается\r\nТэги драма, мистика, романтика, ужасы, веб\r\nПереводчики Disolver el lirio, Black Rosarium\r\n" - }, - { - "Uri": "https://mintmanga.live/chia_chia", - "FolderSize": 98811565, - "FilesInFolder": 212, - "AllFilesUnique": false, - "Description": "На месте Оджи мечтал бы оказаться каждый, ведь он - единственный парень в частной женской академии Отохиме. Благодаря тому, что парень - сын директора, ему всё сходит с рук, будь то скрытые камеры в раздевалке или же заглядывание под юбки с фотокамерой в руках. Но всё хорошее когда-нибудь заканчивается. Директор принял решение, что в следующем году школа примет участие в национальном чемпионате по бейсболу и попадёт в Кошиэн. Для этого академию сделают смешанной, но примут только перспективных бейсболистов. Нашему же герою поручили вместе с президентом студсовета Ицуки собрать группу поддержки. Что же будет делать Оджи? Сможет ли он сберечь свой рай?", - "Status": "Томов: 1, завершено\r\nПеревод: переведено\r\nЖанры: школа, спорт, этти, сэйнэн\r\nКатегория: Манга\r\nАвтор: Мицунага Ясунори\r\nГод выпуска: 2008\r\nПрочее: Не Яой\r\nЖурнал: Young Animal Island\r\nИздательство: Hakusensha\r\nПереводчики: Memory’s Fading Glimpse, Majin Scanlation\r\n" + "Status": "Другие названия\r\nТип Манхва\r\nАвтор Hale, Gaonbi\r\nСтатус (Томов) 1 том, выпуск продолжается\r\nЗагружено 5 глав, перевод продолжается\r\nТэги драма, мистика, романтика, ужасы, веб\r\nПереводчики Disolver el lirio, Black Rosarium\r\n", + "Name": "Eve Scramble" }, { "Uri": "https://mintmanga.live/love_mate", @@ -77,7 +59,17 @@ "FilesInFolder": 0, "AllFilesUnique": false, "Description": "Ямато, приехал учиться в высшей школе в Токио из предместья Хиросимы. По пути к своей тёте, у которой он поселился на время учёбы, встречает красивую девушку и влюбляется в нее с первого взгляда. Позже оказывается, что девушка — его соседка, зовут её Судзука, и она поступила в ту же высшую школу. Он пытается привлечь её внимание, и даже вступает в команду по лёгкой атлетике, в которой она состоит.", - "Status": "Томов: 18, завершено\r\nПеревод: переведено\r\nЖанры: сёнэн, гарем, романтика, повседневность, драма, школа, спорт, этти …\r\nКатегория: Манга\r\nАвтор: Сэо Кодзи\r\nГод выпуска: 2003\r\nПрочее: Не Яой\r\nИздательство: Kodansha\r\nЖурнал: Shuukan Shounen Magazine\r\nПереводчики: Ной Студия, AngelVan, cheer_less\r\nПопулярность:\r\n" + "Status": "Томов: 18, завершено\r\nПеревод: переведено\r\nЖанры: спорт, повседневность, этти, школа, романтика, драма, сёнэн, гарем …\r\nКатегория: Манга\r\nАвтор: Сэо Кодзи\r\nГод выпуска: 2003\r\nВозрастная рекомендация: NC-17\r\nПрочее: Не Яой\r\nИздательство: Kodansha\r\nЖурнал: Shuukan Shounen Magazine\r\nПереводчики: Ной Студия, AngelVan, cheer_less\r\nПопулярность:\r\n", + "Name": "Love Mate" + }, + { + "Uri": "https://mintmanga.live/persefona", + "FolderSize": 40225698, + "FilesInFolder": 21, + "AllFilesUnique": false, + "Description": "", + "Status": "Томов: 1, завершено\r\nПеревод: переведено\r\nЖанры: дзёсэй, фэнтези, драма, история\r\nКатегория: Манхва\r\nАвтор: Гера\r\nГод выпуска: 2022\r\nВозрастная рекомендация: R\r\nПрочее: Не Яой, Веб\r\nТеги: ГГ женщина, Зверолюди, Насилие, Мать и дочь, Разумные расы\r\nПереводчик: Melinoie Team\r\n", + "Name": "Persephone" }, { "Uri": "https://readmanga.live/kuroshitsuji_dj___black_sheep", @@ -85,7 +77,8 @@ "FilesInFolder": 110, "AllFilesUnique": false, "Description": "Все знают безупречного дворецкого поместья Фантомхайв. Но подождите...в этой истории что-то не так... что здесь забыла овца?!", - "Status": "Томов: 1, завершено\r\nПеревод: переведено\r\nКатегории: Манга, Додзинси\r\nАвтор: Kiyo\r\nВозрастная рекомендация: PG-13\r\nПереводчик: Manga-Kya\r\n" + "Status": "Томов: 1, завершено\r\nПеревод: переведено\r\nКатегории: Додзинси, Манга\r\nАвтор: Kiyo\r\nВозрастная рекомендация: PG-13\r\nПереводчик: Manga-Kya\r\n", + "Name": "Kuroshitsuji dj - Black Sheep" }, { "Uri": "https://readmanga.live/love_mate_2", @@ -93,6 +86,25 @@ "FilesInFolder": 0, "AllFilesUnique": false, "Description": "4-кадровая манга дополнительно включенная в тома манги \"Город,в котором ты живешь\"", - "Status": "Томов: 1, завершено\r\nПеревод: переведено\r\nЖанры: комедия, повседневность\r\nКатегории: Манга, Ёнкома\r\nАвтор: Сэо Кодзи\r\nГод выпуска: 2008\r\nИздательство: Kodansha\r\nПереводчик: Aoshi Shinomori\r\n" + "Status": "Томов: 1, завершено\r\nПеревод: переведено\r\nЖанры: повседневность, комедия\r\nКатегории: Ёнкома, Манга\r\nАвтор: Сэо Кодзи\r\nГод выпуска: 2008\r\nИздательство: Kodansha\r\nПереводчик: Aoshi Shinomori\r\n", + "Name": "Love Mate 2" + }, + { + "Uri": "https://x.henchan.pro/manga/12850-twisted-intent-chast-1.html", + "FolderSize": 0, + "FilesInFolder": 0, + "AllFilesUnique": false, + "Description": "", + "Status": "Аниме/манга League of Legends\r\nАвтор OptionalTypo\r\nПереводчик TheMaximchik\r\nЯзык На русском\r\n", + "Name": "Twisted Intent" + }, + { + "Uri": "https://x.henchan.pro/manga/30720-yankee-my-home.html", + "FolderSize": 12983432, + "FilesInFolder": 22, + "AllFilesUnique": true, + "Description": "", + "Status": "Аниме/манга Оригинальные работы\r\nАвтор Kawaisaw\r\nПереводчик BLANDR\r\nЯзык На русском\r\n", + "Name": "YANKEE MY HOME!" } ] diff --git a/Tests/Tests.Entities/MangaInfo.cs b/Tests/Tests.Entities/MangaInfo.cs index 80fbc96f..dec4b2f9 100644 --- a/Tests/Tests.Entities/MangaInfo.cs +++ b/Tests/Tests.Entities/MangaInfo.cs @@ -14,9 +14,11 @@ public struct MangaInfo public string Status; + public string Name; + public override string ToString() { return Uri; } } -} \ No newline at end of file +} diff --git a/Tests/Tests.Entities/MangaInfos.cs b/Tests/Tests.Entities/MangaInfos.cs index e09a3369..441b3b6b 100644 --- a/Tests/Tests.Entities/MangaInfos.cs +++ b/Tests/Tests.Entities/MangaInfos.cs @@ -17,11 +17,11 @@ public static class Acomics public static class Henchan { - [InfoCache("https://y.hentaichan.live/manga/12850-twisted-intent-chast-1.html", true)] - public static MangaInfo TwistedIntent; + [InfoCache("https://x.henchan.pro/manga/30720-yankee-my-home.html", true)] + public static MangaInfo YankeeMyHome; - [InfoCache("https://y.hentaichan.live/manga/14212-love-and-devil-glava-25.html", false)] - public static MangaInfo LoveAndDevil; + [InfoCache("https://x.henchan.pro/manga/12850-twisted-intent-chast-1.html", false)] + public static MangaInfo TwistedIntent; } public static class Mangachan @@ -47,8 +47,8 @@ public static class Readmanga public static class Mintmanga { - [InfoCache("https://mintmanga.live/chia_chia", true)] - public static MangaInfo ChiaChia; + [InfoCache("https://mintmanga.live/persefona", true)] + public static MangaInfo Persefona; [InfoCache("https://mintmanga.live/love_mate", false)] public static MangaInfo LoveMate; diff --git a/Tests/Tests.Entities/MangaTest.cs b/Tests/Tests.Entities/MangaTest.cs index 58a4de7b..73a3b8bf 100644 --- a/Tests/Tests.Entities/MangaTest.cs +++ b/Tests/Tests.Entities/MangaTest.cs @@ -24,12 +24,12 @@ private static IEnumerable MangaToDownload() { MangaInfos.Init(); yield return MangaInfos.Acomics.MgsLdioh; - yield return MangaInfos.Henchan.TwistedIntent; + yield return MangaInfos.Henchan.YankeeMyHome; yield return MangaInfos.Mangachan.Rain; if (!AppveyorHelper.IsRunning()) { yield return MangaInfos.Hentai2Read.AttentionPlease; - yield return MangaInfos.Mintmanga.ChiaChia; + yield return MangaInfos.Mintmanga.Persefona; yield return MangaInfos.Readmanga.Kuroshitsuji; } } @@ -38,7 +38,7 @@ private static IEnumerable MangaToValidateStatusAndDescription() { MangaInfos.Init(); yield return new TestCaseData(MangaInfos.Acomics.SuperScienceFriends); - yield return new TestCaseData(MangaInfos.Henchan.LoveAndDevil); + yield return new TestCaseData(MangaInfos.Henchan.YankeeMyHome); yield return new TestCaseData(MangaInfos.Hentai2Read.AttentionPlease); yield return new TestCaseData(MangaInfos.Mangachan.ThisGirlfriendIsFiction); yield return new TestCaseData(MangaInfos.Mangachan.EveScramble).SetDescription("html codes in description"); @@ -94,6 +94,7 @@ public async Task ValidateStatusAndDescription(MangaInfo mangaInfo) manga = await Mangas.CreateFromWeb(mangaUri).ConfigureAwait(false); } + Assert.AreEqual(mangaInfo.Name, manga.Name); Assert.AreEqual(mangaInfo.Description, manga.Description); if (Equals(mangaInfo.Status, manga.Status)) Assert.Pass(); @@ -117,7 +118,10 @@ public async Task GenerateInfoForTests() var completedTasks = tasks.Select(t => t.ContinueWith(task => { if (task.Exception != null) + { + Log.Exception(task.Exception); return; + } infos.Add(task.Result); })).ToArray(); diff --git a/VersionInfo.cs b/VersionInfo.cs index 1eef5d5d..809cb73a 100644 --- a/VersionInfo.cs +++ b/VersionInfo.cs @@ -5,10 +5,10 @@ // associated with an assembly. [assembly: AssemblyCompany("Intruders")] [assembly: AssemblyProduct("MangaReader")] -[assembly: AssemblyCopyright("Copyright © Intruders 2014-2022")] +[assembly: AssemblyCopyright("Copyright © Intruders 2014-2023")] [assembly: AssemblyDescription("")] [assembly: AssemblyConfiguration("")] [assembly: AssemblyTrademark("")] [assembly: AssemblyCulture("")] -[assembly: AssemblyVersion("1.51.8.38")] +[assembly: AssemblyVersion("1.51.9.39")]