From cd9f65596b51025c6cea6d7a8291fb1aa0cd1dd8 Mon Sep 17 00:00:00 2001 From: devi Date: Sat, 20 Jul 2024 19:57:45 +0200 Subject: [PATCH] Add some sources Fix some sources Add @Broken on some sources close #909 #912 #920 #910 #914 #916 --- .../kotatsu/parsers/site/en/ComicExtra.kt | 2 +- .../kotatsu/parsers/site/en/ReaperComics.kt | 15 +- .../parsers/site/heancms/pt/ModeScanlator.kt | 9 +- .../parsers/site/keyoapp/en/EzManga.kt | 1 - .../parsers/site/keyoapp/en/KewnScans.kt | 1 - .../parsers/site/keyoapp/en/LaidBackScans.kt | 1 - .../parsers/site/keyoapp/en/NecroScans.kt | 10 ++ .../parsers/site/keyoapp/fr/AnteikuScan.kt | 1 - .../parsers/site/keyoapp/fr/Astrames.kt | 1 - .../parsers/site/keyoapp/fr/EdScanlation.kt | 1 - .../parsers/site/madara/MadaraParser.kt | 10 +- .../parsers/site/madara/ar/RocksManga.kt | 1 - .../parsers/site/madara/en/AryaScans.kt | 10 ++ .../parsers/site/madara/en/AsuraScansGg.kt | 10 ++ .../parsers/site/madara/en/BibiManga.kt | 2 + .../parsers/site/madara/en/BoysLove.kt | 2 + .../kotatsu/parsers/site/madara/en/CoComic.kt | 11 ++ .../parsers/site/madara/en/GedeComix.kt | 14 ++ .../parsers/site/madara/en/HentaixYuri.kt | 2 +- .../parsers/site/madara/en/HunLight.kt | 10 ++ .../parsers/site/madara/en/Manga18Xyz.kt | 2 + .../parsers/site/madara/en/MangaHall.kt | 11 ++ .../parsers/site/madara/en/MangaZin.kt | 10 ++ .../kotatsu/parsers/site/madara/en/MmScans.kt | 3 +- .../parsers/site/madara/en/StoneScape.kt | 1 - .../parsers/site/madara/en/TcbScansManga.kt | 1 - .../parsers/site/madara/en/TeenManhua.kt | 2 + .../kotatsu/parsers/site/madara/en/UToon.kt | 12 ++ .../kotatsu/parsers/site/madara/en/YaoiHub.kt | 11 ++ .../parsers/site/madara/en/ZinChanManga.kt | 1 - .../parsers/site/madara/en/ZinMangaCc.kt | 10 ++ .../parsers/site/madara/en/ZinMangaCom.kt | 12 ++ .../parsers/site/madara/en/ZinMangaMS.kt | 13 ++ .../parsers/site/madara/en/Zinmanga.kt | 2 +- .../parsers/site/madara/es/DoujinShell.kt | 16 ++ .../parsers/site/madara/es/HaremScann.kt | 12 ++ .../parsers/site/madara/es/InmoralNoFansub.kt | 12 ++ .../site/madara/es/JeazTwoBlueScans.kt | 12 ++ .../kotatsu/parsers/site/madara/es/Jobsibe.kt | 12 ++ .../parsers/site/madara/es/Kenhuav2Scan.kt | 2 + .../parsers/site/madara/es/LkScanlation.kt | 2 + .../kotatsu/parsers/site/madara/es/Marmota.kt | 15 ++ .../parsers/site/madara/es/Panconcola.kt | 13 ++ .../parsers/site/madara/es/SapphireScan.kt | 10 ++ .../parsers/site/madara/es/TerritorioLeal.kt | 12 ++ .../parsers/site/madara/fr/HarmonyScan.kt | 1 - .../parsers/site/madara/fr/HentaiOrigines.kt | 1 - .../parsers/site/madara/fr/ScanHentai.kt | 13 ++ .../parsers/site/madara/id/Shinigami.kt | 3 +- .../parsers/site/madara/id/Yubikiri.kt | 13 ++ .../parsers/site/madara/id/YuraManga.kt | 13 ++ .../parsers/site/madara/ja/MangaFenxi.kt | 14 ++ .../kotatsu/parsers/site/madara/ja/RawXz.kt | 12 ++ .../parsers/site/madara/pl/MangaHona.kt | 12 ++ .../parsers/site/madara/pt/AloneScanlator.kt | 12 ++ .../parsers/site/madara/pt/ArgosComics.kt | 12 ++ .../parsers/site/madara/pt/Atemporal.kt | 13 ++ .../parsers/site/madara/pt/BurningScans.kt | 2 + .../parsers/site/madara/pt/DreamScan.kt | 1 - .../parsers/site/madara/pt/EuphoriaScan.kt | 13 ++ .../parsers/site/madara/pt/FenixProject.kt | 12 ++ .../parsers/site/madara/pt/GekkouScans.kt | 2 + .../parsers/site/madara/pt/LadyestelarScan.kt | 2 + .../parsers/site/madara/pt/LeitorDeManga.kt | 1 - .../parsers/site/madara/pt/LeitorKamisama.kt | 2 +- .../parsers/site/madara/pt/LerHentai.kt | 13 ++ .../parsers/site/madara/pt/LichMangas.kt | 12 ++ .../parsers/site/madara/pt/MaidSecret.kt | 1 - .../parsers/site/madara/pt/MangaNinja.kt | 1 - .../parsers/site/madara/pt/Manhastro.kt | 31 +++- .../parsers/site/madara/pt/Prismahentai.kt | 2 + .../site/madara/pt/ProjetoScanlator.kt | 2 + .../parsers/site/madara/tr/Atikrost.kt | 12 ++ .../parsers/site/madara/tr/DeccalScans.kt | 13 ++ .../parsers/site/madara/tr/EsoManga.kt | 2 + .../parsers/site/madara/tr/GarciaManga.kt | 12 ++ .../parsers/site/madara/tr/ImparatorManga.kt | 10 ++ .../parsers/site/madara/tr/Jellyring.kt | 10 ++ .../parsers/site/madara/tr/KabusManga.kt | 12 ++ .../kotatsu/parsers/site/madara/tr/Kedi.kt | 13 ++ .../parsers/site/madara/tr/LaviniaFansub.kt | 45 +++++ .../parsers/site/madara/tr/MangaWtNet.kt | 10 ++ .../parsers/site/madara/tr/Mangaoku.kt | 2 + .../kotatsu/parsers/site/madara/tr/Mangawt.kt | 2 +- .../kotatsu/parsers/site/madara/tr/MilaSub.kt | 1 - .../parsers/site/madara/tr/NiveraFansub.kt | 2 +- .../parsers/site/madara/tr/OpiaToon.kt | 1 - .../site/madara/tr/PiedPiperFansubyy.kt | 13 ++ .../parsers/site/madara/tr/YaoiMangaOku.kt | 13 ++ .../kotatsu/parsers/site/madara/tr/YaoiTr.kt | 2 +- .../parsers/site/madara/tr/ZamanManga.kt | 12 ++ .../parsers/site/madara/vi/Fecomicc.kt | 14 ++ .../parsers/site/madara/vi/PinkTeaComic.kt | 12 ++ .../parsers/site/madara/vi/TruyenVn.kt | 15 ++ .../parsers/site/manga18/Manga18Parser.kt | 6 +- .../parsers/site/manga18/en/Comic1000.kt | 2 + .../site/mangareader/MangaReaderParser.kt | 8 +- .../parsers/site/mangareader/ar/NoonScan.kt | 10 ++ .../parsers/site/mangareader/ar/Normoyun.kt | 24 +-- .../site/mangareader/ar/PotatoManga.kt | 2 + .../site/mangareader/en/CosmicScansParser.kt | 2 + .../parsers/site/mangareader/en/DrakeScans.kt | 4 +- .../site/mangareader/en/EnThunderScans.kt | 19 +++ .../parsers/site/mangareader/en/ErosScans.kt | 1 - .../parsers/site/mangareader/en/FuryManga.kt | 14 ++ .../site/mangareader/en/MangaGalaxyParser.kt | 52 +----- .../parsers/site/mangareader/en/MangaGojo.kt | 10 ++ .../site/mangareader/en/ReadersPoint.kt | 8 +- .../parsers/site/mangareader/en/RizzComic.kt | 4 +- .../parsers/site/mangareader/en/ShojoScans.kt | 12 ++ .../site/mangareader/en/SpiderScans.kt | 10 ++ .../parsers/site/mangareader/es/Bymichiby.kt | 11 ++ .../parsers/site/mangareader/es/Doujins.kt | 14 ++ .../parsers/site/mangareader/es/DtupScan.kt | 10 ++ .../site/mangareader/es/HentaiReader.kt | 131 +++++++++++++++ .../es/{NekoScans.kt => InariPikav.kt} | 8 +- .../site/mangareader/es/LectorHentai.kt | 123 ++++++++++++++ .../parsers/site/mangareader/es/MangaTv.kt | 120 +++++++++++++ .../parsers/site/mangareader/es/RagnaScan.kt | 2 + .../parsers/site/mangareader/es/UkiyoToon.kt | 12 ++ .../site/mangareader/fr/EtheralRadiance.kt | 30 ++++ .../site/mangareader/fr/RevolutionScantrad.kt | 158 +++++++++++++++++ .../parsers/site/mangareader/fr/RimuScans.kt | 1 - .../mangareader/fr/XxxRevolutionScantrad.kt | 159 ++++++++++++++++++ .../parsers/site/mangareader/id/Comic21.kt | 14 ++ .../parsers/site/mangareader/id/KomBatch.kt | 13 ++ .../parsers/site/mangareader/id/KomikGo.kt | 11 ++ .../site/mangareader/id/KomikLovers.kt | 14 ++ .../parsers/site/mangareader/id/KomikPix.kt | 13 ++ .../parsers/site/mangareader/id/KomikPoi.kt | 15 ++ .../parsers/site/mangareader/id/Kyumik.kt | 11 ++ .../site/mangareader/id/ManhwaIndoIcu.kt | 5 +- .../site/mangareader/id/ManhwaIndoParser.kt | 8 +- .../parsers/site/mangareader/id/ManhwaLand.kt | 5 +- .../site/mangareader/id/ManhwaLandInk.kt | 20 +++ .../parsers/site/mangareader/id/MiHentai.kt | 1 - .../site/mangareader/pt/AncientComics.kt | 16 ++ .../site/mangareader/th/DragonManga.kt | 17 ++ .../site/mangareader/th/EcchiDoujin.kt | 14 ++ .../parsers/site/mangareader/th/Makimaaaaa.kt | 12 ++ .../parsers/site/mangareader/th/NtrManga.kt | 13 ++ .../site/mangareader/th/TanukiManga.kt | 18 ++ .../parsers/site/mangareader/tr/AduManga.kt | 14 ++ .../site/mangareader/tr/AsemiFansub.kt | 10 ++ .../site/mangareader/tr/AthenaManga.kt | 12 ++ .../parsers/site/mangareader/tr/GaiaToon.kt | 12 ++ .../site/mangareader/tr/MangaGezgini.kt | 2 + .../site/mangareader/tr/MangaSiginagi.kt | 10 ++ .../parsers/site/mangareader/tr/SereinScan.kt | 10 ++ .../site/mangareader/tr/ShijieScans.kt | 12 ++ .../site/mangareader/tr/ZenithScans.kt | 12 ++ .../parsers/site/mmrcms/en/BananaScan.kt | 1 - .../parsers/site/nepnep/NepnepParser.kt | 8 +- .../kotatsu/parsers/site/pt/LerManga.kt | 2 + .../kotatsu/parsers/site/pt/LerMangaOnline.kt | 2 + .../kotatsu/parsers/site/pt/MuitoHentai.kt | 2 +- .../kotatsu/parsers/site/pt/OnePieceEx.kt | 2 + .../kotatsu/parsers/site/ru/MangaWtfParser.kt | 2 +- .../parsers/site/ru/multichan/ChanParser.kt | 2 +- .../parsers/site/ru/rulib/LibSocialParser.kt | 4 +- .../parsers/site/scan/it/MangaItalia.kt | 1 - .../kotatsu/parsers/site/scan/pt/MangaBr.kt | 1 - .../parsers/site/scan/pt/MangaTerra.kt | 1 - .../parsers/site/vi/TruyentranhLHParser.kt | 2 + .../parsers/site/wpcomics/WpComicsParser.kt | 2 +- .../site/zeistmanga/ZeistMangaParser.kt | 12 +- .../parsers/site/zeistmanga/ar/ArabsDoujin.kt | 11 ++ .../site/zeistmanga/es/GistamisHouseFansub.kt | 15 ++ .../parsers/site/zeistmanga/es/NekoScans.kt | 10 ++ .../parsers/site/zeistmanga/id/IchiroManga.kt | 10 ++ .../parsers/site/zeistmanga/id/Kishisan.kt | 10 ++ .../parsers/site/zeistmanga/id/Nimemob.kt | 10 ++ .../parsers/site/zeistmanga/id/ReYume.kt | 10 ++ .../parsers/site/zeistmanga/id/Sobatmanku.kt | 2 +- .../parsers/site/zeistmanga/pt/GalaxScans.kt | 4 +- .../parsers/site/zeistmanga/pt/RaysScan.kt | 1 - .../parsers/site/zeistmanga/pt/SolooScan.kt | 1 - .../site/zeistmanga/pt/TemakiMangas.kt | 1 - .../parsers/site/zeistmanga/pt/YaoiFanClub.kt | 14 ++ 179 files changed, 2027 insertions(+), 164 deletions(-) create mode 100644 src/main/kotlin/org/koitharu/kotatsu/parsers/site/keyoapp/en/NecroScans.kt create mode 100644 src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/AryaScans.kt create mode 100644 src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/AsuraScansGg.kt create mode 100644 src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/CoComic.kt create mode 100644 src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/GedeComix.kt create mode 100644 src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/HunLight.kt create mode 100644 src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/MangaHall.kt create mode 100644 src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/MangaZin.kt create mode 100644 src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/UToon.kt create mode 100644 src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/YaoiHub.kt create mode 100644 src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/ZinMangaCc.kt create mode 100644 src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/ZinMangaCom.kt create mode 100644 src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/ZinMangaMS.kt create mode 100644 src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/DoujinShell.kt create mode 100644 src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/HaremScann.kt create mode 100644 src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/InmoralNoFansub.kt create mode 100644 src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/JeazTwoBlueScans.kt create mode 100644 src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/Jobsibe.kt create mode 100644 src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/Marmota.kt create mode 100644 src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/Panconcola.kt create mode 100644 src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/SapphireScan.kt create mode 100644 src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/TerritorioLeal.kt create mode 100644 src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/fr/ScanHentai.kt create mode 100644 src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/id/Yubikiri.kt create mode 100644 src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/id/YuraManga.kt create mode 100644 src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/ja/MangaFenxi.kt create mode 100644 src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/ja/RawXz.kt create mode 100644 src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pl/MangaHona.kt create mode 100644 src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/AloneScanlator.kt create mode 100644 src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/ArgosComics.kt create mode 100644 src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/Atemporal.kt create mode 100644 src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/EuphoriaScan.kt create mode 100644 src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/FenixProject.kt create mode 100644 src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/LerHentai.kt create mode 100644 src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/LichMangas.kt create mode 100644 src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/Atikrost.kt create mode 100644 src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/DeccalScans.kt create mode 100644 src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/GarciaManga.kt create mode 100644 src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/ImparatorManga.kt create mode 100644 src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/Jellyring.kt create mode 100644 src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/KabusManga.kt create mode 100644 src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/Kedi.kt create mode 100644 src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/MangaWtNet.kt create mode 100644 src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/PiedPiperFansubyy.kt create mode 100644 src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/YaoiMangaOku.kt create mode 100644 src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/ZamanManga.kt create mode 100644 src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/vi/Fecomicc.kt create mode 100644 src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/vi/PinkTeaComic.kt create mode 100644 src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/vi/TruyenVn.kt create mode 100644 src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/ar/NoonScan.kt create mode 100644 src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/EnThunderScans.kt create mode 100644 src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/FuryManga.kt create mode 100644 src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/MangaGojo.kt create mode 100644 src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/ShojoScans.kt create mode 100644 src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/SpiderScans.kt create mode 100644 src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/es/Bymichiby.kt create mode 100644 src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/es/Doujins.kt create mode 100644 src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/es/DtupScan.kt create mode 100644 src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/es/HentaiReader.kt rename src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/es/{NekoScans.kt => InariPikav.kt} (54%) create mode 100644 src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/es/LectorHentai.kt create mode 100644 src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/es/MangaTv.kt create mode 100644 src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/es/UkiyoToon.kt create mode 100644 src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/fr/EtheralRadiance.kt create mode 100644 src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/fr/RevolutionScantrad.kt create mode 100644 src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/fr/XxxRevolutionScantrad.kt create mode 100644 src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/Comic21.kt create mode 100644 src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/KomBatch.kt create mode 100644 src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/KomikGo.kt create mode 100644 src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/KomikLovers.kt create mode 100644 src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/KomikPix.kt create mode 100644 src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/KomikPoi.kt create mode 100644 src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/Kyumik.kt create mode 100644 src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/ManhwaLandInk.kt create mode 100644 src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/pt/AncientComics.kt create mode 100644 src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/th/DragonManga.kt create mode 100644 src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/th/EcchiDoujin.kt create mode 100644 src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/th/Makimaaaaa.kt create mode 100644 src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/th/NtrManga.kt create mode 100644 src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/th/TanukiManga.kt create mode 100644 src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/tr/AduManga.kt create mode 100644 src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/tr/AsemiFansub.kt create mode 100644 src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/tr/AthenaManga.kt create mode 100644 src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/tr/GaiaToon.kt create mode 100644 src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/tr/MangaSiginagi.kt create mode 100644 src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/tr/SereinScan.kt create mode 100644 src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/tr/ShijieScans.kt create mode 100644 src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/tr/ZenithScans.kt create mode 100644 src/main/kotlin/org/koitharu/kotatsu/parsers/site/zeistmanga/ar/ArabsDoujin.kt create mode 100644 src/main/kotlin/org/koitharu/kotatsu/parsers/site/zeistmanga/es/GistamisHouseFansub.kt create mode 100644 src/main/kotlin/org/koitharu/kotatsu/parsers/site/zeistmanga/es/NekoScans.kt create mode 100644 src/main/kotlin/org/koitharu/kotatsu/parsers/site/zeistmanga/id/IchiroManga.kt create mode 100644 src/main/kotlin/org/koitharu/kotatsu/parsers/site/zeistmanga/id/Kishisan.kt create mode 100644 src/main/kotlin/org/koitharu/kotatsu/parsers/site/zeistmanga/id/Nimemob.kt create mode 100644 src/main/kotlin/org/koitharu/kotatsu/parsers/site/zeistmanga/id/ReYume.kt create mode 100644 src/main/kotlin/org/koitharu/kotatsu/parsers/site/zeistmanga/pt/YaoiFanClub.kt diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/en/ComicExtra.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/en/ComicExtra.kt index 8d961b411..fc46dbae3 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/en/ComicExtra.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/en/ComicExtra.kt @@ -20,7 +20,7 @@ internal class ComicExtra(context: MangaLoaderContext) : PagedMangaParser(contex override val availableStates: Set = EnumSet.of(MangaState.ONGOING, MangaState.FINISHED) - override val configKeyDomain = ConfigKey.Domain("comicextra.org") + override val configKeyDomain = ConfigKey.Domain("comixextra.com") override val isMultipleTagsSupported = false diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/en/ReaperComics.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/en/ReaperComics.kt index 65f6887c1..2c437996c 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/en/ReaperComics.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/en/ReaperComics.kt @@ -23,7 +23,6 @@ import java.text.SimpleDateFormat import java.util.* import kotlin.random.Random -private const val TOO_MANY_REQUESTS = 429 private const val MAX_RETRY_COUNT = 5 private val JSON_MEDIA_TYPE get() = "application/json; charset=utf-8".toMediaType() @@ -157,9 +156,9 @@ internal class ReaperComics(context: MangaLoaderContext) : keys.add(userAgentKey) } - private fun chapterListNextPageSelector(): String = "button[wire:click*=nextPage]" + private val chapterListNextPageSelector: String = "button[wire:click*=nextPage]" - private fun chapterListSelector() = "div[wire:id] > div > ul[role=list] > li" + private val chapterListSelector: String = "div[wire:id] > div > ul[role=list] > li" override suspend fun getDetails(manga: Manga): Manga { val cachedChapters = chapterCache[manga.url] @@ -171,9 +170,9 @@ internal class ReaperComics(context: MangaLoaderContext) : val simpleDateFormat = SimpleDateFormat("dd/MM/yyyy", sourceLocale) var totalChapters = (doc.selectFirst(selectTotalChapter)?.text()?.toFloatOrNull() ?: 0f) - 1f val chapters = mutableSetOf() - var hasNextPage = doc.selectFirst(chapterListNextPageSelector()) != null + var hasNextPage = doc.selectFirst(chapterListNextPageSelector) != null chapters.addAll( - doc.select(chapterListSelector()).mapChapters { _, li -> + doc.select(chapterListSelector).mapChapters { _, li -> val a = li.selectFirstOrThrow("a") val chapterUrl = a.attr("href").toRelativeUrl(domain) MangaChapter( @@ -218,7 +217,7 @@ internal class ReaperComics(context: MangaLoaderContext) : var pageToQuery = 2 // Javascript: (Math.random() + 1).toString(36).substring(8) - val generateId = { -> + val generateId = { "1.${ Random.nextLong().toString(36) }".substring(10) @@ -248,7 +247,7 @@ internal class ReaperComics(context: MangaLoaderContext) : serverMemo = mergeLeft(serverMemo, responseData.serverMemo) val chaptersHtml = Jsoup.parse(responseData.effects.html, "https://$domain") chapters.addAll( - chaptersHtml.select(chapterListSelector()).mapChapters { _, li -> + chaptersHtml.select(chapterListSelector).mapChapters { _, li -> val a = li.selectFirstOrThrow("a") val chapterUrl = a.attr("href").toRelativeUrl(domain) MangaChapter( @@ -267,7 +266,7 @@ internal class ReaperComics(context: MangaLoaderContext) : ) }, ) - hasNextPage = chaptersHtml.selectFirst(chapterListNextPageSelector()) != null + hasNextPage = chaptersHtml.selectFirst(chapterListNextPageSelector) != null pageToQuery++ } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/heancms/pt/ModeScanlator.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/heancms/pt/ModeScanlator.kt index d6a204f72..69c46421a 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/heancms/pt/ModeScanlator.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/heancms/pt/ModeScanlator.kt @@ -13,12 +13,13 @@ import java.util.* @MangaSourceParser("MODESCANLATOR", "ModeScanlator", "pt") internal class ModeScanlator( context: MangaLoaderContext, -) : HeanCms(context, MangaParserSource.MODESCANLATOR, "modescanlator.com") { +) : HeanCms(context, MangaParserSource.MODESCANLATOR, "site.modescanlator.net") { + private val domainNoSite = domain.removePrefix("site.") override suspend fun getListPage(page: Int, filter: MangaListFilter?): List { val url = buildString { append("https://api.") - append(domain) + append(domainNoSite) append("/query?adult=true&query_string=") when (filter) { is MangaListFilter.Search -> { @@ -70,7 +71,7 @@ internal class ModeScanlator( val cover = if (j.getString("thumbnail").contains('/')) { j.getString("thumbnail") } else { - "https://api.$domain/${j.getString("thumbnail")}" + "https://api.$domainNoSite/${j.getString("thumbnail")}" } Manga( id = j.getLong("id"), @@ -100,7 +101,7 @@ internal class ModeScanlator( override suspend fun getDetails(manga: Manga): Manga { val url = buildString { append("https://api.") - append(domain) + append(domainNoSite) append("/chapter/query?perPage=9999&series_id=") append(manga.id) } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/keyoapp/en/EzManga.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/keyoapp/en/EzManga.kt index af39deb61..aa4de090e 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/keyoapp/en/EzManga.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/keyoapp/en/EzManga.kt @@ -3,7 +3,6 @@ package org.koitharu.kotatsu.parsers.site.keyoapp.en import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser import org.koitharu.kotatsu.parsers.model.MangaParserSource -import org.koitharu.kotatsu.parsers.model.MangaSource import org.koitharu.kotatsu.parsers.site.keyoapp.KeyoappParser @MangaSourceParser("EZMANGA", "EzManga", "en") diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/keyoapp/en/KewnScans.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/keyoapp/en/KewnScans.kt index 6aaca30f1..2d6f28c84 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/keyoapp/en/KewnScans.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/keyoapp/en/KewnScans.kt @@ -3,7 +3,6 @@ package org.koitharu.kotatsu.parsers.site.keyoapp.en import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser import org.koitharu.kotatsu.parsers.model.MangaParserSource -import org.koitharu.kotatsu.parsers.model.MangaSource import org.koitharu.kotatsu.parsers.site.keyoapp.KeyoappParser @MangaSourceParser("KEWNSCANS", "KewnScans", "en") diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/keyoapp/en/LaidBackScans.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/keyoapp/en/LaidBackScans.kt index 2cd8c57b7..d924bb23c 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/keyoapp/en/LaidBackScans.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/keyoapp/en/LaidBackScans.kt @@ -3,7 +3,6 @@ package org.koitharu.kotatsu.parsers.site.keyoapp.en import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser import org.koitharu.kotatsu.parsers.model.MangaParserSource -import org.koitharu.kotatsu.parsers.model.MangaSource import org.koitharu.kotatsu.parsers.site.keyoapp.KeyoappParser @MangaSourceParser("LAIDBACKSCANS", "LaidBackScans", "en") diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/keyoapp/en/NecroScans.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/keyoapp/en/NecroScans.kt new file mode 100644 index 000000000..2cd4767a8 --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/keyoapp/en/NecroScans.kt @@ -0,0 +1,10 @@ +package org.koitharu.kotatsu.parsers.site.keyoapp.en + +import org.koitharu.kotatsu.parsers.MangaLoaderContext +import org.koitharu.kotatsu.parsers.MangaSourceParser +import org.koitharu.kotatsu.parsers.model.MangaParserSource +import org.koitharu.kotatsu.parsers.site.keyoapp.KeyoappParser + +@MangaSourceParser("NECROSCANS", "NecroScans", "en") +internal class NecroScans(context: MangaLoaderContext) : + KeyoappParser(context, MangaParserSource.NECROSCANS, "necroscans.com") diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/keyoapp/fr/AnteikuScan.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/keyoapp/fr/AnteikuScan.kt index 81115347f..808be40c1 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/keyoapp/fr/AnteikuScan.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/keyoapp/fr/AnteikuScan.kt @@ -3,7 +3,6 @@ package org.koitharu.kotatsu.parsers.site.keyoapp.fr import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser import org.koitharu.kotatsu.parsers.model.MangaParserSource -import org.koitharu.kotatsu.parsers.model.MangaSource import org.koitharu.kotatsu.parsers.site.keyoapp.KeyoappParser @MangaSourceParser("ANTEIKUSCAN", "AnteikuScan", "fr") diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/keyoapp/fr/Astrames.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/keyoapp/fr/Astrames.kt index e8555a936..32e971807 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/keyoapp/fr/Astrames.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/keyoapp/fr/Astrames.kt @@ -3,7 +3,6 @@ package org.koitharu.kotatsu.parsers.site.keyoapp.fr import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser import org.koitharu.kotatsu.parsers.model.MangaParserSource -import org.koitharu.kotatsu.parsers.model.MangaSource import org.koitharu.kotatsu.parsers.site.keyoapp.KeyoappParser @MangaSourceParser("ASTRAMES", "Astrames", "fr") diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/keyoapp/fr/EdScanlation.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/keyoapp/fr/EdScanlation.kt index dd7caf54d..d3c457314 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/keyoapp/fr/EdScanlation.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/keyoapp/fr/EdScanlation.kt @@ -3,7 +3,6 @@ package org.koitharu.kotatsu.parsers.site.keyoapp.fr import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser import org.koitharu.kotatsu.parsers.model.MangaParserSource -import org.koitharu.kotatsu.parsers.model.MangaSource import org.koitharu.kotatsu.parsers.site.keyoapp.KeyoappParser @MangaSourceParser("EDSCANLATION", "EdScanlation", "fr") diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/MadaraParser.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/MadaraParser.kt index 2f6a4486c..87612cb67 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/MadaraParser.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/MadaraParser.kt @@ -595,7 +595,15 @@ internal abstract class MadaraParser( ) } } else { - val chapterProtectorHtml = chapterProtector.html() + + val chapterProtectorHtml = chapterProtector.attr("src") + .takeIf { it.startsWith("data:text/javascript;base64,") } + ?.substringAfter("data:text/javascript;base64,") + ?.let { + Base64.getDecoder().decode(it).decodeToString() + } + ?: chapterProtector.html() + val password = chapterProtectorHtml.substringAfter("wpmangaprotectornonce='").substringBefore("';") val chapterData = JSONObject( chapterProtectorHtml.substringAfter("chapter_data='").substringBefore("';").replace("\\/", "/"), diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/ar/RocksManga.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/ar/RocksManga.kt index b8d01b594..ec7eba39b 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/ar/RocksManga.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/ar/RocksManga.kt @@ -5,7 +5,6 @@ import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser import org.koitharu.kotatsu.parsers.model.MangaChapter import org.koitharu.kotatsu.parsers.model.MangaParserSource -import org.koitharu.kotatsu.parsers.model.MangaSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser import org.koitharu.kotatsu.parsers.util.attrAsRelativeUrlOrNull import org.koitharu.kotatsu.parsers.util.generateUid diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/AryaScans.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/AryaScans.kt new file mode 100644 index 000000000..1012ee2c7 --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/AryaScans.kt @@ -0,0 +1,10 @@ +package org.koitharu.kotatsu.parsers.site.madara.en + +import org.koitharu.kotatsu.parsers.MangaLoaderContext +import org.koitharu.kotatsu.parsers.MangaSourceParser +import org.koitharu.kotatsu.parsers.model.MangaParserSource +import org.koitharu.kotatsu.parsers.site.madara.MadaraParser + +@MangaSourceParser("ARYASCANS", "AryaScans", "en") +internal class AryaScans(context: MangaLoaderContext) : + MadaraParser(context, MangaParserSource.ARYASCANS, "aryascans.com") diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/AsuraScansGg.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/AsuraScansGg.kt new file mode 100644 index 000000000..a8b1906da --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/AsuraScansGg.kt @@ -0,0 +1,10 @@ +package org.koitharu.kotatsu.parsers.site.madara.en + +import org.koitharu.kotatsu.parsers.MangaLoaderContext +import org.koitharu.kotatsu.parsers.MangaSourceParser +import org.koitharu.kotatsu.parsers.model.MangaParserSource +import org.koitharu.kotatsu.parsers.site.madara.MadaraParser + +@MangaSourceParser("ASURASCANSGG", "AsuraScansGg", "en") +internal class AsuraScansGg(context: MangaLoaderContext) : + MadaraParser(context, MangaParserSource.ASURASCANSGG, "asurascansgg.com") diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/BibiManga.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/BibiManga.kt index 20c267555..c4bd2ae55 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/BibiManga.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/BibiManga.kt @@ -1,11 +1,13 @@ package org.koitharu.kotatsu.parsers.site.madara.en +import org.koitharu.kotatsu.parsers.Broken import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser import org.koitharu.kotatsu.parsers.model.ContentType import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser +@Broken @MangaSourceParser("BIBIMANGA", "BibiManga", "en", ContentType.HENTAI) internal class BibiManga(context: MangaLoaderContext) : MadaraParser(context, MangaParserSource.BIBIMANGA, "bibimanga.com") { diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/BoysLove.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/BoysLove.kt index 91bba0f94..3b8a0a581 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/BoysLove.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/BoysLove.kt @@ -1,11 +1,13 @@ package org.koitharu.kotatsu.parsers.site.madara.en +import org.koitharu.kotatsu.parsers.Broken import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser import org.koitharu.kotatsu.parsers.model.ContentType import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser +@Broken @MangaSourceParser("BOYS_LOVE", "BoysLove", "en", ContentType.HENTAI) internal class BoysLove(context: MangaLoaderContext) : MadaraParser(context, MangaParserSource.BOYS_LOVE, "boyslove.me", 20) { diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/CoComic.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/CoComic.kt new file mode 100644 index 000000000..07dd077cc --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/CoComic.kt @@ -0,0 +1,11 @@ +package org.koitharu.kotatsu.parsers.site.madara.en + +import org.koitharu.kotatsu.parsers.MangaLoaderContext +import org.koitharu.kotatsu.parsers.MangaSourceParser +import org.koitharu.kotatsu.parsers.model.ContentType +import org.koitharu.kotatsu.parsers.model.MangaParserSource +import org.koitharu.kotatsu.parsers.site.madara.MadaraParser + +@MangaSourceParser("COCOMIC", "CoComic", "en", ContentType.HENTAI) +internal class CoComic(context: MangaLoaderContext) : + MadaraParser(context, MangaParserSource.COCOMIC, "cocomic.co") diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/GedeComix.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/GedeComix.kt new file mode 100644 index 000000000..04865b7e8 --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/GedeComix.kt @@ -0,0 +1,14 @@ +package org.koitharu.kotatsu.parsers.site.madara.en + +import org.koitharu.kotatsu.parsers.MangaLoaderContext +import org.koitharu.kotatsu.parsers.MangaSourceParser +import org.koitharu.kotatsu.parsers.model.ContentType +import org.koitharu.kotatsu.parsers.model.MangaParserSource +import org.koitharu.kotatsu.parsers.site.madara.MadaraParser + +@MangaSourceParser("GEDECOMIX", "GedeComix", "en", ContentType.HENTAI) +internal class GedeComix(context: MangaLoaderContext) : + MadaraParser(context, MangaParserSource.GEDECOMIX, "gedecomix.com", 18) { + override val tagPrefix = "comics-tag/" + override val listUrl = "porncomic/" +} diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/HentaixYuri.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/HentaixYuri.kt index 9056c8982..b9d8b0d76 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/HentaixYuri.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/HentaixYuri.kt @@ -6,7 +6,7 @@ import org.koitharu.kotatsu.parsers.model.ContentType import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser -@MangaSourceParser("HENTAIXYURI", "Hentai x Yuri", "en", ContentType.HENTAI) +@MangaSourceParser("HENTAIXYURI", "HentaiXYuri", "en", ContentType.HENTAI) internal class HentaixYuri(context: MangaLoaderContext) : MadaraParser(context, MangaParserSource.HENTAIXYURI, "hentaixyuri.com", 16) { override val postReq = true diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/HunLight.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/HunLight.kt new file mode 100644 index 000000000..0a5902868 --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/HunLight.kt @@ -0,0 +1,10 @@ +package org.koitharu.kotatsu.parsers.site.madara.en + +import org.koitharu.kotatsu.parsers.MangaLoaderContext +import org.koitharu.kotatsu.parsers.MangaSourceParser +import org.koitharu.kotatsu.parsers.model.MangaParserSource +import org.koitharu.kotatsu.parsers.site.madara.MadaraParser + +@MangaSourceParser("HUNLIGHT", "HunLight", "en") +internal class HunLight(context: MangaLoaderContext) : + MadaraParser(context, MangaParserSource.HUNLIGHT, "hunlight.com") diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/Manga18Xyz.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/Manga18Xyz.kt index e4f6bb205..4e9c97c7b 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/Manga18Xyz.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/Manga18Xyz.kt @@ -1,11 +1,13 @@ package org.koitharu.kotatsu.parsers.site.madara.en +import org.koitharu.kotatsu.parsers.Broken import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser import org.koitharu.kotatsu.parsers.model.ContentType import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser +@Broken @MangaSourceParser("MANGA18XYZ", "Manga18.xyz", "en", ContentType.HENTAI) internal class Manga18Xyz(context: MangaLoaderContext) : MadaraParser(context, MangaParserSource.MANGA18XYZ, "manga18.xyz", 36) diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/MangaHall.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/MangaHall.kt new file mode 100644 index 000000000..cd1e4f647 --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/MangaHall.kt @@ -0,0 +1,11 @@ +package org.koitharu.kotatsu.parsers.site.madara.en + +import org.koitharu.kotatsu.parsers.MangaLoaderContext +import org.koitharu.kotatsu.parsers.MangaSourceParser +import org.koitharu.kotatsu.parsers.model.ContentType +import org.koitharu.kotatsu.parsers.model.MangaParserSource +import org.koitharu.kotatsu.parsers.site.madara.MadaraParser + +@MangaSourceParser("MANGAHALL", "MangaHall", "en", ContentType.HENTAI) +internal class MangaHall(context: MangaLoaderContext) : + MadaraParser(context, MangaParserSource.MANGAHALL, "mangahall.net", 24) diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/MangaZin.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/MangaZin.kt new file mode 100644 index 000000000..56253d1d5 --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/MangaZin.kt @@ -0,0 +1,10 @@ +package org.koitharu.kotatsu.parsers.site.madara.en + +import org.koitharu.kotatsu.parsers.MangaLoaderContext +import org.koitharu.kotatsu.parsers.MangaSourceParser +import org.koitharu.kotatsu.parsers.model.MangaParserSource +import org.koitharu.kotatsu.parsers.site.madara.MadaraParser + +@MangaSourceParser("MANGAZIN", "MangaZin", "en") +internal class MangaZin(context: MangaLoaderContext) : + MadaraParser(context, MangaParserSource.MANGAZIN, "mangazin.org") diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/MmScans.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/MmScans.kt index da8e966d2..c39c264ff 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/MmScans.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/MmScans.kt @@ -1,11 +1,12 @@ package org.koitharu.kotatsu.parsers.site.madara.en +import org.koitharu.kotatsu.parsers.Broken import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser - +@Broken @MangaSourceParser("MMSCANS", "MmScans", "en") internal class MmScans(context: MangaLoaderContext) : MadaraParser(context, MangaParserSource.MMSCANS, "mm-scans.org") { diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/StoneScape.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/StoneScape.kt index 7deafe1c6..20f0551d9 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/StoneScape.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/StoneScape.kt @@ -3,7 +3,6 @@ package org.koitharu.kotatsu.parsers.site.madara.en import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser import org.koitharu.kotatsu.parsers.model.MangaParserSource -import org.koitharu.kotatsu.parsers.model.MangaSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser @MangaSourceParser("STONESCAPE", "StoneScape", "en") diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/TcbScansManga.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/TcbScansManga.kt index 93835de73..33f1f3b45 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/TcbScansManga.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/TcbScansManga.kt @@ -3,7 +3,6 @@ package org.koitharu.kotatsu.parsers.site.madara.en import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser import org.koitharu.kotatsu.parsers.model.MangaParserSource -import org.koitharu.kotatsu.parsers.model.MangaSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser @MangaSourceParser("TCBSCANSMANGA", "TcbScansManga", "en") diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/TeenManhua.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/TeenManhua.kt index d69e4b809..d2f661d28 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/TeenManhua.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/TeenManhua.kt @@ -1,10 +1,12 @@ package org.koitharu.kotatsu.parsers.site.madara.en +import org.koitharu.kotatsu.parsers.Broken import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser +@Broken @MangaSourceParser("TEENMANHUA", "TeenManhua", "en") internal class TeenManhua(context: MangaLoaderContext) : MadaraParser(context, MangaParserSource.TEENMANHUA, "teenmanhua.com") { diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/UToon.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/UToon.kt new file mode 100644 index 000000000..0b0491f3b --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/UToon.kt @@ -0,0 +1,12 @@ +package org.koitharu.kotatsu.parsers.site.madara.en + +import org.koitharu.kotatsu.parsers.MangaLoaderContext +import org.koitharu.kotatsu.parsers.MangaSourceParser +import org.koitharu.kotatsu.parsers.model.MangaParserSource +import org.koitharu.kotatsu.parsers.site.madara.MadaraParser + +@MangaSourceParser("UTOON", "UToon", "en") +internal class UToon(context: MangaLoaderContext) : + MadaraParser(context, MangaParserSource.UTOON, "utoon.net") { + override val datePattern = "dd MMM" +} diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/YaoiHub.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/YaoiHub.kt new file mode 100644 index 000000000..0f4b83e64 --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/YaoiHub.kt @@ -0,0 +1,11 @@ +package org.koitharu.kotatsu.parsers.site.madara.en + +import org.koitharu.kotatsu.parsers.MangaLoaderContext +import org.koitharu.kotatsu.parsers.MangaSourceParser +import org.koitharu.kotatsu.parsers.model.ContentType +import org.koitharu.kotatsu.parsers.model.MangaParserSource +import org.koitharu.kotatsu.parsers.site.madara.MadaraParser + +@MangaSourceParser("YAOIHUB", "YaoiHub", "en", ContentType.HENTAI) +internal class YaoiHub(context: MangaLoaderContext) : + MadaraParser(context, MangaParserSource.YAOIHUB, "yaoihub.com") diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/ZinChanManga.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/ZinChanManga.kt index f5222491b..8997cedee 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/ZinChanManga.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/ZinChanManga.kt @@ -4,7 +4,6 @@ import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser import org.koitharu.kotatsu.parsers.model.ContentType import org.koitharu.kotatsu.parsers.model.MangaParserSource -import org.koitharu.kotatsu.parsers.model.MangaSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser @MangaSourceParser("ZINCHANMANGA", "ZinChanManga", "en", ContentType.HENTAI) diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/ZinMangaCc.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/ZinMangaCc.kt new file mode 100644 index 000000000..4fc6708f1 --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/ZinMangaCc.kt @@ -0,0 +1,10 @@ +package org.koitharu.kotatsu.parsers.site.madara.en + +import org.koitharu.kotatsu.parsers.MangaLoaderContext +import org.koitharu.kotatsu.parsers.MangaSourceParser +import org.koitharu.kotatsu.parsers.model.MangaParserSource +import org.koitharu.kotatsu.parsers.site.madara.MadaraParser + +@MangaSourceParser("ZINMANGA_CC", "ZinManga.cc", "en") +internal class ZinMangaCc(context: MangaLoaderContext) : + MadaraParser(context, MangaParserSource.ZINMANGA_CC, "zinmanga.cc") diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/ZinMangaCom.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/ZinMangaCom.kt new file mode 100644 index 000000000..b48a34f6b --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/ZinMangaCom.kt @@ -0,0 +1,12 @@ +package org.koitharu.kotatsu.parsers.site.madara.en + +import org.koitharu.kotatsu.parsers.MangaLoaderContext +import org.koitharu.kotatsu.parsers.MangaSourceParser +import org.koitharu.kotatsu.parsers.model.MangaParserSource +import org.koitharu.kotatsu.parsers.site.madara.MadaraParser + +@MangaSourceParser("ZIN_MANGA_COM", "Zin-Manga.com", "en") +internal class ZinMangaCom(context: MangaLoaderContext) : + MadaraParser(context, MangaParserSource.ZIN_MANGA_COM, "zin-manga.com") { + override val selectPage = "img" +} diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/ZinMangaMS.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/ZinMangaMS.kt new file mode 100644 index 000000000..b743cbb00 --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/ZinMangaMS.kt @@ -0,0 +1,13 @@ +package org.koitharu.kotatsu.parsers.site.madara.en + +import org.koitharu.kotatsu.parsers.MangaLoaderContext +import org.koitharu.kotatsu.parsers.MangaSourceParser +import org.koitharu.kotatsu.parsers.model.MangaParserSource +import org.koitharu.kotatsu.parsers.site.madara.MadaraParser + +@MangaSourceParser("ZINMANGA_MS", "ZinManga.ms", "en") +internal class ZinMangaMS(context: MangaLoaderContext) : + MadaraParser(context, MangaParserSource.ZINMANGA_MS, "zinmanga.ms") { + override val listUrl = "manga-1/" + override val tagPrefix = "manga-genre-1/" +} diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/Zinmanga.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/Zinmanga.kt index 67606d18c..5dbc77473 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/Zinmanga.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/Zinmanga.kt @@ -5,7 +5,7 @@ import org.koitharu.kotatsu.parsers.MangaSourceParser import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser -@MangaSourceParser("ZINMANGA", "ZinManga", "en") +@MangaSourceParser("ZINMANGA", "ZinManga.net", "en") internal class Zinmanga(context: MangaLoaderContext) : MadaraParser(context, MangaParserSource.ZINMANGA, "zinmanga.net") { override val datePattern = "MM/dd/yyyy" diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/DoujinShell.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/DoujinShell.kt new file mode 100644 index 000000000..b023e5dee --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/DoujinShell.kt @@ -0,0 +1,16 @@ +package org.koitharu.kotatsu.parsers.site.madara.es + +import org.koitharu.kotatsu.parsers.MangaLoaderContext +import org.koitharu.kotatsu.parsers.MangaSourceParser +import org.koitharu.kotatsu.parsers.model.ContentType +import org.koitharu.kotatsu.parsers.model.MangaParserSource +import org.koitharu.kotatsu.parsers.site.madara.MadaraParser + +@MangaSourceParser("DOUJINSHELL", "DoujinShell", "es", ContentType.HENTAI) +internal class DoujinShell(context: MangaLoaderContext) : + MadaraParser(context, MangaParserSource.DOUJINSHELL, "www.doujinshell.com", 10) { + override val datePattern = "dd MMMM, yyyy" + override val listUrl = "/doujin" + override val tagPrefix = "/doujin-genero" + override val selectPage = "img:not(.aligncenter)" +} diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/HaremScann.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/HaremScann.kt new file mode 100644 index 000000000..7645372a4 --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/HaremScann.kt @@ -0,0 +1,12 @@ +package org.koitharu.kotatsu.parsers.site.madara.es + +import org.koitharu.kotatsu.parsers.MangaLoaderContext +import org.koitharu.kotatsu.parsers.MangaSourceParser +import org.koitharu.kotatsu.parsers.model.MangaParserSource +import org.koitharu.kotatsu.parsers.site.madara.MadaraParser + +@MangaSourceParser("HAREMSCANN", "HaremScann", "es") +internal class HaremScann(context: MangaLoaderContext) : + MadaraParser(context, MangaParserSource.HAREMSCANN, "haremscann.es") { + override val postReq = true +} diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/InmoralNoFansub.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/InmoralNoFansub.kt new file mode 100644 index 000000000..484787e3f --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/InmoralNoFansub.kt @@ -0,0 +1,12 @@ +package org.koitharu.kotatsu.parsers.site.madara.es + +import org.koitharu.kotatsu.parsers.MangaLoaderContext +import org.koitharu.kotatsu.parsers.MangaSourceParser +import org.koitharu.kotatsu.parsers.model.MangaParserSource +import org.koitharu.kotatsu.parsers.site.madara.MadaraParser + +@MangaSourceParser("INMORALNOFANSUB", "InmoralNoFansub", "es") +internal class InmoralNoFansub(context: MangaLoaderContext) : + MadaraParser(context, MangaParserSource.INMORALNOFANSUB, "inmoralnofansub.xyz") { + override val datePattern = "dd/MM/yyyy" +} diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/JeazTwoBlueScans.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/JeazTwoBlueScans.kt new file mode 100644 index 000000000..a64a44f6b --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/JeazTwoBlueScans.kt @@ -0,0 +1,12 @@ +package org.koitharu.kotatsu.parsers.site.madara.es + +import org.koitharu.kotatsu.parsers.MangaLoaderContext +import org.koitharu.kotatsu.parsers.MangaSourceParser +import org.koitharu.kotatsu.parsers.model.MangaParserSource +import org.koitharu.kotatsu.parsers.site.madara.MadaraParser + +@MangaSourceParser("JEAZTWOBLUESCANS", "JeazTwoBlueScans", "es") +internal class JeazTwoBlueScans(context: MangaLoaderContext) : + MadaraParser(context, MangaParserSource.JEAZTWOBLUESCANS, "jeaz.twobluescans.com") { + override val datePattern = "d MMMM, yyyy" +} diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/Jobsibe.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/Jobsibe.kt new file mode 100644 index 000000000..b7cdb2c87 --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/Jobsibe.kt @@ -0,0 +1,12 @@ +package org.koitharu.kotatsu.parsers.site.madara.es + +import org.koitharu.kotatsu.parsers.MangaLoaderContext +import org.koitharu.kotatsu.parsers.MangaSourceParser +import org.koitharu.kotatsu.parsers.model.MangaParserSource +import org.koitharu.kotatsu.parsers.site.madara.MadaraParser + +@MangaSourceParser("JOBSIBE", "Jobsibe", "es") +internal class Jobsibe(context: MangaLoaderContext) : + MadaraParser(context, MangaParserSource.JOBSIBE, "jobsibe.com") { + override val datePattern = "dd/MM" +} diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/Kenhuav2Scan.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/Kenhuav2Scan.kt index 8825d6239..9dba1ce90 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/Kenhuav2Scan.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/Kenhuav2Scan.kt @@ -1,10 +1,12 @@ package org.koitharu.kotatsu.parsers.site.madara.es +import org.koitharu.kotatsu.parsers.Broken import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser +@Broken @MangaSourceParser("KENHUAV2SCANK", "Kenhuav2Scan", "es") internal class Kenhuav2Scan(context: MangaLoaderContext) : MadaraParser(context, MangaParserSource.KENHUAV2SCANK, "kenhuav2scan.com") diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/LkScanlation.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/LkScanlation.kt index 128c78f00..10254486d 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/LkScanlation.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/LkScanlation.kt @@ -1,10 +1,12 @@ package org.koitharu.kotatsu.parsers.site.madara.es +import org.koitharu.kotatsu.parsers.Broken import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser +@Broken @MangaSourceParser("LKSCANLATION", "LkScanlation", "es") internal class LkScanlation(context: MangaLoaderContext) : MadaraParser(context, MangaParserSource.LKSCANLATION, "lkscanlation.com") { diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/Marmota.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/Marmota.kt new file mode 100644 index 000000000..6c5f781a1 --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/Marmota.kt @@ -0,0 +1,15 @@ +package org.koitharu.kotatsu.parsers.site.madara.es + +import org.koitharu.kotatsu.parsers.MangaLoaderContext +import org.koitharu.kotatsu.parsers.MangaSourceParser +import org.koitharu.kotatsu.parsers.model.ContentType +import org.koitharu.kotatsu.parsers.model.MangaParserSource +import org.koitharu.kotatsu.parsers.site.madara.MadaraParser + +@MangaSourceParser("MARMOTA", "Marmota", "es", ContentType.COMICS) +internal class Marmota(context: MangaLoaderContext) : + MadaraParser(context, MangaParserSource.MARMOTA, "marmota.me", 48) { + override val datePattern = "d 'de' MMMMM 'de' yyyy" + override val tagPrefix = "genero/" + override val listUrl = "comic/" +} diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/Panconcola.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/Panconcola.kt new file mode 100644 index 000000000..4ce4b204f --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/Panconcola.kt @@ -0,0 +1,13 @@ +package org.koitharu.kotatsu.parsers.site.madara.es + +import org.koitharu.kotatsu.parsers.MangaLoaderContext +import org.koitharu.kotatsu.parsers.MangaSourceParser +import org.koitharu.kotatsu.parsers.model.MangaParserSource +import org.koitharu.kotatsu.parsers.site.madara.MadaraParser + +@MangaSourceParser("PANCONCOLA", "Panconcola", "es") +internal class Panconcola(context: MangaLoaderContext) : + MadaraParser(context, MangaParserSource.PANCONCOLA, "panconcola.com") { + override val datePattern = "dd/MM/yyyy" + override val tagPrefix = "generos-de-manga/" +} diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/SapphireScan.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/SapphireScan.kt new file mode 100644 index 000000000..84dec32c2 --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/SapphireScan.kt @@ -0,0 +1,10 @@ +package org.koitharu.kotatsu.parsers.site.madara.es + +import org.koitharu.kotatsu.parsers.MangaLoaderContext +import org.koitharu.kotatsu.parsers.MangaSourceParser +import org.koitharu.kotatsu.parsers.model.MangaParserSource +import org.koitharu.kotatsu.parsers.site.madara.MadaraParser + +@MangaSourceParser("SAPPHIRESCAN", "SapphireScan", "es") +internal class SapphireScan(context: MangaLoaderContext) : + MadaraParser(context, MangaParserSource.SAPPHIRESCAN, "sapphirescan.com") diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/TerritorioLeal.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/TerritorioLeal.kt new file mode 100644 index 000000000..dfe5c5aaf --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/TerritorioLeal.kt @@ -0,0 +1,12 @@ +package org.koitharu.kotatsu.parsers.site.madara.es + +import org.koitharu.kotatsu.parsers.MangaLoaderContext +import org.koitharu.kotatsu.parsers.MangaSourceParser +import org.koitharu.kotatsu.parsers.model.MangaParserSource +import org.koitharu.kotatsu.parsers.site.madara.MadaraParser + +@MangaSourceParser("TERRITORIOLEAL", "TerritorioLeal", "es") +internal class TerritorioLeal(context: MangaLoaderContext) : + MadaraParser(context, MangaParserSource.TERRITORIOLEAL, "territorioleal.com") { + override val datePattern = "d 'de' MMMM 'de' yyyy" +} diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/fr/HarmonyScan.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/fr/HarmonyScan.kt index 863cd4bfb..313c58a75 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/fr/HarmonyScan.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/fr/HarmonyScan.kt @@ -3,7 +3,6 @@ package org.koitharu.kotatsu.parsers.site.madara.fr import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser import org.koitharu.kotatsu.parsers.model.MangaParserSource -import org.koitharu.kotatsu.parsers.model.MangaSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser @MangaSourceParser("HARMONYSCAN", "HarmonyScan", "fr") diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/fr/HentaiOrigines.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/fr/HentaiOrigines.kt index 8edf2db21..3c59cef48 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/fr/HentaiOrigines.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/fr/HentaiOrigines.kt @@ -4,7 +4,6 @@ import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser import org.koitharu.kotatsu.parsers.model.ContentType import org.koitharu.kotatsu.parsers.model.MangaParserSource -import org.koitharu.kotatsu.parsers.model.MangaSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser @MangaSourceParser("HENTAIORIGINES", "HentaiOrigines", "fr", ContentType.HENTAI) diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/fr/ScanHentai.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/fr/ScanHentai.kt new file mode 100644 index 000000000..ad58a3f6e --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/fr/ScanHentai.kt @@ -0,0 +1,13 @@ +package org.koitharu.kotatsu.parsers.site.madara.fr + +import org.koitharu.kotatsu.parsers.MangaLoaderContext +import org.koitharu.kotatsu.parsers.MangaSourceParser +import org.koitharu.kotatsu.parsers.model.ContentType +import org.koitharu.kotatsu.parsers.model.MangaParserSource +import org.koitharu.kotatsu.parsers.site.madara.MadaraParser + +@MangaSourceParser("SCANHENTAI", "ScanHentai", "fr", ContentType.HENTAI) +internal class ScanHentai(context: MangaLoaderContext) : + MadaraParser(context, MangaParserSource.SCANHENTAI, "scan-hentai.fr") { + override val datePattern = "dd/MM/yyyy" +} diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/id/Shinigami.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/id/Shinigami.kt index a5f16dec9..ccf4bf719 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/id/Shinigami.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/id/Shinigami.kt @@ -8,8 +8,7 @@ import java.util.* @MangaSourceParser("SHINIGAMI", "Shinigami", "id") internal class Shinigami(context: MangaLoaderContext) : - MadaraParser(context, MangaParserSource.SHINIGAMI, "shinigamitoon.id", 10) { - + MadaraParser(context, MangaParserSource.SHINIGAMI, "shinigami02.com", 10) { override val tagPrefix = "genre/" override val listUrl = "series/" override val sourceLocale: Locale = Locale.ENGLISH diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/id/Yubikiri.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/id/Yubikiri.kt new file mode 100644 index 000000000..6becb8920 --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/id/Yubikiri.kt @@ -0,0 +1,13 @@ +package org.koitharu.kotatsu.parsers.site.madara.id + +import org.koitharu.kotatsu.parsers.MangaLoaderContext +import org.koitharu.kotatsu.parsers.MangaSourceParser +import org.koitharu.kotatsu.parsers.model.MangaParserSource +import org.koitharu.kotatsu.parsers.site.madara.MadaraParser + +@MangaSourceParser("YUBIKIRI", "Yubikiri", "id") +internal class Yubikiri(context: MangaLoaderContext) : + MadaraParser(context, MangaParserSource.YUBIKIRI, "yubikiri.my.id", 18) { + override val tagPrefix = "genre/" + override val datePattern = "d MMMM" +} diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/id/YuraManga.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/id/YuraManga.kt new file mode 100644 index 000000000..cee2681df --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/id/YuraManga.kt @@ -0,0 +1,13 @@ +package org.koitharu.kotatsu.parsers.site.madara.id + +import org.koitharu.kotatsu.parsers.MangaLoaderContext +import org.koitharu.kotatsu.parsers.MangaSourceParser +import org.koitharu.kotatsu.parsers.model.MangaParserSource +import org.koitharu.kotatsu.parsers.site.madara.MadaraParser +import java.util.Locale + +@MangaSourceParser("YURAMANGA", "YuraManga", "id") +internal class YuraManga(context: MangaLoaderContext) : + MadaraParser(context, MangaParserSource.YURAMANGA, "yuramanga.my.id") { + override val sourceLocale: Locale = Locale.ENGLISH +} diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/ja/MangaFenxi.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/ja/MangaFenxi.kt new file mode 100644 index 000000000..8f1a790f9 --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/ja/MangaFenxi.kt @@ -0,0 +1,14 @@ +package org.koitharu.kotatsu.parsers.site.madara.ja + +import org.koitharu.kotatsu.parsers.MangaLoaderContext +import org.koitharu.kotatsu.parsers.MangaSourceParser +import org.koitharu.kotatsu.parsers.model.MangaParserSource +import org.koitharu.kotatsu.parsers.site.madara.MadaraParser +import java.util.Locale + +@MangaSourceParser("MANGAFENXI", "MangaFenxi", "ja") +internal class MangaFenxi(context: MangaLoaderContext) : + MadaraParser(context, MangaParserSource.MANGAFENXI, "mangafenxi.net", 40) { + override val sourceLocale: Locale = Locale.ENGLISH + override val tagPrefix = "genres/" +} diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/ja/RawXz.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/ja/RawXz.kt new file mode 100644 index 000000000..47b970835 --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/ja/RawXz.kt @@ -0,0 +1,12 @@ +package org.koitharu.kotatsu.parsers.site.madara.ja + +import org.koitharu.kotatsu.parsers.MangaLoaderContext +import org.koitharu.kotatsu.parsers.MangaSourceParser +import org.koitharu.kotatsu.parsers.model.MangaParserSource +import org.koitharu.kotatsu.parsers.site.madara.MadaraParser + +@MangaSourceParser("RAWXZ", "RawXz", "ja") +internal class RawXz(context: MangaLoaderContext) : + MadaraParser(context, MangaParserSource.RAWXZ, "rawxz.si") { + override val listUrl = "jp-manga/" +} diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pl/MangaHona.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pl/MangaHona.kt new file mode 100644 index 000000000..7e88141f3 --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pl/MangaHona.kt @@ -0,0 +1,12 @@ +package org.koitharu.kotatsu.parsers.site.madara.pl + +import org.koitharu.kotatsu.parsers.MangaLoaderContext +import org.koitharu.kotatsu.parsers.MangaSourceParser +import org.koitharu.kotatsu.parsers.model.MangaParserSource +import org.koitharu.kotatsu.parsers.site.madara.MadaraParser + +@MangaSourceParser("MANGAHONA", "MangaHona", "pl") +internal class MangaHona(context: MangaLoaderContext) : + MadaraParser(context, MangaParserSource.MANGAHONA, "mangahona.pl") { + override val datePattern = "yyyy-MM-dd" +} diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/AloneScanlator.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/AloneScanlator.kt new file mode 100644 index 000000000..d5495eba6 --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/AloneScanlator.kt @@ -0,0 +1,12 @@ +package org.koitharu.kotatsu.parsers.site.madara.pt + +import org.koitharu.kotatsu.parsers.MangaLoaderContext +import org.koitharu.kotatsu.parsers.MangaSourceParser +import org.koitharu.kotatsu.parsers.model.MangaParserSource +import org.koitharu.kotatsu.parsers.site.madara.MadaraParser + +@MangaSourceParser("ALONESCANLATOR", "AloneScanlator", "pt") +internal class AloneScanlator(context: MangaLoaderContext) : + MadaraParser(context, MangaParserSource.ALONESCANLATOR, "alonescanlator.com.br", 10) { + override val datePattern: String = "dd/MM/yyyy" +} diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/ArgosComics.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/ArgosComics.kt new file mode 100644 index 000000000..caf8bc30b --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/ArgosComics.kt @@ -0,0 +1,12 @@ +package org.koitharu.kotatsu.parsers.site.madara.pt + +import org.koitharu.kotatsu.parsers.MangaLoaderContext +import org.koitharu.kotatsu.parsers.MangaSourceParser +import org.koitharu.kotatsu.parsers.model.MangaParserSource +import org.koitharu.kotatsu.parsers.site.madara.MadaraParser + +@MangaSourceParser("ARGOSCOMICS", "ArgosComics", "pt") +internal class ArgosComics(context: MangaLoaderContext) : + MadaraParser(context, MangaParserSource.ARGOSCOMICS, "argoscomics.com.br") { + override val datePattern: String = "d 'de' MMMM 'de' yyyy" +} diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/Atemporal.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/Atemporal.kt new file mode 100644 index 000000000..b67ff8c11 --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/Atemporal.kt @@ -0,0 +1,13 @@ +package org.koitharu.kotatsu.parsers.site.madara.pt + +import org.koitharu.kotatsu.parsers.MangaLoaderContext +import org.koitharu.kotatsu.parsers.MangaSourceParser +import org.koitharu.kotatsu.parsers.model.MangaParserSource +import org.koitharu.kotatsu.parsers.site.madara.MadaraParser + +@MangaSourceParser("ATEMPORAL", "Atemporal", "pt") +internal class Atemporal(context: MangaLoaderContext) : + MadaraParser(context, MangaParserSource.ATEMPORAL, "atemporal.cloud") { + override val datePattern: String = "d 'de' MMMM 'de' yyyy" + override val withoutAjax = true +} diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/BurningScans.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/BurningScans.kt index cb346dccb..d19f7a425 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/BurningScans.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/BurningScans.kt @@ -1,10 +1,12 @@ package org.koitharu.kotatsu.parsers.site.madara.pt +import org.koitharu.kotatsu.parsers.Broken import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser +@Broken @MangaSourceParser("BURNINGSCANS", "BurningScans", "pt") internal class BurningScans(context: MangaLoaderContext) : MadaraParser(context, MangaParserSource.BURNINGSCANS, "burningscans.com") { diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/DreamScan.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/DreamScan.kt index 28630ccdc..6d85679d3 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/DreamScan.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/DreamScan.kt @@ -3,7 +3,6 @@ package org.koitharu.kotatsu.parsers.site.madara.pt import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser import org.koitharu.kotatsu.parsers.model.MangaParserSource -import org.koitharu.kotatsu.parsers.model.MangaSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser @MangaSourceParser("DREAMSCAN", "DreamScan", "pt") diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/EuphoriaScan.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/EuphoriaScan.kt new file mode 100644 index 000000000..3a1dba16c --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/EuphoriaScan.kt @@ -0,0 +1,13 @@ +package org.koitharu.kotatsu.parsers.site.madara.pt + +import org.koitharu.kotatsu.parsers.MangaLoaderContext +import org.koitharu.kotatsu.parsers.MangaSourceParser +import org.koitharu.kotatsu.parsers.model.ContentType +import org.koitharu.kotatsu.parsers.model.MangaParserSource +import org.koitharu.kotatsu.parsers.site.madara.MadaraParser + +@MangaSourceParser("EUPHORIASCAN", "EuphoriaScan", "pt", ContentType.HENTAI) +internal class EuphoriaScan(context: MangaLoaderContext) : + MadaraParser(context, MangaParserSource.EUPHORIASCAN, "euphoriascan.com", 10) { + override val datePattern: String = "dd 'de' MMMM 'de' yyyy" +} diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/FenixProject.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/FenixProject.kt new file mode 100644 index 000000000..6be811328 --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/FenixProject.kt @@ -0,0 +1,12 @@ +package org.koitharu.kotatsu.parsers.site.madara.pt + +import org.koitharu.kotatsu.parsers.MangaLoaderContext +import org.koitharu.kotatsu.parsers.MangaSourceParser +import org.koitharu.kotatsu.parsers.model.MangaParserSource +import org.koitharu.kotatsu.parsers.site.madara.MadaraParser + +@MangaSourceParser("FENIXPROJECT", "FenixProject", "pt") +internal class FenixProject(context: MangaLoaderContext) : + MadaraParser(context, MangaParserSource.FENIXPROJECT, "fenixproject.xyz", 10) { + override val datePattern: String = "dd/MM/yyyy" +} diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/GekkouScans.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/GekkouScans.kt index 531da28b6..162b9ec39 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/GekkouScans.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/GekkouScans.kt @@ -1,5 +1,6 @@ package org.koitharu.kotatsu.parsers.site.madara.pt +import org.koitharu.kotatsu.parsers.Broken import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser import org.koitharu.kotatsu.parsers.model.ContentType @@ -7,6 +8,7 @@ import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser import java.util.* +@Broken @MangaSourceParser("GEKKOUSCANS", "GekkouScans", "pt", ContentType.HENTAI) internal class GekkouScans(context: MangaLoaderContext) : MadaraParser(context, MangaParserSource.GEKKOUSCANS, "gekkou.site") { diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/LadyestelarScan.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/LadyestelarScan.kt index d2a0f99cf..aec03a638 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/LadyestelarScan.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/LadyestelarScan.kt @@ -1,10 +1,12 @@ package org.koitharu.kotatsu.parsers.site.madara.pt +import org.koitharu.kotatsu.parsers.Broken import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser +@Broken @MangaSourceParser("LADYESTELARSCAN", "LadyEstelarScan", "pt") internal class LadyestelarScan(context: MangaLoaderContext) : MadaraParser(context, MangaParserSource.LADYESTELARSCAN, "ladyestelarscan.com.br", 10) { diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/LeitorDeManga.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/LeitorDeManga.kt index f90feeb2c..282066f13 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/LeitorDeManga.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/LeitorDeManga.kt @@ -3,7 +3,6 @@ package org.koitharu.kotatsu.parsers.site.madara.pt import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser import org.koitharu.kotatsu.parsers.model.MangaParserSource -import org.koitharu.kotatsu.parsers.model.MangaSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser @MangaSourceParser("LEITORDEMANGA", "LeitorDeManga", "pt") diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/LeitorKamisama.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/LeitorKamisama.kt index 5f12b6688..e6472e56a 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/LeitorKamisama.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/LeitorKamisama.kt @@ -5,7 +5,7 @@ import org.koitharu.kotatsu.parsers.MangaSourceParser import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser -@MangaSourceParser("LEITORKAMISAMA", "Leitor Kamisama", "pt") +@MangaSourceParser("LEITORKAMISAMA", "LeitorKamisama", "pt") internal class LeitorKamisama(context: MangaLoaderContext) : MadaraParser(context, MangaParserSource.LEITORKAMISAMA, "leitor.kamisama.com.br", 10) { override val datePattern: String = "dd 'de' MMMMM 'de' yyyy" diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/LerHentai.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/LerHentai.kt new file mode 100644 index 000000000..d86dc01f5 --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/LerHentai.kt @@ -0,0 +1,13 @@ +package org.koitharu.kotatsu.parsers.site.madara.pt + +import org.koitharu.kotatsu.parsers.MangaLoaderContext +import org.koitharu.kotatsu.parsers.MangaSourceParser +import org.koitharu.kotatsu.parsers.model.ContentType +import org.koitharu.kotatsu.parsers.model.MangaParserSource +import org.koitharu.kotatsu.parsers.site.madara.MadaraParser + +@MangaSourceParser("LERHENTAI", "LerHentai", "pt", ContentType.HENTAI) +internal class LerHentai(context: MangaLoaderContext) : + MadaraParser(context, MangaParserSource.LERHENTAI, "lerhentai.com", 20) { + override val datePattern: String = "dd 'de' MMMMM 'de' yyyy" +} diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/LichMangas.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/LichMangas.kt new file mode 100644 index 000000000..4c53c8426 --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/LichMangas.kt @@ -0,0 +1,12 @@ +package org.koitharu.kotatsu.parsers.site.madara.pt + +import org.koitharu.kotatsu.parsers.MangaLoaderContext +import org.koitharu.kotatsu.parsers.MangaSourceParser +import org.koitharu.kotatsu.parsers.model.MangaParserSource +import org.koitharu.kotatsu.parsers.site.madara.MadaraParser + +@MangaSourceParser("LICHMANGAS", "LichMangas", "pt") +internal class LichMangas(context: MangaLoaderContext) : + MadaraParser(context, MangaParserSource.LICHMANGAS, "lichmangas.com", 10) { + override val datePattern = "dd/MM/yyyy" +} diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/MaidSecret.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/MaidSecret.kt index 3b339f7b1..0ab3e403b 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/MaidSecret.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/MaidSecret.kt @@ -3,7 +3,6 @@ package org.koitharu.kotatsu.parsers.site.madara.pt import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser import org.koitharu.kotatsu.parsers.model.MangaParserSource -import org.koitharu.kotatsu.parsers.model.MangaSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser @MangaSourceParser("MAIDSECRET", "MaidSecret", "pt") diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/MangaNinja.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/MangaNinja.kt index df0c58b3f..63800d73a 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/MangaNinja.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/MangaNinja.kt @@ -3,7 +3,6 @@ package org.koitharu.kotatsu.parsers.site.madara.pt import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser import org.koitharu.kotatsu.parsers.model.MangaParserSource -import org.koitharu.kotatsu.parsers.model.MangaSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser @MangaSourceParser("MANGANINJA", "MangaNinja", "pt") diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/Manhastro.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/Manhastro.kt index 414602b51..1334b7d77 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/Manhastro.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/Manhastro.kt @@ -2,9 +2,38 @@ package org.koitharu.kotatsu.parsers.site.madara.pt import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser +import org.koitharu.kotatsu.parsers.model.MangaChapter +import org.koitharu.kotatsu.parsers.model.MangaPage import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser +import org.koitharu.kotatsu.parsers.util.domain +import org.koitharu.kotatsu.parsers.util.generateUid +import org.koitharu.kotatsu.parsers.util.parseHtml +import org.koitharu.kotatsu.parsers.util.selectFirstOrThrow +import org.koitharu.kotatsu.parsers.util.toAbsoluteUrl @MangaSourceParser("MANHASTRO", "Manhastro", "pt") internal class Manhastro(context: MangaLoaderContext) : - MadaraParser(context, MangaParserSource.MANHASTRO, "manhastro.com", 18) + MadaraParser(context, MangaParserSource.MANHASTRO, "manhastro.com", 24) { + + override val listUrl = "lermanga/" + override val tagPrefix = "genre/" + + override suspend fun getPages(chapter: MangaChapter): List { + val fullUrl = chapter.url.toAbsoluteUrl(domain) + val doc = webClient.httpGet(fullUrl).parseHtml() + + val script = doc.selectFirstOrThrow("script:containsData(imageLinks)").data() + val images = script.substringAfter('[').substringBeforeLast(']') + .replace("\"", "").split(',') + return images.map { img -> + val url = context.decodeBase64(img).toString(Charsets.UTF_8) + MangaPage( + id = generateUid(url), + url = url, + preview = null, + source = source, + ) + } + } +} diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/Prismahentai.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/Prismahentai.kt index 71dbbf46c..57b3faf98 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/Prismahentai.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/Prismahentai.kt @@ -1,11 +1,13 @@ package org.koitharu.kotatsu.parsers.site.madara.pt +import org.koitharu.kotatsu.parsers.Broken import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser import org.koitharu.kotatsu.parsers.model.ContentType import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser +@Broken @MangaSourceParser("PRISMA_HENTAI", "PrismaHentai", "pt", ContentType.HENTAI) internal class Prismahentai(context: MangaLoaderContext) : MadaraParser(context, MangaParserSource.PRISMA_HENTAI, "prismahentai.com", 18) diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/ProjetoScanlator.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/ProjetoScanlator.kt index 47bfdf455..1859d967a 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/ProjetoScanlator.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/ProjetoScanlator.kt @@ -1,10 +1,12 @@ package org.koitharu.kotatsu.parsers.site.madara.pt +import org.koitharu.kotatsu.parsers.Broken import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser +@Broken @MangaSourceParser("PROJETOSCANLATOR", "ProjetoScanlator", "pt") internal class ProjetoScanlator(context: MangaLoaderContext) : MadaraParser(context, MangaParserSource.PROJETOSCANLATOR, "projetoscanlator.com", 10) { diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/Atikrost.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/Atikrost.kt new file mode 100644 index 000000000..6b742b625 --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/Atikrost.kt @@ -0,0 +1,12 @@ +package org.koitharu.kotatsu.parsers.site.madara.tr + +import org.koitharu.kotatsu.parsers.MangaLoaderContext +import org.koitharu.kotatsu.parsers.MangaSourceParser +import org.koitharu.kotatsu.parsers.model.MangaParserSource +import org.koitharu.kotatsu.parsers.site.madara.MadaraParser + +@MangaSourceParser("ATIKROST", "Atikrost", "tr") +internal class Atikrost(context: MangaLoaderContext) : + MadaraParser(context, MangaParserSource.ATIKROST, "www.atikrost.com", 10) { + override val datePattern = "d MMMM yyyy" +} diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/DeccalScans.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/DeccalScans.kt new file mode 100644 index 000000000..9d7a418f8 --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/DeccalScans.kt @@ -0,0 +1,13 @@ +package org.koitharu.kotatsu.parsers.site.madara.tr + +import org.koitharu.kotatsu.parsers.MangaLoaderContext +import org.koitharu.kotatsu.parsers.MangaSourceParser +import org.koitharu.kotatsu.parsers.model.ContentType +import org.koitharu.kotatsu.parsers.model.MangaParserSource +import org.koitharu.kotatsu.parsers.site.madara.MadaraParser + +@MangaSourceParser("DECCALSCANS", "DeccalScans", "tr", ContentType.HENTAI) +internal class DeccalScans(context: MangaLoaderContext) : + MadaraParser(context, MangaParserSource.DECCALSCANS, "deccalscans.net") { + override val tagPrefix = "turler/" +} diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/EsoManga.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/EsoManga.kt index 62e923c1c..7de550006 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/EsoManga.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/EsoManga.kt @@ -1,10 +1,12 @@ package org.koitharu.kotatsu.parsers.site.madara.tr +import org.koitharu.kotatsu.parsers.Broken import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser +@Broken @MangaSourceParser("ESOMANGA", "EsoManga", "tr") internal class EsoManga(context: MangaLoaderContext) : MadaraParser(context, MangaParserSource.ESOMANGA, "esomanga.com", 10) { diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/GarciaManga.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/GarciaManga.kt new file mode 100644 index 000000000..f3c801d5a --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/GarciaManga.kt @@ -0,0 +1,12 @@ +package org.koitharu.kotatsu.parsers.site.madara.tr + +import org.koitharu.kotatsu.parsers.MangaLoaderContext +import org.koitharu.kotatsu.parsers.MangaSourceParser +import org.koitharu.kotatsu.parsers.model.MangaParserSource +import org.koitharu.kotatsu.parsers.site.madara.MadaraParser + +@MangaSourceParser("GARCIAMANGA", "GarciaManga", "tr") +internal class GarciaManga(context: MangaLoaderContext) : + MadaraParser(context, MangaParserSource.GARCIAMANGA, "garciamanga.com", 20) { + override val selectPage = "img" +} diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/ImparatorManga.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/ImparatorManga.kt new file mode 100644 index 000000000..a17eaa132 --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/ImparatorManga.kt @@ -0,0 +1,10 @@ +package org.koitharu.kotatsu.parsers.site.madara.tr + +import org.koitharu.kotatsu.parsers.MangaLoaderContext +import org.koitharu.kotatsu.parsers.MangaSourceParser +import org.koitharu.kotatsu.parsers.model.MangaParserSource +import org.koitharu.kotatsu.parsers.site.madara.MadaraParser + +@MangaSourceParser("IMPARATORMANGA", "ImparatorManga", "tr") +internal class ImparatorManga(context: MangaLoaderContext) : + MadaraParser(context, MangaParserSource.IMPARATORMANGA, "www.imparatormanga.com") diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/Jellyring.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/Jellyring.kt new file mode 100644 index 000000000..7f92bf4e2 --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/Jellyring.kt @@ -0,0 +1,10 @@ +package org.koitharu.kotatsu.parsers.site.madara.tr + +import org.koitharu.kotatsu.parsers.MangaLoaderContext +import org.koitharu.kotatsu.parsers.MangaSourceParser +import org.koitharu.kotatsu.parsers.model.MangaParserSource +import org.koitharu.kotatsu.parsers.site.madara.MadaraParser + +@MangaSourceParser("JELLYRING", "Jellyring", "tr") +internal class Jellyring(context: MangaLoaderContext) : + MadaraParser(context, MangaParserSource.JELLYRING, "jellyring.co") diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/KabusManga.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/KabusManga.kt new file mode 100644 index 000000000..493596637 --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/KabusManga.kt @@ -0,0 +1,12 @@ +package org.koitharu.kotatsu.parsers.site.madara.tr + +import org.koitharu.kotatsu.parsers.MangaLoaderContext +import org.koitharu.kotatsu.parsers.MangaSourceParser +import org.koitharu.kotatsu.parsers.model.MangaParserSource +import org.koitharu.kotatsu.parsers.site.madara.MadaraParser + +@MangaSourceParser("KABUSMANGA", "KabusManga", "tr") +internal class KabusManga(context: MangaLoaderContext) : + MadaraParser(context, MangaParserSource.KABUSMANGA, "kabusmanga.com") { + override val datePattern = "dd/MM/yyyy" +} diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/Kedi.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/Kedi.kt new file mode 100644 index 000000000..0cbe3edb4 --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/Kedi.kt @@ -0,0 +1,13 @@ +package org.koitharu.kotatsu.parsers.site.madara.tr + +import org.koitharu.kotatsu.parsers.MangaLoaderContext +import org.koitharu.kotatsu.parsers.MangaSourceParser +import org.koitharu.kotatsu.parsers.model.MangaParserSource +import org.koitharu.kotatsu.parsers.site.madara.MadaraParser + +@MangaSourceParser("KEDI", "Kedi", "tr") +internal class Kedi(context: MangaLoaderContext) : + MadaraParser(context, MangaParserSource.KEDI, "kedi.to") { + override val datePattern = "d MMMM yyyy" + override val tagPrefix = "tur/" +} diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/LaviniaFansub.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/LaviniaFansub.kt index a9e5b2fdf..f9d442226 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/LaviniaFansub.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/LaviniaFansub.kt @@ -1,13 +1,58 @@ package org.koitharu.kotatsu.parsers.site.madara.tr +import org.jsoup.nodes.Document import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser import org.koitharu.kotatsu.parsers.model.ContentType +import org.koitharu.kotatsu.parsers.model.MangaChapter import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser +import org.koitharu.kotatsu.parsers.util.attrAsRelativeUrlOrNull +import org.koitharu.kotatsu.parsers.util.domain +import org.koitharu.kotatsu.parsers.util.generateUid +import org.koitharu.kotatsu.parsers.util.mapChapters +import org.koitharu.kotatsu.parsers.util.parseFailed +import org.koitharu.kotatsu.parsers.util.parseHtml +import org.koitharu.kotatsu.parsers.util.removeSuffix +import org.koitharu.kotatsu.parsers.util.toAbsoluteUrl +import java.text.SimpleDateFormat @MangaSourceParser("LAVINIAFANSUB", "LaviniaFansub", "tr", ContentType.HENTAI) internal class LaviniaFansub(context: MangaLoaderContext) : MadaraParser(context, MangaParserSource.LAVINIAFANSUB, "laviniafansub.com", 18) { override val datePattern = "dd/MM/yyyy" + + override suspend fun loadChapters(mangaUrl: String, document: Document): List { + val doc = if (postReq) { + val mangaId = document.select("div#manga-chapters-holder").attr("data-id") + val url = "https://$domain/wp-admin/admin-ajax.php" + val postData = "action=manga_get_chapters&manga=$mangaId" + webClient.httpPost(url, postData).parseHtml() + } else { + val url = mangaUrl.toAbsoluteUrl(domain).removeSuffix('/') + "/ajax/chapters/" + webClient.httpPost(url, emptyMap()).parseHtml() + } + val dateFormat = SimpleDateFormat(datePattern, sourceLocale) + return doc.select(selectChapter).mapChapters(reversed = true) { i, li -> + val a = li.selectFirst("a:not(:has(img))") + val href = a?.attrAsRelativeUrlOrNull("href") ?: li.parseFailed("Link is missing") + val link = href + stylePage + val dateText = li.selectFirst("a.c-new-tag")?.attr("title") ?: li.selectFirst(selectDate)?.text() + val name = a.selectFirst("p")?.text() ?: a.ownText() + MangaChapter( + id = generateUid(href), + url = link, + name = name, + number = i + 1f, + volume = 0, + branch = null, + uploadDate = parseChapterDate( + dateFormat, + dateText, + ), + scanlator = null, + source = source, + ) + } + } } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/MangaWtNet.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/MangaWtNet.kt new file mode 100644 index 000000000..d6cdb6727 --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/MangaWtNet.kt @@ -0,0 +1,10 @@ +package org.koitharu.kotatsu.parsers.site.madara.tr + +import org.koitharu.kotatsu.parsers.MangaLoaderContext +import org.koitharu.kotatsu.parsers.MangaSourceParser +import org.koitharu.kotatsu.parsers.model.MangaParserSource +import org.koitharu.kotatsu.parsers.site.madara.MadaraParser + +@MangaSourceParser("MANGAWT_NET", "MangaWt.net", "tr") +internal class MangaWtNet(context: MangaLoaderContext) : + MadaraParser(context, MangaParserSource.MANGAWT_NET, "mangawt.net") diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/Mangaoku.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/Mangaoku.kt index 62689ade1..b711faa18 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/Mangaoku.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/Mangaoku.kt @@ -1,10 +1,12 @@ package org.koitharu.kotatsu.parsers.site.madara.tr +import org.koitharu.kotatsu.parsers.Broken import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser +@Broken @MangaSourceParser("MANGAOKU", "Mangaoku", "tr") internal class Mangaoku(context: MangaLoaderContext) : MadaraParser(context, MangaParserSource.MANGAOKU, "mangaoku.info", 24) { diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/Mangawt.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/Mangawt.kt index daaae94bf..9b2a8229a 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/Mangawt.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/Mangawt.kt @@ -5,6 +5,6 @@ import org.koitharu.kotatsu.parsers.MangaSourceParser import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser -@MangaSourceParser("MANGAWT", "MangaWt", "tr") +@MangaSourceParser("MANGAWT", "MangaWt.com", "tr") internal class Mangawt(context: MangaLoaderContext) : MadaraParser(context, MangaParserSource.MANGAWT, "mangawt.com") diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/MilaSub.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/MilaSub.kt index dbdf6617a..28eed3994 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/MilaSub.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/MilaSub.kt @@ -3,7 +3,6 @@ package org.koitharu.kotatsu.parsers.site.madara.tr import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser import org.koitharu.kotatsu.parsers.model.MangaParserSource -import org.koitharu.kotatsu.parsers.model.MangaSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser @MangaSourceParser("MILASUB", "MilaSub", "tr") diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/NiveraFansub.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/NiveraFansub.kt index ec04e7e88..cc5da7610 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/NiveraFansub.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/NiveraFansub.kt @@ -8,6 +8,6 @@ import org.koitharu.kotatsu.parsers.site.madara.MadaraParser @MangaSourceParser("NIVERAFANSUB", "NiveraFansub", "tr", ContentType.HENTAI) internal class NiveraFansub(context: MangaLoaderContext) : - MadaraParser(context, MangaParserSource.NIVERAFANSUB, "niverafansub.co") { + MadaraParser(context, MangaParserSource.NIVERAFANSUB, "niverafansub.org") { override val datePattern = "d MMMM yyyy" } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/OpiaToon.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/OpiaToon.kt index eeea2920d..c909f756e 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/OpiaToon.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/OpiaToon.kt @@ -3,7 +3,6 @@ package org.koitharu.kotatsu.parsers.site.madara.tr import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser import org.koitharu.kotatsu.parsers.model.MangaParserSource -import org.koitharu.kotatsu.parsers.model.MangaSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser //This source requires an account. diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/PiedPiperFansubyy.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/PiedPiperFansubyy.kt new file mode 100644 index 000000000..88551056c --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/PiedPiperFansubyy.kt @@ -0,0 +1,13 @@ +package org.koitharu.kotatsu.parsers.site.madara.tr + +import org.koitharu.kotatsu.parsers.MangaLoaderContext +import org.koitharu.kotatsu.parsers.MangaSourceParser +import org.koitharu.kotatsu.parsers.model.ContentType +import org.koitharu.kotatsu.parsers.model.MangaParserSource +import org.koitharu.kotatsu.parsers.site.madara.MadaraParser + +@MangaSourceParser("PIEDPIPERFANSUBYY", "PiedPiperFansubyy", "tr", ContentType.HENTAI) +internal class PiedPiperFansubyy(context: MangaLoaderContext) : + MadaraParser(context, MangaParserSource.PIEDPIPERFANSUBYY, "piedpiperfansubyy.me", 18) { + override val datePattern = "d MMMM yyyy" +} diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/YaoiMangaOku.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/YaoiMangaOku.kt new file mode 100644 index 000000000..2f4d559d4 --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/YaoiMangaOku.kt @@ -0,0 +1,13 @@ +package org.koitharu.kotatsu.parsers.site.madara.tr + +import org.koitharu.kotatsu.parsers.MangaLoaderContext +import org.koitharu.kotatsu.parsers.MangaSourceParser +import org.koitharu.kotatsu.parsers.model.ContentType +import org.koitharu.kotatsu.parsers.model.MangaParserSource +import org.koitharu.kotatsu.parsers.site.madara.MadaraParser + +@MangaSourceParser("YAOIMANGAOKU", "YaoiMangaOku", "tr", ContentType.HENTAI) +internal class YaoiMangaOku(context: MangaLoaderContext) : + MadaraParser(context, MangaParserSource.YAOIMANGAOKU, "yaoimangaoku.com", 16) { + override val datePattern = "d MMMM yyyy" +} diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/YaoiTr.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/YaoiTr.kt index 2c24e7f4d..45cd820bc 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/YaoiTr.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/YaoiTr.kt @@ -7,6 +7,6 @@ import org.koitharu.kotatsu.parsers.site.madara.MadaraParser @MangaSourceParser("YAOITR", "YaoiTr", "tr") internal class YaoiTr(context: MangaLoaderContext) : - MadaraParser(context, MangaParserSource.YAOITR, "yaoitr.online", 16) { + MadaraParser(context, MangaParserSource.YAOITR, "yaoitr.fun", 16) { override val datePattern = "d MMMM yyyy" } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/ZamanManga.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/ZamanManga.kt new file mode 100644 index 000000000..78bd3f23c --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/ZamanManga.kt @@ -0,0 +1,12 @@ +package org.koitharu.kotatsu.parsers.site.madara.tr + +import org.koitharu.kotatsu.parsers.MangaLoaderContext +import org.koitharu.kotatsu.parsers.MangaSourceParser +import org.koitharu.kotatsu.parsers.model.MangaParserSource +import org.koitharu.kotatsu.parsers.site.madara.MadaraParser + +@MangaSourceParser("ZAMANMANGA", "ZamanManga", "tr") +internal class ZamanManga(context: MangaLoaderContext) : + MadaraParser(context, MangaParserSource.ZAMANMANGA, "zamanmanga.com") { + override val datePattern = "dd MMMM yyyy" +} diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/vi/Fecomicc.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/vi/Fecomicc.kt new file mode 100644 index 000000000..7b5c4e962 --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/vi/Fecomicc.kt @@ -0,0 +1,14 @@ +package org.koitharu.kotatsu.parsers.site.madara.vi + +import org.koitharu.kotatsu.parsers.MangaLoaderContext +import org.koitharu.kotatsu.parsers.MangaSourceParser +import org.koitharu.kotatsu.parsers.model.MangaParserSource +import org.koitharu.kotatsu.parsers.site.madara.MadaraParser + +@MangaSourceParser("FECOMICC", "Fecomicc", "vi") +internal class Fecomicc(context: MangaLoaderContext) : + MadaraParser(context, MangaParserSource.FECOMICC, "fecomicc.xyz", 9) { + override val listUrl = "comic/" + override val tagPrefix = "the-loai/" + override val datePattern = "dd/MM/yyyy" +} diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/vi/PinkTeaComic.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/vi/PinkTeaComic.kt new file mode 100644 index 000000000..6768eeb3e --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/vi/PinkTeaComic.kt @@ -0,0 +1,12 @@ +package org.koitharu.kotatsu.parsers.site.madara.vi + +import org.koitharu.kotatsu.parsers.MangaLoaderContext +import org.koitharu.kotatsu.parsers.MangaSourceParser +import org.koitharu.kotatsu.parsers.model.MangaParserSource +import org.koitharu.kotatsu.parsers.site.madara.MadaraParser + +@MangaSourceParser("PINKTEACOMIC", "PinkTeaComic", "vi") +internal class PinkTeaComic(context: MangaLoaderContext) : + MadaraParser(context, MangaParserSource.PINKTEACOMIC, "pinkteacomic.com") { + override val datePattern = "d MMMM, yyyy" +} diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/vi/TruyenVn.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/vi/TruyenVn.kt new file mode 100644 index 000000000..4ae86213c --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/vi/TruyenVn.kt @@ -0,0 +1,15 @@ +package org.koitharu.kotatsu.parsers.site.madara.vi + +import org.koitharu.kotatsu.parsers.MangaLoaderContext +import org.koitharu.kotatsu.parsers.MangaSourceParser +import org.koitharu.kotatsu.parsers.model.ContentType +import org.koitharu.kotatsu.parsers.model.MangaParserSource +import org.koitharu.kotatsu.parsers.site.madara.MadaraParser + +@MangaSourceParser("TRUYENVN", "TruyenVn", "vi", ContentType.HENTAI) +internal class TruyenVn(context: MangaLoaderContext) : + MadaraParser(context, MangaParserSource.TRUYENVN, "truyenvn.cam", 20) { + override val listUrl = "truyen-tranh/" + override val tagPrefix = "the-loai/" + override val datePattern = "dd/MM/yyyy" +} diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/manga18/Manga18Parser.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/manga18/Manga18Parser.kt index f8bd2ea0c..e89be8030 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/manga18/Manga18Parser.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/manga18/Manga18Parser.kt @@ -132,6 +132,8 @@ internal abstract class Manga18Parser( protected open val selectState = "div.item:contains(Status) div.info_value" protected open val selectAlt = "div.item:contains(Other name) div.info_value" protected open val selectTag = "div.item:contains(Categories) div.info_value a" + protected open val selectAuthor = + "div.info_label:contains(author) + div.info_value, div.info_label:contains(autor) + div.info_value" override suspend fun getDetails(manga: Manga): Manga = coroutineScope { val fullUrl = manga.url.toAbsoluteUrl(domain) @@ -152,7 +154,8 @@ internal abstract class Manga18Parser( } } - val alt = doc.body().select(selectAlt).text() + val alt = body.selectFirst(selectAlt)?.text().takeIf { it != "Updating" || it.isNotEmpty() } + val author = body.selectFirst(selectAuthor)?.text().takeIf { it != "Updating" } manga.copy( tags = doc.body().select(selectTag).mapNotNullToSet { a -> @@ -164,6 +167,7 @@ internal abstract class Manga18Parser( }, description = desc, altTitle = alt, + author = author, state = state, chapters = chaptersDeferred.await(), ) diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/manga18/en/Comic1000.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/manga18/en/Comic1000.kt index 2c85b78c3..9c5b9bb2c 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/manga18/en/Comic1000.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/manga18/en/Comic1000.kt @@ -1,10 +1,12 @@ package org.koitharu.kotatsu.parsers.site.manga18.en +import org.koitharu.kotatsu.parsers.Broken import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.manga18.Manga18Parser +@Broken @MangaSourceParser("COMIC1000", "Comic1000", "en") internal class Comic1000(context: MangaLoaderContext) : Manga18Parser(context, MangaParserSource.COMIC1000, "comic1000.com") diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/MangaReaderParser.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/MangaReaderParser.kt index 6d3089dae..2e7eb86ae 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/MangaReaderParser.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/MangaReaderParser.kt @@ -225,18 +225,18 @@ internal abstract class MangaReaderParser( "En cours de publication", "Đang tiến hành", "Em lançamento", "em lançamento", "Em Lançamento", "Онгоінг", "Publishing", "Devam Ediyor", "Em Andamento", "In Corso", "Güncel", "Berjalan", "Продолжается", "Updating", "Lançando", "In Arrivo", "Emision", "En emision", "مستمر", "Curso", "En marcha", "Publicandose", "Publicando", "连载中", "Devam ediyor", "Devam Etmekte", - -> MangaState.ONGOING + -> MangaState.ONGOING "Completed", "Completo", "Complété", "Fini", "Achevé", "Terminé", "Terminé ⚫", "Tamamlandı", "Đã hoàn thành", "Hoàn Thành", "مكتملة", "Завершено", "Finished", "Finalizado", "Completata", "One-Shot", "Bitti", "Tamat", "Completado", "Concluído", "Concluido", "已完结", "Bitmiş", - -> MangaState.FINISHED + -> MangaState.FINISHED "Canceled", "Cancelled", "Cancelado", "cancellato", "Cancelados", "Dropped", "Discontinued", "abandonné", "Abandonné", - -> MangaState.ABANDONED + -> MangaState.ABANDONED "Hiatus", "On Hold", "Pausado", "En espera", "En pause", "En Pause", "En attente", - -> MangaState.PAUSED + -> MangaState.PAUSED else -> null } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/ar/NoonScan.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/ar/NoonScan.kt new file mode 100644 index 000000000..b6596c373 --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/ar/NoonScan.kt @@ -0,0 +1,10 @@ +package org.koitharu.kotatsu.parsers.site.mangareader.ar + +import org.koitharu.kotatsu.parsers.MangaLoaderContext +import org.koitharu.kotatsu.parsers.MangaSourceParser +import org.koitharu.kotatsu.parsers.model.MangaParserSource +import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser + +@MangaSourceParser("NOONSCAN", "NoonScan", "ar") +internal class NoonScan(context: MangaLoaderContext) : + MangaReaderParser(context, MangaParserSource.NOONSCAN, "noonscan.com", pageSize = 20, searchPageSize = 10) diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/ar/Normoyun.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/ar/Normoyun.kt index 2e1a89da4..340004e29 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/ar/Normoyun.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/ar/Normoyun.kt @@ -8,9 +8,9 @@ import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser import org.koitharu.kotatsu.parsers.util.* import java.text.SimpleDateFormat -@MangaSourceParser("NORMOYUN", "Normoyun", "ar") +@MangaSourceParser("NORMOYUN", "MaxLevelTeam", "ar") internal class Normoyun(context: MangaLoaderContext) : - MangaReaderParser(context, MangaParserSource.NORMOYUN, "t1manga.com", pageSize = 42, searchPageSize = 39) { + MangaReaderParser(context, MangaParserSource.NORMOYUN, "maxlevelteam.com", pageSize = 42, searchPageSize = 39) { override val datePattern = "MMMM dd, yyyy" override val selectMangaList = ".listupd .bs .bsx" @@ -98,25 +98,11 @@ internal class Normoyun(context: MangaLoaderContext) : } override suspend fun parseInfo(docs: Document, manga: Manga, chapters: List): Manga { - - /// set if is table - val states = docs.selectFirst("div.spe span:contains(Ongoing)")?.text() - - val state = if (states.isNullOrEmpty()) { - "completed" + val mangaState = if (states.isNullOrEmpty()) { + MangaState.FINISHED } else { - "ongoing" - } - - val mangaState = state.let { - when (it) { - "ongoing" -> MangaState.ONGOING - - "completed" -> MangaState.FINISHED - - else -> null - } + MangaState.ONGOING } val author = docs.selectFirst("span.author i")?.text() diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/ar/PotatoManga.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/ar/PotatoManga.kt index 9c62a4cf5..97944d114 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/ar/PotatoManga.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/ar/PotatoManga.kt @@ -1,6 +1,7 @@ package org.koitharu.kotatsu.parsers.site.mangareader.ar import org.json.JSONObject +import org.koitharu.kotatsu.parsers.Broken import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser import org.koitharu.kotatsu.parsers.model.MangaChapter @@ -9,6 +10,7 @@ import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser import org.koitharu.kotatsu.parsers.util.* +@Broken @MangaSourceParser("POTATOMANGA", "PotatoManga", "ar") internal class PotatoManga(context: MangaLoaderContext) : MangaReaderParser(context, MangaParserSource.POTATOMANGA, "potatomanga.xyz", pageSize = 30, searchPageSize = 10) { diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/CosmicScansParser.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/CosmicScansParser.kt index 17e13fe5d..e5d664a2d 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/CosmicScansParser.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/CosmicScansParser.kt @@ -1,10 +1,12 @@ package org.koitharu.kotatsu.parsers.site.mangareader.en +import org.koitharu.kotatsu.parsers.Broken import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser +@Broken @MangaSourceParser("COSMICSCANS", "CosmicScans.com", "en") internal class CosmicScansParser(context: MangaLoaderContext) : MangaReaderParser(context, MangaParserSource.COSMICSCANS, "cosmic-scans.com", pageSize = 20, searchPageSize = 10) { diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/DrakeScans.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/DrakeScans.kt index fdf9ce6b9..0d47dd630 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/DrakeScans.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/DrakeScans.kt @@ -5,6 +5,6 @@ import org.koitharu.kotatsu.parsers.MangaSourceParser import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser -@MangaSourceParser("DRAKESCANS", "DrakeScans", "en") +@MangaSourceParser("DRAKESCANS", "DrakeComic", "en") internal class DrakeScans(context: MangaLoaderContext) : - MangaReaderParser(context, MangaParserSource.DRAKESCANS, "drakescans.com", 20, 10) + MangaReaderParser(context, MangaParserSource.DRAKESCANS, "drakecomic.com", 20, 10) diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/EnThunderScans.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/EnThunderScans.kt new file mode 100644 index 000000000..c8a20a21e --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/EnThunderScans.kt @@ -0,0 +1,19 @@ +package org.koitharu.kotatsu.parsers.site.mangareader.en + +import org.koitharu.kotatsu.parsers.MangaLoaderContext +import org.koitharu.kotatsu.parsers.MangaSourceParser +import org.koitharu.kotatsu.parsers.model.MangaParserSource +import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser + +@MangaSourceParser("ENTHUNDERSCANS", "EnThunderScans", "en") +internal class EnThunderScans(context: MangaLoaderContext) : + MangaReaderParser( + context, + MangaParserSource.ENTHUNDERSCANS, + "en-thunderscans.com", + pageSize = 30, + searchPageSize = 10, + ) { + override val listUrl = "/comics" + override val isTagsExclusionSupported = false +} diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/ErosScans.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/ErosScans.kt index ac06df6f1..53cc8f8f4 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/ErosScans.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/ErosScans.kt @@ -3,7 +3,6 @@ package org.koitharu.kotatsu.parsers.site.mangareader.en import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser import org.koitharu.kotatsu.parsers.model.MangaParserSource -import org.koitharu.kotatsu.parsers.model.MangaSource import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser @MangaSourceParser("EROSSCANS", "ErosScans", "en") diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/FuryManga.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/FuryManga.kt new file mode 100644 index 000000000..1cba6e1f0 --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/FuryManga.kt @@ -0,0 +1,14 @@ +package org.koitharu.kotatsu.parsers.site.mangareader.en + +import org.koitharu.kotatsu.parsers.Broken +import org.koitharu.kotatsu.parsers.MangaLoaderContext +import org.koitharu.kotatsu.parsers.MangaSourceParser +import org.koitharu.kotatsu.parsers.model.MangaParserSource +import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser + +@Broken +@MangaSourceParser("FURYMANGA", "FuryManga", "en") +internal class FuryManga(context: MangaLoaderContext) : + MangaReaderParser(context, MangaParserSource.FURYMANGA, "furymanga.com", pageSize = 30, searchPageSize = 10) { + override val listUrl = "/comics" +} diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/MangaGalaxyParser.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/MangaGalaxyParser.kt index 48cd54d16..ca89c2f5f 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/MangaGalaxyParser.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/MangaGalaxyParser.kt @@ -1,55 +1,13 @@ package org.koitharu.kotatsu.parsers.site.mangareader.en -import org.jsoup.nodes.Document -import org.jsoup.select.Elements + +import org.koitharu.kotatsu.parsers.Broken import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser -import org.koitharu.kotatsu.parsers.model.MangaChapter import org.koitharu.kotatsu.parsers.model.MangaParserSource -import org.koitharu.kotatsu.parsers.site.madara.MadaraParser -import org.koitharu.kotatsu.parsers.util.* -import java.text.SimpleDateFormat -import java.util.Collections.emptyMap +import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser +@Broken // Not dead, changed template @MangaSourceParser("MANGAGALAXY", "MangaGalaxy", "en") internal class MangaGalaxyParser(context: MangaLoaderContext) : - MadaraParser(context, MangaParserSource.RESETSCANS, "mangagalaxy.org", 18) { - - override val datePattern = "MM dd" - - override suspend fun loadChapters(mangaUrl: String, document: Document): List { - val doc = if (postReq) { - val mangaId = document.select("div#manga-chapters-holder").attr("data-id") - val url = "https://$domain/wp-admin/admin-ajax.php" - val postData = "action=manga_get_chapters&manga=$mangaId" - webClient.httpPost(url, postData).parseHtml() - } else { - val url = mangaUrl.toAbsoluteUrl(domain).removeSuffix('/') + "/home/ajax/chapters/" - webClient.httpPost(url, emptyMap()).parseHtml() - } - val dateFormat = SimpleDateFormat(datePattern, sourceLocale) - return doc.select(selectChapter).mapChapters(reversed = true) { _, li -> - val a = li.getElementsByTag("a").findWithText() - val href = a?.attrAsRelativeUrlOrNull("href") ?: li.parseFailed("Link is missing") - val link = href + stylePage - val dateText = li.selectFirst("a.c-new-tag")?.attr("title") ?: li.selectFirst(selectDate)?.text() - val name = a.text() - MangaChapter( - id = generateUid(href), - url = link, - name = name, - number = 0f, - volume = 0, - branch = null, - uploadDate = parseChapterDate( - dateFormat, - dateText, - ), - scanlator = null, - source = source, - ) - } - } - - private fun Elements.findWithText() = firstOrNull { it.hasText() } ?: first() -} + MangaReaderParser(context, MangaParserSource.MANGAGALAXY, "mangagalaxy.org", 20, 10) diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/MangaGojo.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/MangaGojo.kt new file mode 100644 index 000000000..763eb44c5 --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/MangaGojo.kt @@ -0,0 +1,10 @@ +package org.koitharu.kotatsu.parsers.site.mangareader.en + +import org.koitharu.kotatsu.parsers.MangaLoaderContext +import org.koitharu.kotatsu.parsers.MangaSourceParser +import org.koitharu.kotatsu.parsers.model.MangaParserSource +import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser + +@MangaSourceParser("MANGAGOJO", "MangaGojo", "en") +internal class MangaGojo(context: MangaLoaderContext) : + MangaReaderParser(context, MangaParserSource.MANGAGOJO, "mangagojo.com", 30, 20) diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/ReadersPoint.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/ReadersPoint.kt index b99c4ef3c..34e0617d4 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/ReadersPoint.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/ReadersPoint.kt @@ -7,13 +7,7 @@ import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser @MangaSourceParser("READERSPOINT", "ReadersPoint", "en") internal class ReadersPoint(context: MangaLoaderContext) : - MangaReaderParser( - context, - MangaParserSource.READERSPOINT, - "readers-point.space", - pageSize = 20, - searchPageSize = 10, - ) { + MangaReaderParser(context, MangaParserSource.READERSPOINT, "qscomics.org", pageSize = 20, searchPageSize = 10) { override val listUrl = "/series" override val isTagsExclusionSupported = false } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/RizzComic.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/RizzComic.kt index 71db541b1..37dbdc851 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/RizzComic.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/RizzComic.kt @@ -36,7 +36,7 @@ internal class RizzComic(context: MangaLoaderContext) : private var randomPartCache = SuspendLazy(::getRandomPart) private val randomPartRegex = Regex("""^(r\d+-)""") private val slugRegex = Regex("""[^a-z0-9]+""") - private fun searchMangaSelector() = ".utao .uta .imgu, .listupd .bs .bsx, .listo .bs .bsx" + private val searchMangaSelector = ".utao .uta .imgu, .listupd .bs .bsx, .listo .bs .bsx" private suspend fun getRandomPart(): String { val request = Request.Builder() .url("https://$domain$listUrl") @@ -45,7 +45,7 @@ internal class RizzComic(context: MangaLoaderContext) : val response = context.httpClient.newCall(request).await() val url = response.parseHtml() - .selectFirst(searchMangaSelector())!! + .selectFirst(searchMangaSelector)!! .select("a").attr("href") val slug = url diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/ShojoScans.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/ShojoScans.kt new file mode 100644 index 000000000..f60e5629d --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/ShojoScans.kt @@ -0,0 +1,12 @@ +package org.koitharu.kotatsu.parsers.site.mangareader.en + +import org.koitharu.kotatsu.parsers.MangaLoaderContext +import org.koitharu.kotatsu.parsers.MangaSourceParser +import org.koitharu.kotatsu.parsers.model.MangaParserSource +import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser + +@MangaSourceParser("SHOJOSCANS", "ShojoScans", "en") +internal class ShojoScans(context: MangaLoaderContext) : + MangaReaderParser(context, MangaParserSource.SHOJOSCANS, "shojoscans.com", pageSize = 20, searchPageSize = 10) { + override val listUrl = "/comics" +} diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/SpiderScans.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/SpiderScans.kt new file mode 100644 index 000000000..b1cebee27 --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/SpiderScans.kt @@ -0,0 +1,10 @@ +package org.koitharu.kotatsu.parsers.site.mangareader.en + +import org.koitharu.kotatsu.parsers.MangaLoaderContext +import org.koitharu.kotatsu.parsers.MangaSourceParser +import org.koitharu.kotatsu.parsers.model.MangaParserSource +import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser + +@MangaSourceParser("SPIDERSCANS", "SpiderScans", "en") +internal class SpiderScans(context: MangaLoaderContext) : + MangaReaderParser(context, MangaParserSource.SPIDERSCANS, "spiderscans.xyz", pageSize = 20, searchPageSize = 10) diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/es/Bymichiby.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/es/Bymichiby.kt new file mode 100644 index 000000000..6b41a448f --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/es/Bymichiby.kt @@ -0,0 +1,11 @@ +package org.koitharu.kotatsu.parsers.site.mangareader.es + +import org.koitharu.kotatsu.parsers.MangaLoaderContext +import org.koitharu.kotatsu.parsers.MangaSourceParser +import org.koitharu.kotatsu.parsers.model.ContentType +import org.koitharu.kotatsu.parsers.model.MangaParserSource +import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser + +@MangaSourceParser("BYMICHIBY", "Bymichiby", "es", ContentType.HENTAI) +internal class Bymichiby(context: MangaLoaderContext) : + MangaReaderParser(context, MangaParserSource.BYMICHIBY, "bymichiby.com", pageSize = 20, searchPageSize = 10) diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/es/Doujins.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/es/Doujins.kt new file mode 100644 index 000000000..05e25419e --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/es/Doujins.kt @@ -0,0 +1,14 @@ +package org.koitharu.kotatsu.parsers.site.mangareader.es + +import org.koitharu.kotatsu.parsers.MangaLoaderContext +import org.koitharu.kotatsu.parsers.MangaSourceParser +import org.koitharu.kotatsu.parsers.model.ContentType +import org.koitharu.kotatsu.parsers.model.MangaParserSource +import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser + +@MangaSourceParser("DOUJINS", "Doujins.lat", "es", ContentType.HENTAI) +internal class Doujins(context: MangaLoaderContext) : + MangaReaderParser(context, MangaParserSource.DOUJINS, "doujins.lat", pageSize = 20, searchPageSize = 10) { + override val listUrl = "/comic" + override val isTagsExclusionSupported = false +} diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/es/DtupScan.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/es/DtupScan.kt new file mode 100644 index 000000000..edf630c7d --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/es/DtupScan.kt @@ -0,0 +1,10 @@ +package org.koitharu.kotatsu.parsers.site.mangareader.es + +import org.koitharu.kotatsu.parsers.MangaLoaderContext +import org.koitharu.kotatsu.parsers.MangaSourceParser +import org.koitharu.kotatsu.parsers.model.MangaParserSource +import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser + +@MangaSourceParser("DTUPSCAN", "DtupScan", "es") +internal class DtupScan(context: MangaLoaderContext) : + MangaReaderParser(context, MangaParserSource.DTUPSCAN, "dtupscan.com", pageSize = 20, searchPageSize = 10) diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/es/HentaiReader.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/es/HentaiReader.kt new file mode 100644 index 000000000..f3c541296 --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/es/HentaiReader.kt @@ -0,0 +1,131 @@ +package org.koitharu.kotatsu.parsers.site.mangareader.es + +import org.json.JSONObject +import org.koitharu.kotatsu.parsers.MangaLoaderContext +import org.koitharu.kotatsu.parsers.MangaSourceParser +import org.koitharu.kotatsu.parsers.model.ContentType +import org.koitharu.kotatsu.parsers.model.Manga +import org.koitharu.kotatsu.parsers.model.MangaChapter +import org.koitharu.kotatsu.parsers.model.MangaListFilter +import org.koitharu.kotatsu.parsers.model.MangaPage +import org.koitharu.kotatsu.parsers.model.MangaParserSource +import org.koitharu.kotatsu.parsers.model.MangaState +import org.koitharu.kotatsu.parsers.model.SortOrder +import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser +import org.koitharu.kotatsu.parsers.util.* +import java.text.SimpleDateFormat +import java.util.ArrayList + +@MangaSourceParser("HENTAIREADER", "HentaiReader", "es", ContentType.HENTAI) +internal class HentaiReader(context: MangaLoaderContext) : + MangaReaderParser(context, MangaParserSource.HENTAIREADER, "hentaireader.org", pageSize = 25, searchPageSize = 25) { + override val listUrl = "/tipo/all" + override val isTagsExclusionSupported = false + + override suspend fun getListPage(page: Int, filter: MangaListFilter?): List { + val url = buildString { + append("https://") + append(domain) + + when (filter) { + + is MangaListFilter.Search -> { + append(listUrl) + append("?s=") + append(filter.query.urlEncoded()) + append("&page=") + append(page.toString()) + } + + is MangaListFilter.Advanced -> { + append(listUrl) + append("?order=") + append( + when (filter.sortOrder) { + SortOrder.ALPHABETICAL -> "title" + SortOrder.ALPHABETICAL_DESC -> "titlereverse" + SortOrder.NEWEST -> "latest" + SortOrder.POPULARITY -> "popular" + SortOrder.UPDATED -> "update" + else -> "" + }, + ) + + filter.tags.forEach { + append("&") + append("tags[]".urlEncoded()) + append("=") + append(it.key) + } + + if (filter.states.isNotEmpty()) { + filter.states.oneOrThrowIfMany()?.let { + append("&status=") + when (it) { + MangaState.ONGOING -> append("ongoing") + MangaState.FINISHED -> append("completed") + MangaState.PAUSED -> append("hiatus") + else -> append("") + } + } + } + + append("&page=") + append(page.toString()) + } + + null -> { + append(listUrl) + append("/?order=update&page=") + append(page.toString()) + } + } + } + return parseMangaList(webClient.httpGet(url).parseHtml()) + } + + override val selectChapter = ".releases" + override suspend fun getDetails(manga: Manga): Manga { + val docs = webClient.httpGet(manga.url.toAbsoluteUrl(domain)).parseHtml() + val dateFormat = SimpleDateFormat(datePattern, sourceLocale) + val chapters = docs.select(selectChapter).mapChapters(reversed = true) { index, element -> + val url = element.selectFirst("a")?.attrAsRelativeUrl("href") ?: return@mapChapters null + MangaChapter( + id = generateUid(url), + name = element.selectFirst("h2")?.text() ?: "Chapter ${index + 1}", + url = url, + number = index + 1f, + volume = 0, + scanlator = null, + uploadDate = dateFormat.tryParse(docs.selectFirst("time")?.text()), + branch = null, + source = source, + ) + } + return parseInfo(docs, manga, chapters) + } + + override suspend fun getPages(chapter: MangaChapter): List { + val chapterUrl = chapter.url.toAbsoluteUrl(domain) + val docs = webClient.httpGet(chapterUrl).parseHtml() + val script = docs.selectFirstOrThrow(selectTestScript) + val images = JSONObject(script.data().substringAfter('(').substringBeforeLast(')').replace(", ] }]", " ] }]")) + .getJSONArray("sources") + .getJSONObject(0) + .getJSONArray("images") + + val pages = ArrayList(images.length()) + for (i in 0 until images.length()) { + pages.add( + MangaPage( + id = generateUid(images.getString(i)), + url = images.getString(i), + preview = null, + source = source, + ), + ) + } + return pages + } +} + diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/es/NekoScans.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/es/InariPikav.kt similarity index 54% rename from src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/es/NekoScans.kt rename to src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/es/InariPikav.kt index 39044aaab..056fbde35 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/es/NekoScans.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/es/InariPikav.kt @@ -5,10 +5,8 @@ import org.koitharu.kotatsu.parsers.MangaSourceParser import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser -@MangaSourceParser("NEKOSCANS", "NekoScans", "es") -internal class NekoScans(context: MangaLoaderContext) : - MangaReaderParser(context, MangaParserSource.NEKOSCANS, "nekoscans.com", pageSize = 20, searchPageSize = 10) { - override val listUrl = "/proyecto" - override val encodedSrc = true +@MangaSourceParser("INARIPIKAV", "InariPikav", "es") +internal class InariPikav(context: MangaLoaderContext) : + MangaReaderParser(context, MangaParserSource.INARIPIKAV, "inaripikav.org", pageSize = 10, searchPageSize = 10) { override val isTagsExclusionSupported = false } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/es/LectorHentai.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/es/LectorHentai.kt new file mode 100644 index 000000000..6dec41094 --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/es/LectorHentai.kt @@ -0,0 +1,123 @@ +package org.koitharu.kotatsu.parsers.site.mangareader.es + +import org.koitharu.kotatsu.parsers.MangaLoaderContext +import org.koitharu.kotatsu.parsers.MangaSourceParser +import org.koitharu.kotatsu.parsers.model.ContentType +import org.koitharu.kotatsu.parsers.model.Manga +import org.koitharu.kotatsu.parsers.model.MangaChapter +import org.koitharu.kotatsu.parsers.model.MangaListFilter +import org.koitharu.kotatsu.parsers.model.MangaPage +import org.koitharu.kotatsu.parsers.model.MangaParserSource +import org.koitharu.kotatsu.parsers.model.MangaState +import org.koitharu.kotatsu.parsers.model.SortOrder +import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser +import org.koitharu.kotatsu.parsers.util.* +import java.text.SimpleDateFormat + +@MangaSourceParser("LECTORHENTAI", "LectorHentai", "es", ContentType.HENTAI) +internal class LectorHentai(context: MangaLoaderContext) : + MangaReaderParser(context, MangaParserSource.LECTORHENTAI, "lectorhentai.com", pageSize = 25, searchPageSize = 25) { + override val listUrl = "/tipo/all" + override val isTagsExclusionSupported = false + + override suspend fun getListPage(page: Int, filter: MangaListFilter?): List { + val url = buildString { + append("https://") + append(domain) + + when (filter) { + + is MangaListFilter.Search -> { + append(listUrl) + append("?s=") + append(filter.query.urlEncoded()) + append("&page=") + append(page.toString()) + } + + is MangaListFilter.Advanced -> { + append(listUrl) + append("?order=") + append( + when (filter.sortOrder) { + SortOrder.ALPHABETICAL -> "title" + SortOrder.ALPHABETICAL_DESC -> "titlereverse" + SortOrder.NEWEST -> "latest" + SortOrder.POPULARITY -> "popular" + SortOrder.UPDATED -> "update" + else -> "" + }, + ) + + filter.tags.forEach { + append("&") + append("genre[]".urlEncoded()) + append("=") + append(it.key) + } + + if (filter.states.isNotEmpty()) { + filter.states.oneOrThrowIfMany()?.let { + append("&status=") + when (it) { + MangaState.ONGOING -> append("ongoing") + MangaState.FINISHED -> append("completed") + MangaState.PAUSED -> append("hiatus") + else -> append("") + } + } + } + + append("&page=") + append(page.toString()) + } + + null -> { + append(listUrl) + append("/?order=update&page=") + append(page.toString()) + } + } + } + return parseMangaList(webClient.httpGet(url).parseHtml()) + } + + override val selectChapter = ".releases" + override suspend fun getDetails(manga: Manga): Manga { + val docs = webClient.httpGet(manga.url.toAbsoluteUrl(domain)).parseHtml() + val dateFormat = SimpleDateFormat(datePattern, sourceLocale) + val chapters = docs.select(selectChapter).mapChapters(reversed = true) { index, element -> + val url = element.selectFirst("a")?.attrAsRelativeUrl("href") ?: return@mapChapters null + MangaChapter( + id = generateUid(url), + name = element.selectFirst("h2")?.text() ?: "Chapter ${index + 1}", + url = url, + number = index + 1f, + volume = 0, + scanlator = null, + uploadDate = dateFormat.tryParse(docs.selectFirst("time")?.text()), + branch = null, + source = source, + ) + } + return parseInfo(docs, manga, chapters) + } + + override suspend fun getPages(chapter: MangaChapter): List { + val chapterUrl = chapter.url.toAbsoluteUrl(domain) + val docs = webClient.httpGet(chapterUrl).parseHtml() + val script = docs.selectFirstOrThrow(selectTestScript).data() + val images = script.substringAfterLast("\"images\": [").substringBefore("]") + .replace(" ", "").replace("\"", "").replace("\n", "").split(",").dropLast(1) + return images.map { img -> + val url = "https://" + img.substringAfter("//") + MangaPage( + id = generateUid(url), + url = url, + preview = null, + source = source, + ) + } + } + +} diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/es/MangaTv.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/es/MangaTv.kt new file mode 100644 index 000000000..2f679c7d7 --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/es/MangaTv.kt @@ -0,0 +1,120 @@ +package org.koitharu.kotatsu.parsers.site.mangareader.es + +import org.json.JSONObject +import org.koitharu.kotatsu.parsers.MangaLoaderContext +import org.koitharu.kotatsu.parsers.MangaSourceParser +import org.koitharu.kotatsu.parsers.model.Manga +import org.koitharu.kotatsu.parsers.model.MangaChapter +import org.koitharu.kotatsu.parsers.model.MangaListFilter +import org.koitharu.kotatsu.parsers.model.MangaPage +import org.koitharu.kotatsu.parsers.model.MangaParserSource +import org.koitharu.kotatsu.parsers.model.MangaState +import org.koitharu.kotatsu.parsers.model.SortOrder +import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser +import org.koitharu.kotatsu.parsers.util.domain +import org.koitharu.kotatsu.parsers.util.generateUid +import org.koitharu.kotatsu.parsers.util.oneOrThrowIfMany +import org.koitharu.kotatsu.parsers.util.parseHtml +import org.koitharu.kotatsu.parsers.util.selectFirstOrThrow +import org.koitharu.kotatsu.parsers.util.toAbsoluteUrl +import org.koitharu.kotatsu.parsers.util.urlEncoded +import java.util.ArrayList + +@MangaSourceParser("MANGATV", "MangaTv", "es") +internal class MangaTv(context: MangaLoaderContext) : + MangaReaderParser(context, MangaParserSource.MANGATV, "www.mangatv.net", pageSize = 25, searchPageSize = 25) { + override val listUrl = "/lista" + override val isTagsExclusionSupported = false + override val datePattern = "yyyy-MM-dd" + + override suspend fun getListPage(page: Int, filter: MangaListFilter?): List { + val url = buildString { + append("https://") + append(domain) + + when (filter) { + + is MangaListFilter.Search -> { + append("/lista?s=") + append(filter.query.urlEncoded()) + append("&page=") + append(page.toString()) + } + + is MangaListFilter.Advanced -> { + append(listUrl) + + append("/?order=") + append( + when (filter.sortOrder) { + SortOrder.ALPHABETICAL -> "title" + SortOrder.ALPHABETICAL_DESC -> "titlereverse" + SortOrder.NEWEST -> "latest" + SortOrder.POPULARITY -> "popular" + SortOrder.UPDATED -> "update" + else -> "" + }, + ) + + filter.tags.forEach { + append("&") + append("genre[]".urlEncoded()) + append("=") + append(it.key) + } + + filter.tagsExclude.forEach { + append("&") + append("genre[]".urlEncoded()) + append("=-") + append(it.key) + } + + if (filter.states.isNotEmpty()) { + filter.states.oneOrThrowIfMany()?.let { + append("&status=") + when (it) { + MangaState.ONGOING -> append("ongoing") + MangaState.FINISHED -> append("completed") + MangaState.PAUSED -> append("hiatus") + else -> append("") + } + } + } + + append("&page=") + append(page.toString()) + } + + null -> { + append(listUrl) + append("/?order=update&page=") + append(page.toString()) + } + } + } + return parseMangaList(webClient.httpGet(url).parseHtml()) + } + + override suspend fun getPages(chapter: MangaChapter): List { + val chapterUrl = chapter.url.toAbsoluteUrl(domain) + val docs = webClient.httpGet(chapterUrl).parseHtml() + val script = docs.selectFirstOrThrow(selectTestScript) + val images = JSONObject(script.data().substringAfter('(').substringBeforeLast(')').replace(", ] }]", " ] }]")) + .getJSONArray("sources") + .getJSONObject(0) + .getJSONArray("images") + val pages = ArrayList(images.length()) + for (i in 0 until images.length()) { + pages.add( + MangaPage( + id = generateUid(images.getString(i)), + url = images.getString(i), + preview = null, + source = source, + ), + ) + } + return pages + } +} diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/es/RagnaScan.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/es/RagnaScan.kt index d67bbeada..36f24d814 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/es/RagnaScan.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/es/RagnaScan.kt @@ -1,10 +1,12 @@ package org.koitharu.kotatsu.parsers.site.mangareader.es +import org.koitharu.kotatsu.parsers.Broken import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser +@Broken @MangaSourceParser("RAGNASCAN", "RagnaScan", "es") internal class RagnaScan(context: MangaLoaderContext) : MangaReaderParser(context, MangaParserSource.RAGNASCAN, "ragnascan.com", pageSize = 5, searchPageSize = 10) { diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/es/UkiyoToon.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/es/UkiyoToon.kt new file mode 100644 index 000000000..db54e5cf3 --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/es/UkiyoToon.kt @@ -0,0 +1,12 @@ +package org.koitharu.kotatsu.parsers.site.mangareader.es + +import org.koitharu.kotatsu.parsers.MangaLoaderContext +import org.koitharu.kotatsu.parsers.MangaSourceParser +import org.koitharu.kotatsu.parsers.model.MangaParserSource +import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser + +@MangaSourceParser("UKIYOTOON", "UkiyoToon", "es") +internal class UkiyoToon(context: MangaLoaderContext) : + MangaReaderParser(context, MangaParserSource.UKIYOTOON, "ukiyotoon.com", 30, 10) { + override val isTagsExclusionSupported = false +} diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/fr/EtheralRadiance.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/fr/EtheralRadiance.kt new file mode 100644 index 000000000..a9b5c6fee --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/fr/EtheralRadiance.kt @@ -0,0 +1,30 @@ +package org.koitharu.kotatsu.parsers.site.mangareader.fr + + +import org.koitharu.kotatsu.parsers.Broken +import org.koitharu.kotatsu.parsers.MangaLoaderContext +import org.koitharu.kotatsu.parsers.MangaSourceParser +import org.koitharu.kotatsu.parsers.model.MangaParserSource +import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser +import org.koitharu.kotatsu.parsers.util.domain +import org.koitharu.kotatsu.parsers.util.insertCookies + +@Broken +@MangaSourceParser("ETHERALRADIANCE", "EtheralRadiance", "fr") +internal class EtheralRadiance(context: MangaLoaderContext) : + MangaReaderParser( + context, + MangaParserSource.ETHERALRADIANCE, + "www.etheralradiance.eu", + pageSize = 20, + searchPageSize = 10, + ) { + override val isTagsExclusionSupported = false + + init { + context.cookieJar.insertCookies( + domain, + "_lscache_vary=1;", + ) + } +} diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/fr/RevolutionScantrad.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/fr/RevolutionScantrad.kt new file mode 100644 index 000000000..da94e9291 --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/fr/RevolutionScantrad.kt @@ -0,0 +1,158 @@ +package org.koitharu.kotatsu.parsers.site.mangareader.fr + +import org.jsoup.nodes.Document +import org.koitharu.kotatsu.parsers.ErrorMessages +import org.koitharu.kotatsu.parsers.MangaLoaderContext +import org.koitharu.kotatsu.parsers.MangaSourceParser +import org.koitharu.kotatsu.parsers.model.Manga +import org.koitharu.kotatsu.parsers.model.MangaChapter +import org.koitharu.kotatsu.parsers.model.MangaListFilter +import org.koitharu.kotatsu.parsers.model.MangaParserSource +import org.koitharu.kotatsu.parsers.model.MangaState +import org.koitharu.kotatsu.parsers.model.RATING_UNKNOWN +import org.koitharu.kotatsu.parsers.model.SortOrder +import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser +import org.koitharu.kotatsu.parsers.util.attrAsAbsoluteUrl +import org.koitharu.kotatsu.parsers.util.attrAsRelativeUrl +import org.koitharu.kotatsu.parsers.util.domain +import org.koitharu.kotatsu.parsers.util.generateUid +import org.koitharu.kotatsu.parsers.util.mapChapters +import org.koitharu.kotatsu.parsers.util.oneOrThrowIfMany +import org.koitharu.kotatsu.parsers.util.parseHtml +import org.koitharu.kotatsu.parsers.util.src +import org.koitharu.kotatsu.parsers.util.toAbsoluteUrl +import org.koitharu.kotatsu.parsers.util.tryParse +import org.koitharu.kotatsu.parsers.util.urlEncoded +import java.text.SimpleDateFormat + +@MangaSourceParser("REVOLUTIONSCANTRAD", "RevolutionScantrad", "fr") +internal class RevolutionScantrad(context: MangaLoaderContext) : + MangaReaderParser( + context, + MangaParserSource.REVOLUTIONSCANTRAD, + "www.revolutionscantrad.com", + pageSize = 100, + searchPageSize = 10, + ) { + override val listUrl = "/series.html" + override val datePattern = "yyyy" + override val isTagsExclusionSupported = false + override val isSearchSupported = false + + override suspend fun getListPage(page: Int, filter: MangaListFilter?): List { + if (page > 1) { + return emptyList() + } + val url = buildString { + append("https://") + append(domain) + + when (filter) { + + is MangaListFilter.Search -> { + throw IllegalArgumentException(ErrorMessages.SEARCH_NOT_SUPPORTED) + } + + is MangaListFilter.Advanced -> { + append(listUrl) + + append("?order=") + append( + when (filter.sortOrder) { + SortOrder.ALPHABETICAL -> "title" + SortOrder.ALPHABETICAL_DESC -> "titlereverse" + SortOrder.NEWEST -> "latest" + SortOrder.POPULARITY -> "popular" + SortOrder.UPDATED -> "update" + else -> "" + }, + ) + + filter.tags.forEach { + append("&") + append("genre[]".urlEncoded()) + append("=") + append(it.key) + } + + filter.tagsExclude.forEach { + append("&") + append("genre[]".urlEncoded()) + append("=-") + append(it.key) + } + + if (filter.states.isNotEmpty()) { + filter.states.oneOrThrowIfMany()?.let { + append("&status=") + when (it) { + MangaState.ONGOING -> append("ongoing") + MangaState.FINISHED -> append("completed") + MangaState.PAUSED -> append("hiatus") + else -> append("") + } + } + } + + append("&page=") + append(page.toString()) + } + + null -> { + append(listUrl) + append("/?order=update&page=") + append(page.toString()) + } + } + } + return parseMangaList(webClient.httpGet(url).parseHtml()) + } + + override val selectPage = "div#readerarea img.chapter-image" + + override fun parseMangaList(docs: Document): List { + return docs.select(selectMangaList).mapNotNull { + val a = it.selectFirst("a") ?: return@mapNotNull null + val relativeUrl = "/" + a.attrAsRelativeUrl("href") + val rating = it.selectFirst(".numscore")?.text() + ?.toFloatOrNull()?.div(10) ?: RATING_UNKNOWN + Manga( + id = generateUid(relativeUrl), + url = relativeUrl, + title = it.selectFirst(selectMangaListTitle)?.text() ?: a.attr("title"), + altTitle = null, + publicUrl = a.attrAsAbsoluteUrl("href"), + rating = rating, + isNsfw = isNsfwSource, + coverUrl = it.selectFirst(selectMangaListImg)?.src().orEmpty(), + tags = emptySet(), + state = null, + author = null, + source = source, + ) + } + } + + override suspend fun getDetails(manga: Manga): Manga { + val docs = webClient.httpGet(manga.url.toAbsoluteUrl(domain)).parseHtml() + val dateFormat = SimpleDateFormat(datePattern, sourceLocale) + val urlStart = manga.url.substringBeforeLast('/') + val chapters = docs.select(selectChapter).mapChapters(reversed = true) { index, element -> + val url = element.selectFirst("a")?.attrAsRelativeUrl("href") ?: return@mapChapters null + MangaChapter( + id = generateUid(url), + name = element.selectFirst(".chapternum")?.text() ?: "Chapter ${index + 1}", + url = "$urlStart/$url", + number = index + 1f, + volume = 0, + scanlator = null, + uploadDate = dateFormat.tryParse(element.selectFirst(".chapterdate")?.text()), + branch = null, + source = source, + ) + } + return parseInfo(docs, manga, chapters) + } + + +} diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/fr/RimuScans.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/fr/RimuScans.kt index 3d98ae7bf..f2dc8868c 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/fr/RimuScans.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/fr/RimuScans.kt @@ -3,7 +3,6 @@ package org.koitharu.kotatsu.parsers.site.mangareader.fr import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser import org.koitharu.kotatsu.parsers.model.MangaParserSource -import org.koitharu.kotatsu.parsers.model.MangaSource import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser @MangaSourceParser("RIMUSCANS", "RimuScans", "fr") diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/fr/XxxRevolutionScantrad.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/fr/XxxRevolutionScantrad.kt new file mode 100644 index 000000000..3aeb4ff4f --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/fr/XxxRevolutionScantrad.kt @@ -0,0 +1,159 @@ +package org.koitharu.kotatsu.parsers.site.mangareader.fr + +import org.jsoup.nodes.Document +import org.koitharu.kotatsu.parsers.ErrorMessages +import org.koitharu.kotatsu.parsers.MangaLoaderContext +import org.koitharu.kotatsu.parsers.MangaSourceParser +import org.koitharu.kotatsu.parsers.model.ContentType +import org.koitharu.kotatsu.parsers.model.Manga +import org.koitharu.kotatsu.parsers.model.MangaChapter +import org.koitharu.kotatsu.parsers.model.MangaListFilter +import org.koitharu.kotatsu.parsers.model.MangaParserSource +import org.koitharu.kotatsu.parsers.model.MangaState +import org.koitharu.kotatsu.parsers.model.RATING_UNKNOWN +import org.koitharu.kotatsu.parsers.model.SortOrder +import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser +import org.koitharu.kotatsu.parsers.util.attrAsAbsoluteUrl +import org.koitharu.kotatsu.parsers.util.attrAsRelativeUrl +import org.koitharu.kotatsu.parsers.util.domain +import org.koitharu.kotatsu.parsers.util.generateUid +import org.koitharu.kotatsu.parsers.util.mapChapters +import org.koitharu.kotatsu.parsers.util.oneOrThrowIfMany +import org.koitharu.kotatsu.parsers.util.parseHtml +import org.koitharu.kotatsu.parsers.util.src +import org.koitharu.kotatsu.parsers.util.toAbsoluteUrl +import org.koitharu.kotatsu.parsers.util.tryParse +import org.koitharu.kotatsu.parsers.util.urlEncoded +import java.text.SimpleDateFormat + +@MangaSourceParser("XXXREVOLUTIONSCANTRAD", "Xxx.RevolutionScantrad", "fr", ContentType.HENTAI) +internal class XxxRevolutionScantrad(context: MangaLoaderContext) : + MangaReaderParser( + context, + MangaParserSource.XXXREVOLUTIONSCANTRAD, + "xxx.revolutionscantrad.com", + pageSize = 100, + searchPageSize = 10, + ) { + override val listUrl = "/series.html" + override val datePattern = "yyyy" + override val isTagsExclusionSupported = false + override val isSearchSupported = false + + override suspend fun getListPage(page: Int, filter: MangaListFilter?): List { + if (page > 1) { + return emptyList() + } + val url = buildString { + append("https://") + append(domain) + + when (filter) { + + is MangaListFilter.Search -> { + throw IllegalArgumentException(ErrorMessages.SEARCH_NOT_SUPPORTED) + } + + is MangaListFilter.Advanced -> { + append(listUrl) + + append("?order=") + append( + when (filter.sortOrder) { + SortOrder.ALPHABETICAL -> "title" + SortOrder.ALPHABETICAL_DESC -> "titlereverse" + SortOrder.NEWEST -> "latest" + SortOrder.POPULARITY -> "popular" + SortOrder.UPDATED -> "update" + else -> "" + }, + ) + + filter.tags.forEach { + append("&") + append("genre[]".urlEncoded()) + append("=") + append(it.key) + } + + filter.tagsExclude.forEach { + append("&") + append("genre[]".urlEncoded()) + append("=-") + append(it.key) + } + + if (filter.states.isNotEmpty()) { + filter.states.oneOrThrowIfMany()?.let { + append("&status=") + when (it) { + MangaState.ONGOING -> append("ongoing") + MangaState.FINISHED -> append("completed") + MangaState.PAUSED -> append("hiatus") + else -> append("") + } + } + } + + append("&page=") + append(page.toString()) + } + + null -> { + append(listUrl) + append("/?order=update&page=") + append(page.toString()) + } + } + } + return parseMangaList(webClient.httpGet(url).parseHtml()) + } + + override val selectPage = "div#readerarea img.chapter-image" + + override fun parseMangaList(docs: Document): List { + return docs.select(selectMangaList).mapNotNull { + val a = it.selectFirst("a") ?: return@mapNotNull null + val relativeUrl = "/" + a.attrAsRelativeUrl("href") + val rating = it.selectFirst(".numscore")?.text() + ?.toFloatOrNull()?.div(10) ?: RATING_UNKNOWN + Manga( + id = generateUid(relativeUrl), + url = relativeUrl, + title = it.selectFirst(selectMangaListTitle)?.text() ?: a.attr("title"), + altTitle = null, + publicUrl = a.attrAsAbsoluteUrl("href"), + rating = rating, + isNsfw = isNsfwSource, + coverUrl = it.selectFirst(selectMangaListImg)?.src().orEmpty(), + tags = emptySet(), + state = null, + author = null, + source = source, + ) + } + } + + override suspend fun getDetails(manga: Manga): Manga { + val docs = webClient.httpGet(manga.url.toAbsoluteUrl(domain)).parseHtml() + val dateFormat = SimpleDateFormat(datePattern, sourceLocale) + val urlStart = manga.url.substringBeforeLast('/') + val chapters = docs.select(selectChapter).mapChapters(reversed = true) { index, element -> + val url = element.selectFirst("a")?.attrAsRelativeUrl("href") ?: return@mapChapters null + MangaChapter( + id = generateUid(url), + name = element.selectFirst(".chapternum")?.text() ?: "Chapter ${index + 1}", + url = "$urlStart/$url", + number = index + 1f, + volume = 0, + scanlator = null, + uploadDate = dateFormat.tryParse(element.selectFirst(".chapterdate")?.text()), + branch = null, + source = source, + ) + } + return parseInfo(docs, manga, chapters) + } + + +} diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/Comic21.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/Comic21.kt new file mode 100644 index 000000000..53271669b --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/Comic21.kt @@ -0,0 +1,14 @@ +package org.koitharu.kotatsu.parsers.site.mangareader.id + +import org.koitharu.kotatsu.parsers.MangaLoaderContext +import org.koitharu.kotatsu.parsers.MangaSourceParser +import org.koitharu.kotatsu.parsers.model.MangaParserSource +import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser +import java.util.Locale + +@MangaSourceParser("COMIC21", "Comic21", "id") +internal class Comic21(context: MangaLoaderContext) : + MangaReaderParser(context, MangaParserSource.COMIC21, "comic21.me", pageSize = 20, searchPageSize = 10) { + override val sourceLocale: Locale = Locale.ENGLISH + override val isTagsExclusionSupported = false +} diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/KomBatch.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/KomBatch.kt new file mode 100644 index 000000000..65727cc7c --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/KomBatch.kt @@ -0,0 +1,13 @@ +package org.koitharu.kotatsu.parsers.site.mangareader.id + +import org.koitharu.kotatsu.parsers.MangaLoaderContext +import org.koitharu.kotatsu.parsers.MangaSourceParser +import org.koitharu.kotatsu.parsers.model.ContentType +import org.koitharu.kotatsu.parsers.model.MangaParserSource +import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser + +@MangaSourceParser("KOMBATCH", "KomBatch", "id", ContentType.HENTAI) +internal class KomBatch(context: MangaLoaderContext) : + MangaReaderParser(context, MangaParserSource.KOMBATCH, "kombatch.cc", pageSize = 20, searchPageSize = 10) { + override val isTagsExclusionSupported = false +} diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/KomikGo.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/KomikGo.kt new file mode 100644 index 000000000..37fae1166 --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/KomikGo.kt @@ -0,0 +1,11 @@ +package org.koitharu.kotatsu.parsers.site.mangareader.id + +import org.koitharu.kotatsu.parsers.MangaLoaderContext +import org.koitharu.kotatsu.parsers.MangaSourceParser +import org.koitharu.kotatsu.parsers.model.ContentType +import org.koitharu.kotatsu.parsers.model.MangaParserSource +import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser + +@MangaSourceParser("KOMIKGO", "KomikGo", "id", ContentType.HENTAI) +internal class KomikGo(context: MangaLoaderContext) : + MangaReaderParser(context, MangaParserSource.KOMIKGO, "komikgo.xyz", pageSize = 20, searchPageSize = 10) diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/KomikLovers.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/KomikLovers.kt new file mode 100644 index 000000000..f9b1b23f9 --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/KomikLovers.kt @@ -0,0 +1,14 @@ +package org.koitharu.kotatsu.parsers.site.mangareader.id + +import org.koitharu.kotatsu.parsers.MangaLoaderContext +import org.koitharu.kotatsu.parsers.MangaSourceParser +import org.koitharu.kotatsu.parsers.model.MangaParserSource +import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser +import java.util.* + +@MangaSourceParser("KOMIKLOVERS", "KomikLovers", "id") +internal class KomikLovers(context: MangaLoaderContext) : + MangaReaderParser(context, MangaParserSource.KOMIKLOVERS, "komiklovers.com", pageSize = 20, searchPageSize = 10) { + override val sourceLocale: Locale = Locale.ENGLISH + override val listUrl = "/komik" +} diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/KomikPix.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/KomikPix.kt new file mode 100644 index 000000000..4ddaeed3d --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/KomikPix.kt @@ -0,0 +1,13 @@ +package org.koitharu.kotatsu.parsers.site.mangareader.id + +import org.koitharu.kotatsu.parsers.MangaLoaderContext +import org.koitharu.kotatsu.parsers.MangaSourceParser +import org.koitharu.kotatsu.parsers.model.ContentType +import org.koitharu.kotatsu.parsers.model.MangaParserSource +import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser + +@MangaSourceParser("KOMIKPIX", "KomikPix", "id", ContentType.HENTAI) +internal class KomikPix(context: MangaLoaderContext) : + MangaReaderParser(context, MangaParserSource.KOMIKPIX, "komikpix.com", pageSize = 30, searchPageSize = 14) { + override val listUrl = "/hentai" +} diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/KomikPoi.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/KomikPoi.kt new file mode 100644 index 000000000..06c085b96 --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/KomikPoi.kt @@ -0,0 +1,15 @@ +package org.koitharu.kotatsu.parsers.site.mangareader.id + +import org.koitharu.kotatsu.parsers.MangaLoaderContext +import org.koitharu.kotatsu.parsers.MangaSourceParser +import org.koitharu.kotatsu.parsers.model.ContentType +import org.koitharu.kotatsu.parsers.model.MangaParserSource +import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser +import java.util.* + +@MangaSourceParser("KOMIKPOI", "KomikPoi", "id", ContentType.HENTAI) +internal class KomikPoi(context: MangaLoaderContext) : + MangaReaderParser(context, MangaParserSource.KOMIKPOI, "komikpoi.com", pageSize = 20, searchPageSize = 10) { + override val sourceLocale: Locale = Locale.ENGLISH + override val isTagsExclusionSupported = false +} diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/Kyumik.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/Kyumik.kt new file mode 100644 index 000000000..beb2f3fdb --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/Kyumik.kt @@ -0,0 +1,11 @@ +package org.koitharu.kotatsu.parsers.site.mangareader.id + +import org.koitharu.kotatsu.parsers.MangaLoaderContext +import org.koitharu.kotatsu.parsers.MangaSourceParser +import org.koitharu.kotatsu.parsers.model.ContentType +import org.koitharu.kotatsu.parsers.model.MangaParserSource +import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser + +@MangaSourceParser("KYUMIK", "Kyumik", "id", ContentType.HENTAI) +internal class Kyumik(context: MangaLoaderContext) : + MangaReaderParser(context, MangaParserSource.KYUMIK, "kyumik.com", pageSize = 20, searchPageSize = 10) diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/ManhwaIndoIcu.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/ManhwaIndoIcu.kt index eadc56507..66db6bc92 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/ManhwaIndoIcu.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/ManhwaIndoIcu.kt @@ -7,8 +7,9 @@ import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser import java.util.* -@MangaSourceParser("MANHWAINDOICU", "ManhwaIndo.sbs", "id", ContentType.HENTAI) +@MangaSourceParser("MANHWAINDOICU", "KomikCinta", "id", ContentType.HENTAI) internal class ManhwaIndoIcu(context: MangaLoaderContext) : - MangaReaderParser(context, MangaParserSource.MANHWAINDOICU, "manhwaindo.sbs", pageSize = 30, searchPageSize = 10) { + MangaReaderParser(context, MangaParserSource.MANHWAINDOICU, "komikcinta.icu", pageSize = 30, searchPageSize = 10) { override val sourceLocale: Locale = Locale.ENGLISH + override val listUrl = "/komik" } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/ManhwaIndoParser.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/ManhwaIndoParser.kt index bdc235954..56189459b 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/ManhwaIndoParser.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/ManhwaIndoParser.kt @@ -4,12 +4,10 @@ import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser -import java.util.* -@MangaSourceParser("MANHWAINDO", "ManhwaIndo.id", "id") +@MangaSourceParser("MANHWAINDO", "ManhwaIndo", "id") internal class ManhwaIndoParser(context: MangaLoaderContext) : - MangaReaderParser(context, MangaParserSource.MANHWAINDO, "manhwaindo.id", pageSize = 30, searchPageSize = 10) { - override val datePattern = "MMMM dd, yyyy" - override val sourceLocale: Locale = Locale.ENGLISH + MangaReaderParser(context, MangaParserSource.MANHWAINDO, "manhwaindo.net", pageSize = 30, searchPageSize = 10) { + override val datePattern = "MMM d, yyyy" override val listUrl = "/series" } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/ManhwaLand.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/ManhwaLand.kt index 48f20deb3..2f66c2341 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/ManhwaLand.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/ManhwaLand.kt @@ -6,8 +6,9 @@ import org.koitharu.kotatsu.parsers.model.ContentType import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser -@MangaSourceParser("MANHWALAND", "ManhwaLand", "id", ContentType.HENTAI) +@MangaSourceParser("MANHWALAND", "ManhwaLand.vip", "id", ContentType.HENTAI) internal class ManhwaLand(context: MangaLoaderContext) : - MangaReaderParser(context, MangaParserSource.MANHWALAND, "62.182.80.253", pageSize = 20, searchPageSize = 10) { + MangaReaderParser(context, MangaParserSource.MANHWALAND, "manhwaland.vip", pageSize = 20, searchPageSize = 10) { override val isTagsExclusionSupported = false + override val datePattern = "MMM d, yyyy" } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/ManhwaLandInk.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/ManhwaLandInk.kt new file mode 100644 index 000000000..9185128cd --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/ManhwaLandInk.kt @@ -0,0 +1,20 @@ +package org.koitharu.kotatsu.parsers.site.mangareader.id + +import org.koitharu.kotatsu.parsers.MangaLoaderContext +import org.koitharu.kotatsu.parsers.MangaSourceParser +import org.koitharu.kotatsu.parsers.model.ContentType +import org.koitharu.kotatsu.parsers.model.MangaParserSource +import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser + +@MangaSourceParser("MANHWALAND_INK", "ManhwaLand.ink", "id", ContentType.HENTAI) +internal class ManhwaLandInk(context: MangaLoaderContext) : + MangaReaderParser( + context, + MangaParserSource.MANHWALAND_INK, + "www.manhwaland.ink", + pageSize = 20, + searchPageSize = 10, + ) { + override val isTagsExclusionSupported = false + override val datePattern = "MMM d, yyyy" +} diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/MiHentai.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/MiHentai.kt index 8eb841ac4..720c0ba34 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/MiHentai.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/MiHentai.kt @@ -4,7 +4,6 @@ import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser import org.koitharu.kotatsu.parsers.model.ContentType import org.koitharu.kotatsu.parsers.model.MangaParserSource -import org.koitharu.kotatsu.parsers.model.MangaSource import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser @MangaSourceParser("MIHENTAI", "MiHentai", "id", ContentType.HENTAI) diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/pt/AncientComics.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/pt/AncientComics.kt new file mode 100644 index 000000000..bd37dbdf8 --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/pt/AncientComics.kt @@ -0,0 +1,16 @@ +package org.koitharu.kotatsu.parsers.site.mangareader.pt + +import org.koitharu.kotatsu.parsers.MangaLoaderContext +import org.koitharu.kotatsu.parsers.MangaSourceParser +import org.koitharu.kotatsu.parsers.model.MangaParserSource +import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser + +@MangaSourceParser("ANCIENTCOMICS", "AncientComics", "pt") +internal class AncientComics(context: MangaLoaderContext) : + MangaReaderParser( + context, + MangaParserSource.ANCIENTCOMICS, + "ancientcomics.com.br", + pageSize = 20, + searchPageSize = 20, + ) diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/th/DragonManga.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/th/DragonManga.kt new file mode 100644 index 000000000..59e55deed --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/th/DragonManga.kt @@ -0,0 +1,17 @@ +package org.koitharu.kotatsu.parsers.site.mangareader.th + +import org.koitharu.kotatsu.parsers.MangaLoaderContext +import org.koitharu.kotatsu.parsers.MangaSourceParser +import org.koitharu.kotatsu.parsers.model.ContentType +import org.koitharu.kotatsu.parsers.model.MangaParserSource +import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser + +@MangaSourceParser("DRAGONMANGA", "DragonManga", "th", ContentType.HENTAI) +internal class DragonManga(context: MangaLoaderContext) : + MangaReaderParser( + context, + MangaParserSource.DRAGONMANGA, + "www.dragon-manga.com", + pageSize = 40, + searchPageSize = 10, + ) diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/th/EcchiDoujin.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/th/EcchiDoujin.kt new file mode 100644 index 000000000..7a84e7e9f --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/th/EcchiDoujin.kt @@ -0,0 +1,14 @@ +package org.koitharu.kotatsu.parsers.site.mangareader.th + +import org.koitharu.kotatsu.parsers.MangaLoaderContext +import org.koitharu.kotatsu.parsers.MangaSourceParser +import org.koitharu.kotatsu.parsers.model.ContentType +import org.koitharu.kotatsu.parsers.model.MangaParserSource +import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser + +@MangaSourceParser("ECCHIDOUJIN", "EcchiDoujin", "th", ContentType.HENTAI) +internal class EcchiDoujin(context: MangaLoaderContext) : + MangaReaderParser(context, MangaParserSource.ECCHIDOUJIN, "ecchi-doujin.com", pageSize = 30, searchPageSize = 10) { + override val listUrl = "/doujin" + override val isTagsExclusionSupported = false +} diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/th/Makimaaaaa.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/th/Makimaaaaa.kt new file mode 100644 index 000000000..ba12c809c --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/th/Makimaaaaa.kt @@ -0,0 +1,12 @@ +package org.koitharu.kotatsu.parsers.site.mangareader.th + +import org.koitharu.kotatsu.parsers.MangaLoaderContext +import org.koitharu.kotatsu.parsers.MangaSourceParser +import org.koitharu.kotatsu.parsers.model.MangaParserSource +import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser + +@MangaSourceParser("MAKIMAAAAA", "Makimaaaaa", "th") +internal class Makimaaaaa(context: MangaLoaderContext) : + MangaReaderParser(context, MangaParserSource.MAKIMAAAAA, "makimaaaaa.com", pageSize = 30, searchPageSize = 30) { + override val isTagsExclusionSupported = false +} diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/th/NtrManga.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/th/NtrManga.kt new file mode 100644 index 000000000..6c43f3948 --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/th/NtrManga.kt @@ -0,0 +1,13 @@ +package org.koitharu.kotatsu.parsers.site.mangareader.th + +import org.koitharu.kotatsu.parsers.MangaLoaderContext +import org.koitharu.kotatsu.parsers.MangaSourceParser +import org.koitharu.kotatsu.parsers.model.ContentType +import org.koitharu.kotatsu.parsers.model.MangaParserSource +import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser + +@MangaSourceParser("NTRMANGA", "NtrManga", "th", ContentType.HENTAI) +internal class NtrManga(context: MangaLoaderContext) : + MangaReaderParser(context, MangaParserSource.NTRMANGA, "www.ntr-manga.com", pageSize = 30, searchPageSize = 10) { + override val isTagsExclusionSupported = false +} diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/th/TanukiManga.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/th/TanukiManga.kt new file mode 100644 index 000000000..29401b447 --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/th/TanukiManga.kt @@ -0,0 +1,18 @@ +package org.koitharu.kotatsu.parsers.site.mangareader.th + +import org.koitharu.kotatsu.parsers.MangaLoaderContext +import org.koitharu.kotatsu.parsers.MangaSourceParser +import org.koitharu.kotatsu.parsers.model.MangaParserSource +import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser + +@MangaSourceParser("TANUKIMANGA", "TanukiManga", "th") +internal class TanukiManga(context: MangaLoaderContext) : + MangaReaderParser( + context, + MangaParserSource.TANUKIMANGA, + "www.tanuki-manga.com", + pageSize = 40, + searchPageSize = 10, + ) { + override val isTagsExclusionSupported = false +} diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/tr/AduManga.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/tr/AduManga.kt new file mode 100644 index 000000000..7e22381be --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/tr/AduManga.kt @@ -0,0 +1,14 @@ +package org.koitharu.kotatsu.parsers.site.mangareader.tr + +import org.koitharu.kotatsu.parsers.MangaLoaderContext +import org.koitharu.kotatsu.parsers.MangaSourceParser +import org.koitharu.kotatsu.parsers.model.MangaParserSource +import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser +import java.util.Locale + +@MangaSourceParser("ADUMANGA", "AduManga", "tr") +internal class AduManga(context: MangaLoaderContext) : + MangaReaderParser(context, MangaParserSource.ADUMANGA, "adumanga.com", pageSize = 20, searchPageSize = 10) { + override val isTagsExclusionSupported = false + override val sourceLocale: Locale = Locale.ENGLISH +} diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/tr/AsemiFansub.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/tr/AsemiFansub.kt new file mode 100644 index 000000000..16f5da2e8 --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/tr/AsemiFansub.kt @@ -0,0 +1,10 @@ +package org.koitharu.kotatsu.parsers.site.mangareader.tr + +import org.koitharu.kotatsu.parsers.MangaLoaderContext +import org.koitharu.kotatsu.parsers.MangaSourceParser +import org.koitharu.kotatsu.parsers.model.MangaParserSource +import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser + +@MangaSourceParser("ASEMIFANSUB", "AsemiFansub", "tr") +internal class AsemiFansub(context: MangaLoaderContext) : + MangaReaderParser(context, MangaParserSource.ASEMIFANSUB, "asemifansub.com", pageSize = 20, searchPageSize = 10) diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/tr/AthenaManga.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/tr/AthenaManga.kt new file mode 100644 index 000000000..f5b12810c --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/tr/AthenaManga.kt @@ -0,0 +1,12 @@ +package org.koitharu.kotatsu.parsers.site.mangareader.tr + +import org.koitharu.kotatsu.parsers.MangaLoaderContext +import org.koitharu.kotatsu.parsers.MangaSourceParser +import org.koitharu.kotatsu.parsers.model.MangaParserSource +import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser + +@MangaSourceParser("ATHENAMANGA", "AthenaManga", "tr") +internal class AthenaManga(context: MangaLoaderContext) : + MangaReaderParser(context, MangaParserSource.ATHENAMANGA, "athenamanga.com", pageSize = 20, searchPageSize = 10) { + override val isMultipleTagsSupported = false +} diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/tr/GaiaToon.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/tr/GaiaToon.kt new file mode 100644 index 000000000..1d46e7278 --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/tr/GaiaToon.kt @@ -0,0 +1,12 @@ +package org.koitharu.kotatsu.parsers.site.mangareader.tr + +import org.koitharu.kotatsu.parsers.MangaLoaderContext +import org.koitharu.kotatsu.parsers.MangaSourceParser +import org.koitharu.kotatsu.parsers.model.MangaParserSource +import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser + +@MangaSourceParser("GAIATOON", "GaiaToon", "tr") +internal class GaiaToon(context: MangaLoaderContext) : + MangaReaderParser(context, MangaParserSource.GAIATOON, "gaiatoon.com", pageSize = 50, searchPageSize = 10) { + override val isMultipleTagsSupported = false +} diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/tr/MangaGezgini.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/tr/MangaGezgini.kt index 6f9a04ec3..71575ae14 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/tr/MangaGezgini.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/tr/MangaGezgini.kt @@ -1,10 +1,12 @@ package org.koitharu.kotatsu.parsers.site.mangareader.tr +import org.koitharu.kotatsu.parsers.Broken import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser +@Broken @MangaSourceParser("MANGAGEZGINI", "MangaGezgini", "tr") internal class MangaGezgini(context: MangaLoaderContext) : MangaReaderParser(context, MangaParserSource.MANGAGEZGINI, "mangagezgini.com", pageSize = 20, searchPageSize = 10) { diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/tr/MangaSiginagi.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/tr/MangaSiginagi.kt new file mode 100644 index 000000000..93fdb8375 --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/tr/MangaSiginagi.kt @@ -0,0 +1,10 @@ +package org.koitharu.kotatsu.parsers.site.mangareader.tr + +import org.koitharu.kotatsu.parsers.MangaLoaderContext +import org.koitharu.kotatsu.parsers.MangaSourceParser +import org.koitharu.kotatsu.parsers.model.MangaParserSource +import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser + +@MangaSourceParser("MANGASIGINAGI", "MangaSiginagi", "tr") +internal class MangaSiginagi(context: MangaLoaderContext) : + MangaReaderParser(context, MangaParserSource.MANGASIGINAGI, "mangasiginagi.com", pageSize = 20, searchPageSize = 10) diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/tr/SereinScan.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/tr/SereinScan.kt new file mode 100644 index 000000000..8197e4958 --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/tr/SereinScan.kt @@ -0,0 +1,10 @@ +package org.koitharu.kotatsu.parsers.site.mangareader.tr + +import org.koitharu.kotatsu.parsers.MangaLoaderContext +import org.koitharu.kotatsu.parsers.MangaSourceParser +import org.koitharu.kotatsu.parsers.model.MangaParserSource +import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser + +@MangaSourceParser("SEREINSCAN", "SereinScan", "tr") +internal class SereinScan(context: MangaLoaderContext) : + MangaReaderParser(context, MangaParserSource.SEREINSCAN, "sereinscan.com", pageSize = 20, searchPageSize = 10) diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/tr/ShijieScans.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/tr/ShijieScans.kt new file mode 100644 index 000000000..d2b01d914 --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/tr/ShijieScans.kt @@ -0,0 +1,12 @@ +package org.koitharu.kotatsu.parsers.site.mangareader.tr + +import org.koitharu.kotatsu.parsers.MangaLoaderContext +import org.koitharu.kotatsu.parsers.MangaSourceParser +import org.koitharu.kotatsu.parsers.model.MangaParserSource +import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser + +@MangaSourceParser("SHIJIESCANS", "ShijieScans", "tr") +internal class ShijieScans(context: MangaLoaderContext) : + MangaReaderParser(context, MangaParserSource.SHIJIESCANS, "shijiescans.com", pageSize = 20, searchPageSize = 10) { + override val listUrl = "/seri" +} diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/tr/ZenithScans.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/tr/ZenithScans.kt new file mode 100644 index 000000000..663a42896 --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/tr/ZenithScans.kt @@ -0,0 +1,12 @@ +package org.koitharu.kotatsu.parsers.site.mangareader.tr + +import org.koitharu.kotatsu.parsers.MangaLoaderContext +import org.koitharu.kotatsu.parsers.MangaSourceParser +import org.koitharu.kotatsu.parsers.model.MangaParserSource +import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser + +@MangaSourceParser("ZENITHSCANS", "ZenithScans", "tr") +internal class ZenithScans(context: MangaLoaderContext) : + MangaReaderParser(context, MangaParserSource.ZENITHSCANS, "zenithscans.com", pageSize = 20, searchPageSize = 10) { + override val isTagsExclusionSupported = false +} diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mmrcms/en/BananaScan.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mmrcms/en/BananaScan.kt index 0dbba8fd5..fa4de1e58 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mmrcms/en/BananaScan.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mmrcms/en/BananaScan.kt @@ -3,7 +3,6 @@ package org.koitharu.kotatsu.parsers.site.mmrcms.en import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser import org.koitharu.kotatsu.parsers.model.MangaParserSource -import org.koitharu.kotatsu.parsers.model.MangaSource import org.koitharu.kotatsu.parsers.site.mmrcms.MmrcmsParser @MangaSourceParser("BANANASCAN_COM", "BananaScan.Com", "en") diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/nepnep/NepnepParser.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/nepnep/NepnepParser.kt index 6790cff9b..bd00031c1 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/nepnep/NepnepParser.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/nepnep/NepnepParser.kt @@ -184,17 +184,17 @@ internal abstract class NepnepParser( altTitle = null, state = when (doc.selectFirstOrThrow(".list-group-item:contains(Status:) a").text()) { "Ongoing (Scan)", "Ongoing (Publish)", - -> MangaState.ONGOING + -> MangaState.ONGOING "Complete (Scan)", "Complete (Publish)", - -> MangaState.FINISHED + -> MangaState.FINISHED "Cancelled (Scan)", "Cancelled (Publish)", "Discontinued (Scan)", "Discontinued (Publish)", - -> MangaState.ABANDONED + -> MangaState.ABANDONED "Hiatus (Scan)", "Hiatus (Publish)", - -> MangaState.PAUSED + -> MangaState.PAUSED else -> null }, diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/pt/LerManga.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/pt/LerManga.kt index a15839310..a294a57d2 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/pt/LerManga.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/pt/LerManga.kt @@ -1,5 +1,6 @@ package org.koitharu.kotatsu.parsers.site.pt +import org.koitharu.kotatsu.parsers.Broken import org.koitharu.kotatsu.parsers.ErrorMessages import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser @@ -10,6 +11,7 @@ import org.koitharu.kotatsu.parsers.util.* import java.text.SimpleDateFormat import java.util.* +@Broken @MangaSourceParser("LERMANGA", "LerManga", "pt") class LerManga(context: MangaLoaderContext) : PagedMangaParser(context, MangaParserSource.LERMANGA, 24) { diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/pt/LerMangaOnline.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/pt/LerMangaOnline.kt index d3f8fc353..48e07630a 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/pt/LerMangaOnline.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/pt/LerMangaOnline.kt @@ -1,6 +1,7 @@ package org.koitharu.kotatsu.parsers.site.pt import org.jsoup.nodes.Document +import org.koitharu.kotatsu.parsers.Broken import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser import org.koitharu.kotatsu.parsers.PagedMangaParser @@ -10,6 +11,7 @@ import org.koitharu.kotatsu.parsers.util.* import java.text.SimpleDateFormat import java.util.* +@Broken @MangaSourceParser("LERMANGAONLINE", "LerMangaOnline", "pt") class LerMangaOnline(context: MangaLoaderContext) : PagedMangaParser(context, MangaParserSource.LERMANGAONLINE, 20) { diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/pt/MuitoHentai.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/pt/MuitoHentai.kt index 40a065030..ef3ce3597 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/pt/MuitoHentai.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/pt/MuitoHentai.kt @@ -94,7 +94,7 @@ class MuitoHentai(context: MangaLoaderContext) : PagedMangaParser(context, Manga source = source, ) }, - chapters = doc.select(".backgroundpost h3 a").mapChapters() { i, a -> + chapters = doc.select(".backgroundpost h3 a").mapChapters { i, a -> val href = a.attrAsAbsoluteUrl("href") MangaChapter( id = generateUid(href), diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/pt/OnePieceEx.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/pt/OnePieceEx.kt index e9891e3ab..6cf999f76 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/pt/OnePieceEx.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/pt/OnePieceEx.kt @@ -1,5 +1,6 @@ package org.koitharu.kotatsu.parsers.site.pt +import org.koitharu.kotatsu.parsers.Broken import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser import org.koitharu.kotatsu.parsers.PagedMangaParser @@ -8,6 +9,7 @@ import org.koitharu.kotatsu.parsers.model.* import org.koitharu.kotatsu.parsers.util.* import java.util.* +@Broken @MangaSourceParser("ONEPIECEEX", "OnePieceEx", "pt") class OnePieceEx(context: MangaLoaderContext) : PagedMangaParser(context, MangaParserSource.ONEPIECEEX, 1) { diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/ru/MangaWtfParser.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/ru/MangaWtfParser.kt index 71824e7d4..27b1715fe 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/ru/MangaWtfParser.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/ru/MangaWtfParser.kt @@ -69,7 +69,7 @@ class MangaWtfParser( SortOrder.NEWEST -> "createdAt,desc" SortOrder.ALPHABETICAL, SortOrder.ALPHABETICAL_DESC, - -> throw IllegalArgumentException("Unsupported ${filter.sortOrder}") + -> throw IllegalArgumentException("Unsupported ${filter.sortOrder}") }, ) if (filter.tags.isNotEmpty()) { diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/ru/multichan/ChanParser.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/ru/multichan/ChanParser.kt index 4d0b7341c..a43f51f49 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/ru/multichan/ChanParser.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/ru/multichan/ChanParser.kt @@ -206,7 +206,7 @@ internal abstract class ChanParser( when (filter.sortOrder) { SortOrder.RATING, SortOrder.POPULARITY, - -> "favdesc" + -> "favdesc" SortOrder.ALPHABETICAL -> "abcasc" else -> "" // SortOrder.NEWEST diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/ru/rulib/LibSocialParser.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/ru/rulib/LibSocialParser.kt index f886d57e0..c4f3fe3e3 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/ru/rulib/LibSocialParser.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/ru/rulib/LibSocialParser.kt @@ -87,7 +87,7 @@ internal abstract class LibSocialParser( SortOrder.NEWEST -> "created_at" SortOrder.ALPHABETICAL, SortOrder.ALPHABETICAL_DESC, - -> "rus_name" + -> "rus_name" }, ) urlBuilder.addQueryParameter( @@ -98,7 +98,7 @@ internal abstract class LibSocialParser( SortOrder.RATING, SortOrder.NEWEST, SortOrder.ALPHABETICAL_DESC, - -> "desc" + -> "desc" SortOrder.ALPHABETICAL -> "asc" }, diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/scan/it/MangaItalia.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/scan/it/MangaItalia.kt index 7202732d3..8e1a1d5cb 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/scan/it/MangaItalia.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/scan/it/MangaItalia.kt @@ -3,7 +3,6 @@ package org.koitharu.kotatsu.parsers.site.scan.it import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser import org.koitharu.kotatsu.parsers.model.MangaParserSource -import org.koitharu.kotatsu.parsers.model.MangaSource import org.koitharu.kotatsu.parsers.site.scan.ScanParser @MangaSourceParser("MANGAITALIA", "MangaItalia", "pt") diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/scan/pt/MangaBr.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/scan/pt/MangaBr.kt index 1fdbb562d..c86c94b47 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/scan/pt/MangaBr.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/scan/pt/MangaBr.kt @@ -3,7 +3,6 @@ package org.koitharu.kotatsu.parsers.site.scan.pt import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser import org.koitharu.kotatsu.parsers.model.MangaParserSource -import org.koitharu.kotatsu.parsers.model.MangaSource import org.koitharu.kotatsu.parsers.site.scan.ScanParser @MangaSourceParser("MANGABR", "MangaBr", "pt") diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/scan/pt/MangaTerra.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/scan/pt/MangaTerra.kt index 264fe713c..fdf00f2e0 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/scan/pt/MangaTerra.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/scan/pt/MangaTerra.kt @@ -3,7 +3,6 @@ package org.koitharu.kotatsu.parsers.site.scan.pt import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser import org.koitharu.kotatsu.parsers.model.MangaParserSource -import org.koitharu.kotatsu.parsers.model.MangaSource import org.koitharu.kotatsu.parsers.site.scan.ScanParser @MangaSourceParser("MANGATERRA", "MangaTerra", "pt") diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/vi/TruyentranhLHParser.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/vi/TruyentranhLHParser.kt index a1033ef1c..a4896e73c 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/vi/TruyentranhLHParser.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/vi/TruyentranhLHParser.kt @@ -4,6 +4,7 @@ import androidx.collection.ArrayMap import androidx.collection.ArraySet import kotlinx.coroutines.sync.Mutex import kotlinx.coroutines.sync.withLock +import org.koitharu.kotatsu.parsers.Broken import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser import org.koitharu.kotatsu.parsers.PagedMangaParser @@ -13,6 +14,7 @@ import org.koitharu.kotatsu.parsers.util.* import java.text.SimpleDateFormat import java.util.* +@Broken @MangaSourceParser("TRUYENTRANHLH", "TruyentranhLH", "vi") class TruyentranhLHParser(context: MangaLoaderContext) : PagedMangaParser(context, source = MangaParserSource.TRUYENTRANHLH, pageSize = 18) { diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/wpcomics/WpComicsParser.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/wpcomics/WpComicsParser.kt index 4af889e08..19e891e5c 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/wpcomics/WpComicsParser.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/wpcomics/WpComicsParser.kt @@ -273,7 +273,7 @@ internal abstract class WpComicsParser( return when { d.endsWith(" ago") || d.endsWith(" trước") // Handle translated 'ago' in Viêt Nam. - -> parseRelativeDate(date) + -> parseRelativeDate(date) // Handle 'yesterday' and 'today', using midnight d.startsWith("year") -> Calendar.getInstance().apply { diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/zeistmanga/ZeistMangaParser.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/zeistmanga/ZeistMangaParser.kt index 9cc37e8a7..2ba778ecf 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/zeistmanga/ZeistMangaParser.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/zeistmanga/ZeistMangaParser.kt @@ -189,7 +189,7 @@ internal abstract class ZeistMangaParser( } } - protected open val selectTags = "article div.mt-15 a, .info-genre a" + protected open val selectTags = "article div.mt-15 a, .info-genre a, dl:contains(Genre) dd a" override suspend fun getDetails(manga: Manga): Manga = coroutineScope { val doc = webClient.httpGet(manga.url.toAbsoluteUrl(domain)).parseHtml() val state = @@ -198,6 +198,7 @@ internal abstract class ZeistMangaParser( ?: doc.selectFirst("ul.infonime li:contains(Status) span") ?: doc.selectFirst("ul.infonime li:contains(Estado) span") ?: doc.selectFirst("span.status-novel") + ?: doc.selectFirst("span[data-status]") val mangaState = state?.text()?.lowercase().let { when (it) { in ongoing -> MangaState.ONGOING @@ -209,11 +210,13 @@ internal abstract class ZeistMangaParser( } val author = doc.selectFirst("div.y6x11p:contains(الكاتب) .dt") ?: doc.selectFirst("div.y6x11p:contains(Author) .dt") + ?: doc.selectFirst("dl:contains(Author) dd") ?: doc.selectFirst("div.y6x11p:contains(Autor) .dt") ?: doc.selectFirst("div.y6x11p:contains(Yazar) .dt") + ?: doc.selectFirst("ul.infonime li:contains(Author) span") val desc = doc.getElementById("synopsis") ?: doc.getElementById("Sinopse") ?: doc.getElementById("sinopas") - ?: doc.selectFirst(".sinopsis") + ?: doc.selectFirst(".sinopsis") ?: doc.selectFirst(".sinopas") val chaptersDeferred = async { loadChapters(manga.url, doc) } manga.copy( author = author?.text(), @@ -254,6 +257,8 @@ internal abstract class ZeistMangaParser( ?.groupValues?.get(1) ?: throw Exception("Failed to find chapter feed") + } else if (doc.selectFirst("#chapterlist") != null) { + doc.selectFirstOrThrow("#chapterlist").attr("data-post-title") } else { doc.selectFirstOrThrow("script:containsData(var label_chapter)").data() .substringAfter("label_chapter = \"").substringBefore("\"") @@ -293,7 +298,8 @@ internal abstract class ZeistMangaParser( } } - protected open val selectPage = "div.check-box img, article#reader .separator img, article.container .separator img" + protected open val selectPage = + "div.check-box img, article#reader .separator img, article.container .separator img, #readarea img, #reader img, #readerarea img" override suspend fun getPages(chapter: MangaChapter): List { diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/zeistmanga/ar/ArabsDoujin.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/zeistmanga/ar/ArabsDoujin.kt new file mode 100644 index 000000000..c4a45b9ca --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/zeistmanga/ar/ArabsDoujin.kt @@ -0,0 +1,11 @@ +package org.koitharu.kotatsu.parsers.site.zeistmanga.ar + +import org.koitharu.kotatsu.parsers.MangaLoaderContext +import org.koitharu.kotatsu.parsers.MangaSourceParser +import org.koitharu.kotatsu.parsers.model.ContentType +import org.koitharu.kotatsu.parsers.model.MangaParserSource +import org.koitharu.kotatsu.parsers.site.zeistmanga.ZeistMangaParser + +@MangaSourceParser("ARABSDOUJIN", "ArabsDoujin", "ar", ContentType.HENTAI) +internal class ArabsDoujin(context: MangaLoaderContext) : + ZeistMangaParser(context, MangaParserSource.ARABSDOUJIN, "www.arabsdoujin.online") diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/zeistmanga/es/GistamisHouseFansub.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/zeistmanga/es/GistamisHouseFansub.kt new file mode 100644 index 000000000..41e97c2f7 --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/zeistmanga/es/GistamisHouseFansub.kt @@ -0,0 +1,15 @@ +package org.koitharu.kotatsu.parsers.site.zeistmanga.es + +import org.koitharu.kotatsu.parsers.MangaLoaderContext +import org.koitharu.kotatsu.parsers.MangaSourceParser +import org.koitharu.kotatsu.parsers.model.MangaParserSource +import org.koitharu.kotatsu.parsers.site.zeistmanga.ZeistMangaParser + +@MangaSourceParser("GISTAMISHOUSEFANSUB", "GistamisHouseFansub", "es") +internal class GistamisHouseFansub(context: MangaLoaderContext) : + ZeistMangaParser(context, MangaParserSource.GISTAMISHOUSEFANSUB, "gistamishousefansub.blogspot.com") { + override val sateOngoing: String = "Activo" + override val sateFinished: String = "Completo" + override val sateAbandoned: String = "Cancelado" + override val selectPage = ".post img" +} diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/zeistmanga/es/NekoScans.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/zeistmanga/es/NekoScans.kt new file mode 100644 index 000000000..219810079 --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/zeistmanga/es/NekoScans.kt @@ -0,0 +1,10 @@ +package org.koitharu.kotatsu.parsers.site.zeistmanga.es + +import org.koitharu.kotatsu.parsers.MangaLoaderContext +import org.koitharu.kotatsu.parsers.MangaSourceParser +import org.koitharu.kotatsu.parsers.model.MangaParserSource +import org.koitharu.kotatsu.parsers.site.zeistmanga.ZeistMangaParser + +@MangaSourceParser("NEKOSCANS", "NekoScans", "es") +internal class NekoScans(context: MangaLoaderContext) : + ZeistMangaParser(context, MangaParserSource.NEKOSCANS, "nekoscanlationlector.blogspot.com") diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/zeistmanga/id/IchiroManga.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/zeistmanga/id/IchiroManga.kt new file mode 100644 index 000000000..e4c9ceac2 --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/zeistmanga/id/IchiroManga.kt @@ -0,0 +1,10 @@ +package org.koitharu.kotatsu.parsers.site.zeistmanga.id + +import org.koitharu.kotatsu.parsers.MangaLoaderContext +import org.koitharu.kotatsu.parsers.MangaSourceParser +import org.koitharu.kotatsu.parsers.model.MangaParserSource +import org.koitharu.kotatsu.parsers.site.zeistmanga.ZeistMangaParser + +@MangaSourceParser("ICHIROMANGA", "IchiroManga", "id") +internal class IchiroManga(context: MangaLoaderContext) : + ZeistMangaParser(context, MangaParserSource.ICHIROMANGA, "www.ichiromanga.my.id") diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/zeistmanga/id/Kishisan.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/zeistmanga/id/Kishisan.kt new file mode 100644 index 000000000..30cb77d31 --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/zeistmanga/id/Kishisan.kt @@ -0,0 +1,10 @@ +package org.koitharu.kotatsu.parsers.site.zeistmanga.id + +import org.koitharu.kotatsu.parsers.MangaLoaderContext +import org.koitharu.kotatsu.parsers.MangaSourceParser +import org.koitharu.kotatsu.parsers.model.MangaParserSource +import org.koitharu.kotatsu.parsers.site.zeistmanga.ZeistMangaParser + +@MangaSourceParser("KISHISAN", "Kishisan", "id") +internal class Kishisan(context: MangaLoaderContext) : + ZeistMangaParser(context, MangaParserSource.KISHISAN, "www.kishisan.site") diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/zeistmanga/id/Nimemob.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/zeistmanga/id/Nimemob.kt new file mode 100644 index 000000000..2b7f20b5c --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/zeistmanga/id/Nimemob.kt @@ -0,0 +1,10 @@ +package org.koitharu.kotatsu.parsers.site.zeistmanga.id + +import org.koitharu.kotatsu.parsers.MangaLoaderContext +import org.koitharu.kotatsu.parsers.MangaSourceParser +import org.koitharu.kotatsu.parsers.model.MangaParserSource +import org.koitharu.kotatsu.parsers.site.zeistmanga.ZeistMangaParser + +@MangaSourceParser("NIMEMOB", "Nimemob", "id") +internal class Nimemob(context: MangaLoaderContext) : + ZeistMangaParser(context, MangaParserSource.NIMEMOB, "www.nimemob.my.id") diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/zeistmanga/id/ReYume.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/zeistmanga/id/ReYume.kt new file mode 100644 index 000000000..a444a9b38 --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/zeistmanga/id/ReYume.kt @@ -0,0 +1,10 @@ +package org.koitharu.kotatsu.parsers.site.zeistmanga.id + +import org.koitharu.kotatsu.parsers.MangaLoaderContext +import org.koitharu.kotatsu.parsers.MangaSourceParser +import org.koitharu.kotatsu.parsers.model.MangaParserSource +import org.koitharu.kotatsu.parsers.site.zeistmanga.ZeistMangaParser + +@MangaSourceParser("REYUME", "ReYume", "id") +internal class ReYume(context: MangaLoaderContext) : + ZeistMangaParser(context, MangaParserSource.REYUME, "www.re-yume.my.id") diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/zeistmanga/id/Sobatmanku.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/zeistmanga/id/Sobatmanku.kt index 581f660cf..870c3a947 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/zeistmanga/id/Sobatmanku.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/zeistmanga/id/Sobatmanku.kt @@ -7,4 +7,4 @@ import org.koitharu.kotatsu.parsers.site.zeistmanga.ZeistMangaParser @MangaSourceParser("SOBATMANKU", "Sobatmanku", "id") internal class Sobatmanku(context: MangaLoaderContext) : - ZeistMangaParser(context, MangaParserSource.SOBATMANKU, "www.sobatmanku19.site") + ZeistMangaParser(context, MangaParserSource.SOBATMANKU, "www.sobatmanku19.cab") diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/zeistmanga/pt/GalaxScans.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/zeistmanga/pt/GalaxScans.kt index e19bd4747..357519195 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/zeistmanga/pt/GalaxScans.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/zeistmanga/pt/GalaxScans.kt @@ -5,9 +5,9 @@ import org.koitharu.kotatsu.parsers.MangaSourceParser import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.zeistmanga.ZeistMangaParser -@MangaSourceParser("GALAXSCANS", "GalaxScans", "pt") +@MangaSourceParser("GALAXSCANS", "GalaxScanlator", "pt") internal class GalaxScans(context: MangaLoaderContext) : - ZeistMangaParser(context, MangaParserSource.GALAXSCANS, "galaxscans.blogspot.com") { + ZeistMangaParser(context, MangaParserSource.GALAXSCANS, "galaxscanlator.blogspot.com") { override val mangaCategory = "Recentes" override val sateOngoing: String = "Lançando" override val sateFinished: String = "Completo" diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/zeistmanga/pt/RaysScan.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/zeistmanga/pt/RaysScan.kt index 697677546..2e120fbc5 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/zeistmanga/pt/RaysScan.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/zeistmanga/pt/RaysScan.kt @@ -3,7 +3,6 @@ package org.koitharu.kotatsu.parsers.site.zeistmanga.pt import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser import org.koitharu.kotatsu.parsers.model.MangaParserSource -import org.koitharu.kotatsu.parsers.model.MangaSource import org.koitharu.kotatsu.parsers.model.MangaState import org.koitharu.kotatsu.parsers.model.MangaTag import org.koitharu.kotatsu.parsers.site.zeistmanga.ZeistMangaParser diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/zeistmanga/pt/SolooScan.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/zeistmanga/pt/SolooScan.kt index 7dd2a7cb7..1c25abc77 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/zeistmanga/pt/SolooScan.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/zeistmanga/pt/SolooScan.kt @@ -3,7 +3,6 @@ package org.koitharu.kotatsu.parsers.site.zeistmanga.pt import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser import org.koitharu.kotatsu.parsers.model.MangaParserSource -import org.koitharu.kotatsu.parsers.model.MangaSource import org.koitharu.kotatsu.parsers.site.zeistmanga.ZeistMangaParser @MangaSourceParser("SOLOOSCAN", "SolooScan", "pt") diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/zeistmanga/pt/TemakiMangas.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/zeistmanga/pt/TemakiMangas.kt index fec28c785..1d212030b 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/zeistmanga/pt/TemakiMangas.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/zeistmanga/pt/TemakiMangas.kt @@ -3,7 +3,6 @@ package org.koitharu.kotatsu.parsers.site.zeistmanga.pt import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser import org.koitharu.kotatsu.parsers.model.MangaParserSource -import org.koitharu.kotatsu.parsers.model.MangaSource import org.koitharu.kotatsu.parsers.model.MangaState import org.koitharu.kotatsu.parsers.model.MangaTag import org.koitharu.kotatsu.parsers.site.zeistmanga.ZeistMangaParser diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/zeistmanga/pt/YaoiFanClub.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/zeistmanga/pt/YaoiFanClub.kt new file mode 100644 index 000000000..f509a92f9 --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/zeistmanga/pt/YaoiFanClub.kt @@ -0,0 +1,14 @@ +package org.koitharu.kotatsu.parsers.site.zeistmanga.pt + +import org.koitharu.kotatsu.parsers.MangaLoaderContext +import org.koitharu.kotatsu.parsers.MangaSourceParser +import org.koitharu.kotatsu.parsers.model.MangaParserSource +import org.koitharu.kotatsu.parsers.site.zeistmanga.ZeistMangaParser + +@MangaSourceParser("YAOIFANCLUB", "YaoiFanClub", "pt") +internal class YaoiFanClub(context: MangaLoaderContext) : + ZeistMangaParser(context, MangaParserSource.YAOIFANCLUB, "www.yaoifanclub.com") { + override val sateOngoing: String = "Ativo" + override val sateFinished: String = "Completo" + override val sateAbandoned: String = "Dropado" +}