From bd5f42f8cdd410f33e609d250eefd9ea87ebe952 Mon Sep 17 00:00:00 2001 From: Riztard Lanthorn Date: Wed, 10 Feb 2021 21:05:12 +0700 Subject: [PATCH] Bye bye Madara (#5730) * N-Z * MZuki-N * kbatch-mzuki * remove madara * remove wildcard * nsfw * pkg name already got it from class name * forgot className * this too * fix arangScans chapter and timestamp * add mangaEffect * add mangaGreat * mangazuki.club multiLang * forgot this line :v --- .../madara/arangscans/src/ArangScans.kt | 3 +- .../madara/lilymanga/src/LilyManga.kt | 7 + .../madara/lovablesubs/src/LovableSubs.kt | 7 + .../overrides/madara/manga347/src/Manga347.kt | 9 + .../overrides/madara/manga68/src/Manga68.kt | 7 + .../madara/mangaaction/src/MangaAction.kt | 7 + .../mangaarabonline/src/MangaArabOnline.kt | 7 + .../madara/mangaarabteam/src/MangaArabTeam.kt | 14 + .../overrides/madara/mangabaz/src/MangaBaz.kt | 7 + .../madara/mangaclash/src/MangaClash.kt | 12 + .../madara/mangacrimson/src/MangaCrimson.kt | 7 + .../madara/mangadods/src/MangaDods.kt | 7 + .../madara/mangaeffect/src/MangaEffect.kt | 7 + .../madara/mangagreat/src/MangaGreat.kt | 7 + .../overrides/madara/mangalek/src/Mangalek.kt | 7 + .../madara/mangaonlineco/src/MangaOnlineCo.kt | 11 + .../madara/mangaphoenix/src/MangaPhoenix.kt | 8 + .../madara/mangaread/src/MangaRead.kt | 7 + .../madara/mangareadorg/src/MangaReadOrg.kt | 7 + .../madara/mangascantrad/src/MangaScantrad.kt | 7 + .../madara/mangaspark/src/MangaSpark.kt | 24 + .../madara/mangastarz/src/MangaStarz.kt | 24 + .../overrides/madara/mangasy/src/MangaSY.kt | 12 + .../madara/mangateca/src/MangaTeca.kt | 35 + .../madara/mangayosh/src/MangaYosh.kt | 7 + .../mangazukiclub/src/MangazukiClubFactory.kt | 14 + .../madara/manhuabox/src/ManhuaBox.kt | 7 + .../madara/manhuafast/src/ManhuaFast.kt | 7 + .../madara/manhuaplus/src/ManhuaPlus.kt | 7 + .../overrides/madara/manhuaus/src/ManhuaUS.kt | 7 + .../madara/martialscans/src/MartialScans.kt | 26 + .../overrides/madara/milftoon/src/Milftoon.kt | 10 + .../madara/mixedmanga/src/MixedManga.kt | 10 + .../madara/mundowuxia/src/MundoWuxia.kt | 7 + .../mysticalmerries/src/MysticalMerries.kt | 9 + .../madara/nazarickscans/src/NazarickScans.kt | 11 + .../madara/neatmanga/src/NeatManga.kt | 7 + .../madara/nekobreaker/src/NekoBreaker.kt | 7 + .../madara/neoxscanlator/src/NeoxScanlator.kt | 34 + .../madara/nightcomic/src/NightComic.kt | 11 + .../nijitranslations/src/NijiTranslations.kt | 7 + .../overrides/madara/offscan/src/OffScan.kt | 12 + .../overrides/madara/pmscans/src/PMScans.kt | 7 + .../madara/pojokmanga/src/PojokManga.kt | 7 + .../projetoscanlator/src/ProjetoScanlator.kt | 7 + .../madara/queensmanga/src/QueensManga.kt | 7 + .../src/RandomTranslations.kt | 7 + .../madara/rawmangas/src/RawMangas.kt | 7 + .../madara/readmanhua/src/ReadManhua.kt | 12 + .../madara/renascans/src/RenaScans.kt | 7 + .../madara/ruyamanga/src/RuyaManga.kt | 7 + .../madara/shoujohearts/src/ShoujoHearts.kt | 16 + .../madara/sixiangscans/src/SiXiangScans.kt | 7 + .../madara/siyahmelek/src/Siyahmelek.kt | 7 + .../soloscanlation/src/SoloScanlation.kt | 7 + .../src/SpookyScanlations.kt | 7 + .../madara/stagecomics/src/StageComics.kt | 19 + .../src/ThreeSixtyFiveManga.kt | 10 + .../overrides/madara/toongod/src/ToonGod.kt | 7 + .../overrides/madara/toonily/src/Toonily.kt | 37 + .../madara/toonpoint/src/ToonPoint.kt | 7 + .../madara/topmanhua/src/TopManhua.kt | 10 + .../src/TruyenTranhAudioCom.kt | 26 + .../src/TruyenTranhAudioOnline.kt | 21 + .../madara/tsubakinoscan/src/TsubakiNoScan.kt | 12 + .../madara/turkcemanga/src/TurkceManga.kt | 30 + .../madara/uyuyanbalik/src/UyuyanBalik.kt | 8 + .../madara/voidscans/src/Voidscans.kt | 9 + .../madara/warqueenscan/src/WarQueenScan.kt | 8 + .../madara/webtoonxyz/src/WebtoonXYZ.kt | 11 + .../overrides/madara/wescans/src/WeScans.kt | 15 + .../src/WorldRomanceTranslation.kt | 8 + .../madara/wuxiaworld/src/WuxiaWorld.kt | 13 + .../madara/yaoitoshokan/src/YaoiToshokan.kt | 28 + .../madara/yokaijump/src/YokaiJump.kt | 12 + .../madara/yuriverso/src/YuriVerso.kt | 12 + .../overrides/madara/zinmanga/src/ZinManga.kt | 9 + .../multisrc/madara/MadaraGenerator.kt | 154 +++- src/all/madara/AndroidManifest.xml | 2 - src/all/madara/build.gradle | 13 - .../madara/res/mipmap-hdpi/ic_launcher.png | Bin 3110 -> 0 bytes .../madara/res/mipmap-mdpi/ic_launcher.png | Bin 1729 -> 0 bytes .../madara/res/mipmap-xhdpi/ic_launcher.png | Bin 4286 -> 0 bytes .../madara/res/mipmap-xxhdpi/ic_launcher.png | Bin 7641 -> 0 bytes .../madara/res/mipmap-xxxhdpi/ic_launcher.png | Bin 13510 -> 0 bytes src/all/madara/res/web_hi_res_512.png | Bin 75253 -> 0 bytes .../tachiyomi/extension/all/madara/Madara.kt | 525 ----------- .../extension/all/madara/MadaraFactory.kt | 861 ------------------ 88 files changed, 1022 insertions(+), 1407 deletions(-) create mode 100644 multisrc/overrides/madara/lilymanga/src/LilyManga.kt create mode 100644 multisrc/overrides/madara/lovablesubs/src/LovableSubs.kt create mode 100644 multisrc/overrides/madara/manga347/src/Manga347.kt create mode 100644 multisrc/overrides/madara/manga68/src/Manga68.kt create mode 100644 multisrc/overrides/madara/mangaaction/src/MangaAction.kt create mode 100644 multisrc/overrides/madara/mangaarabonline/src/MangaArabOnline.kt create mode 100644 multisrc/overrides/madara/mangaarabteam/src/MangaArabTeam.kt create mode 100644 multisrc/overrides/madara/mangabaz/src/MangaBaz.kt create mode 100644 multisrc/overrides/madara/mangaclash/src/MangaClash.kt create mode 100644 multisrc/overrides/madara/mangacrimson/src/MangaCrimson.kt create mode 100644 multisrc/overrides/madara/mangadods/src/MangaDods.kt create mode 100644 multisrc/overrides/madara/mangaeffect/src/MangaEffect.kt create mode 100644 multisrc/overrides/madara/mangagreat/src/MangaGreat.kt create mode 100644 multisrc/overrides/madara/mangalek/src/Mangalek.kt create mode 100644 multisrc/overrides/madara/mangaonlineco/src/MangaOnlineCo.kt create mode 100644 multisrc/overrides/madara/mangaphoenix/src/MangaPhoenix.kt create mode 100644 multisrc/overrides/madara/mangaread/src/MangaRead.kt create mode 100644 multisrc/overrides/madara/mangareadorg/src/MangaReadOrg.kt create mode 100644 multisrc/overrides/madara/mangascantrad/src/MangaScantrad.kt create mode 100644 multisrc/overrides/madara/mangaspark/src/MangaSpark.kt create mode 100644 multisrc/overrides/madara/mangastarz/src/MangaStarz.kt create mode 100644 multisrc/overrides/madara/mangasy/src/MangaSY.kt create mode 100644 multisrc/overrides/madara/mangateca/src/MangaTeca.kt create mode 100644 multisrc/overrides/madara/mangayosh/src/MangaYosh.kt create mode 100644 multisrc/overrides/madara/mangazukiclub/src/MangazukiClubFactory.kt create mode 100644 multisrc/overrides/madara/manhuabox/src/ManhuaBox.kt create mode 100644 multisrc/overrides/madara/manhuafast/src/ManhuaFast.kt create mode 100644 multisrc/overrides/madara/manhuaplus/src/ManhuaPlus.kt create mode 100644 multisrc/overrides/madara/manhuaus/src/ManhuaUS.kt create mode 100644 multisrc/overrides/madara/martialscans/src/MartialScans.kt create mode 100644 multisrc/overrides/madara/milftoon/src/Milftoon.kt create mode 100644 multisrc/overrides/madara/mixedmanga/src/MixedManga.kt create mode 100644 multisrc/overrides/madara/mundowuxia/src/MundoWuxia.kt create mode 100644 multisrc/overrides/madara/mysticalmerries/src/MysticalMerries.kt create mode 100644 multisrc/overrides/madara/nazarickscans/src/NazarickScans.kt create mode 100644 multisrc/overrides/madara/neatmanga/src/NeatManga.kt create mode 100644 multisrc/overrides/madara/nekobreaker/src/NekoBreaker.kt create mode 100644 multisrc/overrides/madara/neoxscanlator/src/NeoxScanlator.kt create mode 100644 multisrc/overrides/madara/nightcomic/src/NightComic.kt create mode 100644 multisrc/overrides/madara/nijitranslations/src/NijiTranslations.kt create mode 100644 multisrc/overrides/madara/offscan/src/OffScan.kt create mode 100644 multisrc/overrides/madara/pmscans/src/PMScans.kt create mode 100644 multisrc/overrides/madara/pojokmanga/src/PojokManga.kt create mode 100644 multisrc/overrides/madara/projetoscanlator/src/ProjetoScanlator.kt create mode 100644 multisrc/overrides/madara/queensmanga/src/QueensManga.kt create mode 100644 multisrc/overrides/madara/randomtranslations/src/RandomTranslations.kt create mode 100644 multisrc/overrides/madara/rawmangas/src/RawMangas.kt create mode 100644 multisrc/overrides/madara/readmanhua/src/ReadManhua.kt create mode 100644 multisrc/overrides/madara/renascans/src/RenaScans.kt create mode 100644 multisrc/overrides/madara/ruyamanga/src/RuyaManga.kt create mode 100644 multisrc/overrides/madara/shoujohearts/src/ShoujoHearts.kt create mode 100644 multisrc/overrides/madara/sixiangscans/src/SiXiangScans.kt create mode 100644 multisrc/overrides/madara/siyahmelek/src/Siyahmelek.kt create mode 100644 multisrc/overrides/madara/soloscanlation/src/SoloScanlation.kt create mode 100644 multisrc/overrides/madara/spookyscanlations/src/SpookyScanlations.kt create mode 100644 multisrc/overrides/madara/stagecomics/src/StageComics.kt create mode 100644 multisrc/overrides/madara/threesixtyfivemanga/src/ThreeSixtyFiveManga.kt create mode 100644 multisrc/overrides/madara/toongod/src/ToonGod.kt create mode 100644 multisrc/overrides/madara/toonily/src/Toonily.kt create mode 100644 multisrc/overrides/madara/toonpoint/src/ToonPoint.kt create mode 100644 multisrc/overrides/madara/topmanhua/src/TopManhua.kt create mode 100644 multisrc/overrides/madara/truyentranhaudiocom/src/TruyenTranhAudioCom.kt create mode 100644 multisrc/overrides/madara/truyentranhaudioonline/src/TruyenTranhAudioOnline.kt create mode 100644 multisrc/overrides/madara/tsubakinoscan/src/TsubakiNoScan.kt create mode 100644 multisrc/overrides/madara/turkcemanga/src/TurkceManga.kt create mode 100644 multisrc/overrides/madara/uyuyanbalik/src/UyuyanBalik.kt create mode 100644 multisrc/overrides/madara/voidscans/src/Voidscans.kt create mode 100644 multisrc/overrides/madara/warqueenscan/src/WarQueenScan.kt create mode 100644 multisrc/overrides/madara/webtoonxyz/src/WebtoonXYZ.kt create mode 100644 multisrc/overrides/madara/wescans/src/WeScans.kt create mode 100644 multisrc/overrides/madara/worldromancetranslation/src/WorldRomanceTranslation.kt create mode 100644 multisrc/overrides/madara/wuxiaworld/src/WuxiaWorld.kt create mode 100644 multisrc/overrides/madara/yaoitoshokan/src/YaoiToshokan.kt create mode 100644 multisrc/overrides/madara/yokaijump/src/YokaiJump.kt create mode 100644 multisrc/overrides/madara/yuriverso/src/YuriVerso.kt create mode 100644 multisrc/overrides/madara/zinmanga/src/ZinManga.kt delete mode 100644 src/all/madara/AndroidManifest.xml delete mode 100644 src/all/madara/build.gradle delete mode 100644 src/all/madara/res/mipmap-hdpi/ic_launcher.png delete mode 100644 src/all/madara/res/mipmap-mdpi/ic_launcher.png delete mode 100644 src/all/madara/res/mipmap-xhdpi/ic_launcher.png delete mode 100644 src/all/madara/res/mipmap-xxhdpi/ic_launcher.png delete mode 100644 src/all/madara/res/mipmap-xxxhdpi/ic_launcher.png delete mode 100644 src/all/madara/res/web_hi_res_512.png delete mode 100644 src/all/madara/src/eu/kanade/tachiyomi/extension/all/madara/Madara.kt delete mode 100644 src/all/madara/src/eu/kanade/tachiyomi/extension/all/madara/MadaraFactory.kt diff --git a/multisrc/overrides/madara/arangscans/src/ArangScans.kt b/multisrc/overrides/madara/arangscans/src/ArangScans.kt index f4398f523..0e03fb769 100644 --- a/multisrc/overrides/madara/arangscans/src/ArangScans.kt +++ b/multisrc/overrides/madara/arangscans/src/ArangScans.kt @@ -6,7 +6,8 @@ import okhttp3.Request import java.text.SimpleDateFormat import java.util.Locale -class ArangScans : Madara("Arang Scans", "https://www.arangscans.com", "en", SimpleDateFormat("d MMM yyyy", Locale.US)) { +class ArangScans : Madara("Arang Scans", "https://arangscans.com", "en") { + override val userAgentRandomizer = "" // has very few manga override fun popularMangaRequest(page: Int): Request = GET("$baseUrl/manga?m_orderby=views", headers) override fun popularMangaNextPageSelector(): String? = null diff --git a/multisrc/overrides/madara/lilymanga/src/LilyManga.kt b/multisrc/overrides/madara/lilymanga/src/LilyManga.kt new file mode 100644 index 000000000..fb6080186 --- /dev/null +++ b/multisrc/overrides/madara/lilymanga/src/LilyManga.kt @@ -0,0 +1,7 @@ +package eu.kanade.tachiyomi.extension.en.lilymanga + +import eu.kanade.tachiyomi.multisrc.madara.Madara +import java.text.SimpleDateFormat +import java.util.Locale + +class LilyManga : Madara("Lily Manga", "https://lilymanga.com", "en", SimpleDateFormat("yyyy-MM-dd", Locale.US)) diff --git a/multisrc/overrides/madara/lovablesubs/src/LovableSubs.kt b/multisrc/overrides/madara/lovablesubs/src/LovableSubs.kt new file mode 100644 index 000000000..22534ef37 --- /dev/null +++ b/multisrc/overrides/madara/lovablesubs/src/LovableSubs.kt @@ -0,0 +1,7 @@ +package eu.kanade.tachiyomi.extension.tr.lovablesubs + +import eu.kanade.tachiyomi.multisrc.madara.Madara +import java.text.SimpleDateFormat +import java.util.Locale + +class LovableSubs : Madara("LovableSubs", "https://lovablesubs.com", "tr", SimpleDateFormat("dd MMM yyyy", Locale("tr"))) diff --git a/multisrc/overrides/madara/manga347/src/Manga347.kt b/multisrc/overrides/madara/manga347/src/Manga347.kt new file mode 100644 index 000000000..8868d311d --- /dev/null +++ b/multisrc/overrides/madara/manga347/src/Manga347.kt @@ -0,0 +1,9 @@ +package eu.kanade.tachiyomi.extension.en.manga347 + +import eu.kanade.tachiyomi.multisrc.madara.Madara +import java.text.SimpleDateFormat +import java.util.Locale + +class Manga347 : Madara("Manga347", "https://manga347.com", "en", SimpleDateFormat("d MMM, yyyy", Locale.US)) { + override val pageListParseSelector = "li.blocks-gallery-item" +} diff --git a/multisrc/overrides/madara/manga68/src/Manga68.kt b/multisrc/overrides/madara/manga68/src/Manga68.kt new file mode 100644 index 000000000..b7b03fced --- /dev/null +++ b/multisrc/overrides/madara/manga68/src/Manga68.kt @@ -0,0 +1,7 @@ +package eu.kanade.tachiyomi.extension.en.manga68 + +import eu.kanade.tachiyomi.multisrc.madara.Madara + +class Manga68 : Madara("Manga68", "https://manga68.com", "en") { + override val pageListParseSelector = "div.page-break, div.text-left p" +} diff --git a/multisrc/overrides/madara/mangaaction/src/MangaAction.kt b/multisrc/overrides/madara/mangaaction/src/MangaAction.kt new file mode 100644 index 000000000..e94d7b4f5 --- /dev/null +++ b/multisrc/overrides/madara/mangaaction/src/MangaAction.kt @@ -0,0 +1,7 @@ +package eu.kanade.tachiyomi.extension.ar.mangaaction + +import eu.kanade.tachiyomi.multisrc.madara.Madara +import java.text.SimpleDateFormat +import java.util.Locale + +class MangaAction : Madara("Manga Action", "https://manga-action.com", "ar", SimpleDateFormat("yyyy-MM-dd", Locale("ar"))) diff --git a/multisrc/overrides/madara/mangaarabonline/src/MangaArabOnline.kt b/multisrc/overrides/madara/mangaarabonline/src/MangaArabOnline.kt new file mode 100644 index 000000000..6b05165b0 --- /dev/null +++ b/multisrc/overrides/madara/mangaarabonline/src/MangaArabOnline.kt @@ -0,0 +1,7 @@ +package eu.kanade.tachiyomi.extension.ar.mangaarabonline + +import eu.kanade.tachiyomi.multisrc.madara.Madara +import java.text.SimpleDateFormat +import java.util.Locale + +class MangaArabOnline : Madara("Manga Arab Online مانجا عرب اون لاين", "https://mangaarabonline.com", "ar", SimpleDateFormat("MMM d, yyyy", Locale.forLanguageTag("ar"))) diff --git a/multisrc/overrides/madara/mangaarabteam/src/MangaArabTeam.kt b/multisrc/overrides/madara/mangaarabteam/src/MangaArabTeam.kt new file mode 100644 index 000000000..74b65f1c6 --- /dev/null +++ b/multisrc/overrides/madara/mangaarabteam/src/MangaArabTeam.kt @@ -0,0 +1,14 @@ +package eu.kanade.tachiyomi.extension.ar.mangaarabteam + +import eu.kanade.tachiyomi.multisrc.madara.Madara +import eu.kanade.tachiyomi.network.GET +import eu.kanade.tachiyomi.source.model.Page +import okhttp3.Request +import java.text.SimpleDateFormat +import java.util.Locale + +class MangaArabTeam : Madara("مانجا عرب تيم Manga Arab Team", "https://mangaarabteam.com", "ar", SimpleDateFormat("dd MMM، yyyy", Locale.forLanguageTag("ar"))) { + override fun imageRequest(page: Page): Request { + return GET(page.imageUrl!!.replace("http:", "https:")) + } +} diff --git a/multisrc/overrides/madara/mangabaz/src/MangaBaz.kt b/multisrc/overrides/madara/mangabaz/src/MangaBaz.kt new file mode 100644 index 000000000..646581f35 --- /dev/null +++ b/multisrc/overrides/madara/mangabaz/src/MangaBaz.kt @@ -0,0 +1,7 @@ +package eu.kanade.tachiyomi.extension.tr.mangabaz + +import eu.kanade.tachiyomi.multisrc.madara.Madara +import java.text.SimpleDateFormat +import java.util.Locale + +class MangaBaz : Madara("MangaBaz", "https://mangabaz.com", "tr", SimpleDateFormat("dd MMMM yyyy", Locale.forLanguageTag("tr"))) diff --git a/multisrc/overrides/madara/mangaclash/src/MangaClash.kt b/multisrc/overrides/madara/mangaclash/src/MangaClash.kt new file mode 100644 index 000000000..9abe1f951 --- /dev/null +++ b/multisrc/overrides/madara/mangaclash/src/MangaClash.kt @@ -0,0 +1,12 @@ +package eu.kanade.tachiyomi.extension.en.mangaclash + +import eu.kanade.tachiyomi.multisrc.madara.Madara +import java.text.SimpleDateFormat +import java.util.Locale + +class MangaClash : Madara( + "Manga Clash", + "https://mangaclash.com", + "en", + dateFormat = SimpleDateFormat("MM/dd/yy", Locale.US) +) diff --git a/multisrc/overrides/madara/mangacrimson/src/MangaCrimson.kt b/multisrc/overrides/madara/mangacrimson/src/MangaCrimson.kt new file mode 100644 index 000000000..f43ba6d46 --- /dev/null +++ b/multisrc/overrides/madara/mangacrimson/src/MangaCrimson.kt @@ -0,0 +1,7 @@ +package eu.kanade.tachiyomi.extension.tr.mangacrimson + +import eu.kanade.tachiyomi.multisrc.madara.Madara +import java.text.SimpleDateFormat +import java.util.Locale + +class MangaCrimson : Madara("Manga Crimson", "https://mangacrimson.com", "tr", SimpleDateFormat("dd MMMM yyyy", Locale("tr"))) diff --git a/multisrc/overrides/madara/mangadods/src/MangaDods.kt b/multisrc/overrides/madara/mangadods/src/MangaDods.kt new file mode 100644 index 000000000..1ae4bcf2c --- /dev/null +++ b/multisrc/overrides/madara/mangadods/src/MangaDods.kt @@ -0,0 +1,7 @@ +package eu.kanade.tachiyomi.extension.en.mangadods + +import eu.kanade.tachiyomi.multisrc.madara.Madara +import java.text.SimpleDateFormat +import java.util.Locale + +class MangaDods : Madara("MangaDods", "https://www.mangadods.com", "en", SimpleDateFormat("yyyy-MM-dd", Locale.US)) diff --git a/multisrc/overrides/madara/mangaeffect/src/MangaEffect.kt b/multisrc/overrides/madara/mangaeffect/src/MangaEffect.kt new file mode 100644 index 000000000..95b2e2dcc --- /dev/null +++ b/multisrc/overrides/madara/mangaeffect/src/MangaEffect.kt @@ -0,0 +1,7 @@ +package eu.kanade.tachiyomi.extension.en.mangaeffect + +import eu.kanade.tachiyomi.multisrc.madara.Madara +import java.text.SimpleDateFormat +import java.util.Locale + +class MangaEffect : Madara("MangaEffect", "https://mangaeffect.com", "en", SimpleDateFormat("dd.MM.yyyy", Locale.US)) diff --git a/multisrc/overrides/madara/mangagreat/src/MangaGreat.kt b/multisrc/overrides/madara/mangagreat/src/MangaGreat.kt new file mode 100644 index 000000000..274cf3703 --- /dev/null +++ b/multisrc/overrides/madara/mangagreat/src/MangaGreat.kt @@ -0,0 +1,7 @@ +package eu.kanade.tachiyomi.extension.en.mangagreat + +import eu.kanade.tachiyomi.multisrc.madara.Madara + +class MangaGreat : Madara("MangaGreat", "https://mangagreat.com", "en") { + override val pageListParseSelector = "li.blocks-gallery-item" +} diff --git a/multisrc/overrides/madara/mangalek/src/Mangalek.kt b/multisrc/overrides/madara/mangalek/src/Mangalek.kt new file mode 100644 index 000000000..e5493909d --- /dev/null +++ b/multisrc/overrides/madara/mangalek/src/Mangalek.kt @@ -0,0 +1,7 @@ +package eu.kanade.tachiyomi.extension.ar.mangalek + +import eu.kanade.tachiyomi.multisrc.madara.Madara +import java.text.SimpleDateFormat +import java.util.Locale + +class Mangalek : Madara("مانجا ليك", "https://mangalek.com", "ar", SimpleDateFormat("MMMM dd, yyyy", Locale("ar"))) diff --git a/multisrc/overrides/madara/mangaonlineco/src/MangaOnlineCo.kt b/multisrc/overrides/madara/mangaonlineco/src/MangaOnlineCo.kt new file mode 100644 index 000000000..c66dfb6fe --- /dev/null +++ b/multisrc/overrides/madara/mangaonlineco/src/MangaOnlineCo.kt @@ -0,0 +1,11 @@ +package eu.kanade.tachiyomi.extension.th.mangaonlineco + +import eu.kanade.tachiyomi.multisrc.madara.Madara +import eu.kanade.tachiyomi.source.model.SChapter +import okhttp3.Response +import java.text.SimpleDateFormat +import java.util.Locale + +class MangaOnlineCo : Madara("Manga-Online.co", "https://www.manga-online.co", "th", SimpleDateFormat("MMM dd, yyyy", Locale("th"))) { + override fun chapterListParse(response: Response): List = super.chapterListParse(response).reversed() +} diff --git a/multisrc/overrides/madara/mangaphoenix/src/MangaPhoenix.kt b/multisrc/overrides/madara/mangaphoenix/src/MangaPhoenix.kt new file mode 100644 index 000000000..50e5e7f0a --- /dev/null +++ b/multisrc/overrides/madara/mangaphoenix/src/MangaPhoenix.kt @@ -0,0 +1,8 @@ +package eu.kanade.tachiyomi.extension.tr.mangaphoenix + +import eu.kanade.tachiyomi.multisrc.madara.Madara + +class MangaPhoenix : Madara("Manga Diyari", "https://mangadiyari.com", "tr") { + // Formerly "Manga Phoenix" + override val id = 4308007020001642101 +} diff --git a/multisrc/overrides/madara/mangaread/src/MangaRead.kt b/multisrc/overrides/madara/mangaread/src/MangaRead.kt new file mode 100644 index 000000000..d38cba628 --- /dev/null +++ b/multisrc/overrides/madara/mangaread/src/MangaRead.kt @@ -0,0 +1,7 @@ +package eu.kanade.tachiyomi.extension.en.mangaread + +import eu.kanade.tachiyomi.multisrc.madara.Madara +import java.text.SimpleDateFormat +import java.util.Locale + +class MangaRead : Madara("Manga Read", "https://mangaread.co", "en", SimpleDateFormat("yyyy-MM-dd", Locale.US)) diff --git a/multisrc/overrides/madara/mangareadorg/src/MangaReadOrg.kt b/multisrc/overrides/madara/mangareadorg/src/MangaReadOrg.kt new file mode 100644 index 000000000..090a26f3f --- /dev/null +++ b/multisrc/overrides/madara/mangareadorg/src/MangaReadOrg.kt @@ -0,0 +1,7 @@ +package eu.kanade.tachiyomi.extension.en.mangareadorg + +import eu.kanade.tachiyomi.multisrc.madara.Madara +import java.text.SimpleDateFormat +import java.util.Locale + +class MangaReadOrg : Madara("MangaRead.org", "https://www.mangaread.org", "en", SimpleDateFormat("dd.MM.yyy", Locale.US)) diff --git a/multisrc/overrides/madara/mangascantrad/src/MangaScantrad.kt b/multisrc/overrides/madara/mangascantrad/src/MangaScantrad.kt new file mode 100644 index 000000000..b977b80bb --- /dev/null +++ b/multisrc/overrides/madara/mangascantrad/src/MangaScantrad.kt @@ -0,0 +1,7 @@ +package eu.kanade.tachiyomi.extension.fr.mangascantrad + +import eu.kanade.tachiyomi.multisrc.madara.Madara +import java.text.SimpleDateFormat +import java.util.Locale + +class MangaScantrad : Madara("Manga-Scantrad", "https://manga-scantrad.net", "fr", SimpleDateFormat("d MMM yyyy", Locale.FRANCE)) diff --git a/multisrc/overrides/madara/mangaspark/src/MangaSpark.kt b/multisrc/overrides/madara/mangaspark/src/MangaSpark.kt new file mode 100644 index 000000000..8bcff1aef --- /dev/null +++ b/multisrc/overrides/madara/mangaspark/src/MangaSpark.kt @@ -0,0 +1,24 @@ +package eu.kanade.tachiyomi.extension.ar.mangaspark + +import eu.kanade.tachiyomi.multisrc.madara.Madara +import eu.kanade.tachiyomi.source.model.SManga +import org.jsoup.nodes.Element + +class MangaSpark : Madara("MangaSpark", "https://mangaspark.com", "ar") { + override fun popularMangaFromElement(element: Element): SManga { + val manga = SManga.create() + + with(element) { + select(popularMangaUrlSelector).first()?.let { + manga.setUrlWithoutDomain(it.attr("abs:href")) + manga.title = it.ownText() + } + + select("img").first()?.let { + manga.thumbnail_url = imageFromElement(it)?.replace("mangaspark", "mangalek") + } + } + + return manga + } +} diff --git a/multisrc/overrides/madara/mangastarz/src/MangaStarz.kt b/multisrc/overrides/madara/mangastarz/src/MangaStarz.kt new file mode 100644 index 000000000..965ebd230 --- /dev/null +++ b/multisrc/overrides/madara/mangastarz/src/MangaStarz.kt @@ -0,0 +1,24 @@ +package eu.kanade.tachiyomi.extension.ar.mangastarz + +import eu.kanade.tachiyomi.multisrc.madara.Madara +import eu.kanade.tachiyomi.source.model.SManga +import org.jsoup.nodes.Element + +class MangaStarz : Madara("Manga Starz", "https://mangastarz.com", "ar") { + override fun popularMangaFromElement(element: Element): SManga { + val manga = SManga.create() + + with(element) { + select(popularMangaUrlSelector).first()?.let { + manga.setUrlWithoutDomain(it.attr("abs:href")) + manga.title = it.ownText() + } + + select("img").first()?.let { + manga.thumbnail_url = imageFromElement(it)?.replace("mangastarz", "mangalek") + } + } + + return manga + } +} diff --git a/multisrc/overrides/madara/mangasy/src/MangaSY.kt b/multisrc/overrides/madara/mangasy/src/MangaSY.kt new file mode 100644 index 000000000..d9ae61981 --- /dev/null +++ b/multisrc/overrides/madara/mangasy/src/MangaSY.kt @@ -0,0 +1,12 @@ +package eu.kanade.tachiyomi.extension.en.mangasy + +import eu.kanade.tachiyomi.multisrc.madara.Madara +import eu.kanade.tachiyomi.source.model.Page +import okhttp3.CacheControl +import okhttp3.Request + +class MangaSY : Madara("Manga SY", "https://www.mangasy.com", "en") { + override fun imageRequest(page: Page): Request = super.imageRequest(page).newBuilder() + .cacheControl(CacheControl.FORCE_NETWORK) + .build() +} diff --git a/multisrc/overrides/madara/mangateca/src/MangaTeca.kt b/multisrc/overrides/madara/mangateca/src/MangaTeca.kt new file mode 100644 index 000000000..09ca07d91 --- /dev/null +++ b/multisrc/overrides/madara/mangateca/src/MangaTeca.kt @@ -0,0 +1,35 @@ +package eu.kanade.tachiyomi.extension.pt.mangateca + +import eu.kanade.tachiyomi.multisrc.madara.Madara +import eu.kanade.tachiyomi.source.model.SChapter +import okhttp3.Headers +import org.jsoup.nodes.Element +import java.text.SimpleDateFormat +import java.util.Locale + +class MangaTeca : Madara( + "MangaTeca", + "https://www.mangateca.com", + "pt-BR", + SimpleDateFormat("MMMM dd, yyyy", Locale("pt", "BR")) +) { + override fun headersBuilder(): Headers.Builder = Headers.Builder() + .add("User-Agent", USER_AGENT) + .add("Referer", baseUrl) + .add("Origin", baseUrl) + + override fun chapterFromElement(element: Element): SChapter { + val parsedChapter = super.chapterFromElement(element) + + parsedChapter.date_upload = element.select("img").firstOrNull()?.attr("alt") + ?.let { parseChapterDate(it) } + ?: parseChapterDate(element.select("span.chapter-release-date i").firstOrNull()?.text()) + + return parsedChapter + } + + companion object { + private const val USER_AGENT = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) " + + "AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.75 Safari/537.36" + } +} diff --git a/multisrc/overrides/madara/mangayosh/src/MangaYosh.kt b/multisrc/overrides/madara/mangayosh/src/MangaYosh.kt new file mode 100644 index 000000000..c934440eb --- /dev/null +++ b/multisrc/overrides/madara/mangayosh/src/MangaYosh.kt @@ -0,0 +1,7 @@ +package eu.kanade.tachiyomi.extension.id.mangayosh + +import eu.kanade.tachiyomi.multisrc.madara.Madara +import java.text.SimpleDateFormat +import java.util.Locale + +class MangaYosh : Madara("MangaYosh", "https://mangayosh.xyz", "id", SimpleDateFormat("dd MMM yyyy", Locale.US)) diff --git a/multisrc/overrides/madara/mangazukiclub/src/MangazukiClubFactory.kt b/multisrc/overrides/madara/mangazukiclub/src/MangazukiClubFactory.kt new file mode 100644 index 000000000..6507f09b6 --- /dev/null +++ b/multisrc/overrides/madara/mangazukiclub/src/MangazukiClubFactory.kt @@ -0,0 +1,14 @@ +package eu.kanade.tachiyomi.extension.all.mangazukiclub + +import eu.kanade.tachiyomi.multisrc.madara.Madara +import eu.kanade.tachiyomi.source.Source +import eu.kanade.tachiyomi.source.SourceFactory + +class MangazukiClubFactory : SourceFactory { + override fun createSources(): List = listOf( + MangazukiClubJP(), + MangazukiClubKO(), + ) +} +class MangazukiClubJP : Madara("Mangazuki.club", "https://mangazuki.club", "ja") +class MangazukiClubKO : Madara("Mangazuki.club", "https://mangazuki.club", "ko") diff --git a/multisrc/overrides/madara/manhuabox/src/ManhuaBox.kt b/multisrc/overrides/madara/manhuabox/src/ManhuaBox.kt new file mode 100644 index 000000000..f0bec66ef --- /dev/null +++ b/multisrc/overrides/madara/manhuabox/src/ManhuaBox.kt @@ -0,0 +1,7 @@ +package eu.kanade.tachiyomi.extension.en.manhuabox + +import eu.kanade.tachiyomi.multisrc.madara.Madara + +class ManhuaBox : Madara("ManhuaBox", "https://manhuabox.net", "en") { + override val pageListParseSelector = "div.page-break, div.text-left p img" +} diff --git a/multisrc/overrides/madara/manhuafast/src/ManhuaFast.kt b/multisrc/overrides/madara/manhuafast/src/ManhuaFast.kt new file mode 100644 index 000000000..9312dea6a --- /dev/null +++ b/multisrc/overrides/madara/manhuafast/src/ManhuaFast.kt @@ -0,0 +1,7 @@ +package eu.kanade.tachiyomi.extension.en.manhuafast + +import eu.kanade.tachiyomi.multisrc.madara.Madara + +class ManhuaFast : Madara("ManhuaFast", "https://manhuafast.com", "en") { + override val pageListParseSelector = "li.blocks-gallery-item" +} diff --git a/multisrc/overrides/madara/manhuaplus/src/ManhuaPlus.kt b/multisrc/overrides/madara/manhuaplus/src/ManhuaPlus.kt new file mode 100644 index 000000000..64a7795c0 --- /dev/null +++ b/multisrc/overrides/madara/manhuaplus/src/ManhuaPlus.kt @@ -0,0 +1,7 @@ +package eu.kanade.tachiyomi.extension.en.manhuaplus + +import eu.kanade.tachiyomi.multisrc.madara.Madara + +class ManhuaPlus : Madara("Manhua Plus", "https://manhuaplus.com", "en") { + override val pageListParseSelector = "li.blocks-gallery-item" +} diff --git a/multisrc/overrides/madara/manhuaus/src/ManhuaUS.kt b/multisrc/overrides/madara/manhuaus/src/ManhuaUS.kt new file mode 100644 index 000000000..5af646230 --- /dev/null +++ b/multisrc/overrides/madara/manhuaus/src/ManhuaUS.kt @@ -0,0 +1,7 @@ +package eu.kanade.tachiyomi.extension.en.manhuaus + +import eu.kanade.tachiyomi.multisrc.madara.Madara + +class ManhuaUS : Madara("ManhuaUS", "https://manhuaus.com", "en") { + override val pageListParseSelector = "li.blocks-gallery-item" +} diff --git a/multisrc/overrides/madara/martialscans/src/MartialScans.kt b/multisrc/overrides/madara/martialscans/src/MartialScans.kt new file mode 100644 index 000000000..7bd1b121b --- /dev/null +++ b/multisrc/overrides/madara/martialscans/src/MartialScans.kt @@ -0,0 +1,26 @@ +package eu.kanade.tachiyomi.extension.en.martialscans + +import eu.kanade.tachiyomi.multisrc.madara.Madara +import eu.kanade.tachiyomi.source.model.SManga +import org.jsoup.nodes.Element + +class MartialScans : Madara("Martial Scans", "https://martialscans.com", "en") { + override fun popularMangaFromElement(element: Element): SManga { + val manga = SManga.create() + + with(element) { + select(popularMangaUrlSelector).last()?.let { + manga.setUrlWithoutDomain(it.attr("href")) + manga.title = it.ownText() + } + + select("img").last()?.let { + manga.thumbnail_url = imageFromElement(it) + } + } + + return manga + } + + override fun searchMangaFromElement(element: Element): SManga = popularMangaFromElement(element) +} diff --git a/multisrc/overrides/madara/milftoon/src/Milftoon.kt b/multisrc/overrides/madara/milftoon/src/Milftoon.kt new file mode 100644 index 000000000..8c9aee4a0 --- /dev/null +++ b/multisrc/overrides/madara/milftoon/src/Milftoon.kt @@ -0,0 +1,10 @@ +package eu.kanade.tachiyomi.extension.en.milftoon + +import eu.kanade.tachiyomi.multisrc.madara.Madara +import eu.kanade.tachiyomi.network.GET +import okhttp3.Request + +class Milftoon : Madara("Milftoon", "https://milftoon.xxx", "en") { + override fun popularMangaRequest(page: Int): Request = GET("$baseUrl/page/$page/?m_orderby=views", headers) + override fun latestUpdatesRequest(page: Int): Request = GET("$baseUrl/page/$page/?m_orderby=latest", headers) +} diff --git a/multisrc/overrides/madara/mixedmanga/src/MixedManga.kt b/multisrc/overrides/madara/mixedmanga/src/MixedManga.kt new file mode 100644 index 000000000..13c9f8934 --- /dev/null +++ b/multisrc/overrides/madara/mixedmanga/src/MixedManga.kt @@ -0,0 +1,10 @@ +package eu.kanade.tachiyomi.extension.en.mixedmanga + +import eu.kanade.tachiyomi.multisrc.madara.Madara +import okhttp3.Headers +import java.text.SimpleDateFormat +import java.util.Locale + +class MixedManga : Madara("Mixed Manga", "https://mixedmanga.com", "en", SimpleDateFormat("d MMM yyyy", Locale.US)) { + override fun headersBuilder(): Headers.Builder = super.headersBuilder().add("Referer", baseUrl) +} diff --git a/multisrc/overrides/madara/mundowuxia/src/MundoWuxia.kt b/multisrc/overrides/madara/mundowuxia/src/MundoWuxia.kt new file mode 100644 index 000000000..692291bb9 --- /dev/null +++ b/multisrc/overrides/madara/mundowuxia/src/MundoWuxia.kt @@ -0,0 +1,7 @@ +package eu.kanade.tachiyomi.extension.es.mundowuxia + +import eu.kanade.tachiyomi.multisrc.madara.Madara +import java.text.SimpleDateFormat +import java.util.Locale + +class MundoWuxia : Madara("Mundo Wuxia", "https://mundowuxia.com", "es", SimpleDateFormat("MMMM dd, yyyy", Locale("es"))) diff --git a/multisrc/overrides/madara/mysticalmerries/src/MysticalMerries.kt b/multisrc/overrides/madara/mysticalmerries/src/MysticalMerries.kt new file mode 100644 index 000000000..1d2dd5333 --- /dev/null +++ b/multisrc/overrides/madara/mysticalmerries/src/MysticalMerries.kt @@ -0,0 +1,9 @@ +package eu.kanade.tachiyomi.extension.en.mysticalmerries + +import eu.kanade.tachiyomi.multisrc.madara.Madara +import eu.kanade.tachiyomi.network.GET + +class MysticalMerries : Madara("Mystical Merries", "https://mysticalmerries.com", "en") { + override fun popularMangaRequest(page: Int) = GET("$baseUrl/genre/manhwa/page/$page/?m_orderby=trending", headers) + override fun latestUpdatesRequest(page: Int) = GET("$baseUrl/genre/manhwa/page/$page/?m_orderby=latest", headers) +} diff --git a/multisrc/overrides/madara/nazarickscans/src/NazarickScans.kt b/multisrc/overrides/madara/nazarickscans/src/NazarickScans.kt new file mode 100644 index 000000000..ee913c34d --- /dev/null +++ b/multisrc/overrides/madara/nazarickscans/src/NazarickScans.kt @@ -0,0 +1,11 @@ +package eu.kanade.tachiyomi.extension.en.nazarickscans + +import eu.kanade.tachiyomi.multisrc.madara.Madara +import eu.kanade.tachiyomi.network.GET + +class NazarickScans : Madara("Nazarick Scans", "https://nazarickscans.com", "en") { + override fun popularMangaRequest(page: Int) = GET("$baseUrl/manga/page/$page/?m_orderby=trending", headers) + override fun latestUpdatesRequest(page: Int) = GET("$baseUrl/manga/page/$page/?m_orderby=trending", headers) + override fun popularMangaNextPageSelector(): String? = null + override fun latestUpdatesNextPageSelector(): String? = null +} diff --git a/multisrc/overrides/madara/neatmanga/src/NeatManga.kt b/multisrc/overrides/madara/neatmanga/src/NeatManga.kt new file mode 100644 index 000000000..aa9d7f20b --- /dev/null +++ b/multisrc/overrides/madara/neatmanga/src/NeatManga.kt @@ -0,0 +1,7 @@ +package eu.kanade.tachiyomi.extension.en.neatmanga + +import eu.kanade.tachiyomi.multisrc.madara.Madara +import java.text.SimpleDateFormat +import java.util.Locale + +class NeatManga : Madara("NeatManga", "https://neatmanga.com", "en", SimpleDateFormat("dd MMM yyyy", Locale.US)) diff --git a/multisrc/overrides/madara/nekobreaker/src/NekoBreaker.kt b/multisrc/overrides/madara/nekobreaker/src/NekoBreaker.kt new file mode 100644 index 000000000..2b7a781f2 --- /dev/null +++ b/multisrc/overrides/madara/nekobreaker/src/NekoBreaker.kt @@ -0,0 +1,7 @@ +package eu.kanade.tachiyomi.extension.pt.nekobreaker + +import eu.kanade.tachiyomi.multisrc.madara.Madara +import java.text.SimpleDateFormat +import java.util.Locale + +class NekoBreaker : Madara("NekoBreaker", "https://nekobreaker.com", "pt-BR", SimpleDateFormat("MMMM dd, yyyy", Locale("pt"))) diff --git a/multisrc/overrides/madara/neoxscanlator/src/NeoxScanlator.kt b/multisrc/overrides/madara/neoxscanlator/src/NeoxScanlator.kt new file mode 100644 index 000000000..0ae0957fb --- /dev/null +++ b/multisrc/overrides/madara/neoxscanlator/src/NeoxScanlator.kt @@ -0,0 +1,34 @@ +package eu.kanade.tachiyomi.extension.pt.neoxscanlator + +import eu.kanade.tachiyomi.multisrc.madara.Madara +import eu.kanade.tachiyomi.source.model.FilterList +import okhttp3.Headers +import okhttp3.OkHttpClient +import java.text.SimpleDateFormat +import java.util.Locale +import java.util.concurrent.TimeUnit + +class NeoxScanlator : Madara( + "Neox Scanlator", + "https://neoxscans.com", + "pt-BR", + SimpleDateFormat("dd/MM/yyyy", Locale("pt", "BR")) +) { + override val client: OkHttpClient = network.cloudflareClient.newBuilder() + .connectTimeout(1, TimeUnit.MINUTES) + .readTimeout(1, TimeUnit.MINUTES) + .build() + + override fun headersBuilder(): Headers.Builder = Headers.Builder() + .add("User-Agent", USER_AGENT) + .add("Referer", baseUrl) + .add("Origin", baseUrl) + + // Only status and order by filter work. + override fun getFilterList(): FilterList = FilterList(super.getFilterList().slice(3..4)) + + companion object { + private const val USER_AGENT = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) " + + "AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Safari/537.36" + } +} diff --git a/multisrc/overrides/madara/nightcomic/src/NightComic.kt b/multisrc/overrides/madara/nightcomic/src/NightComic.kt new file mode 100644 index 000000000..14d219fb5 --- /dev/null +++ b/multisrc/overrides/madara/nightcomic/src/NightComic.kt @@ -0,0 +1,11 @@ +package eu.kanade.tachiyomi.extension.en.nightcomic + +import eu.kanade.tachiyomi.multisrc.madara.Madara +import okhttp3.Headers + +class NightComic : Madara("Night Comic", "https://www.nightcomic.com", "en") { + override val formHeaders: Headers = headersBuilder() + .add("Content-Type", "application/x-www-form-urlencoded") + .add("X-MOD-SBB-CTYPE", "xhr") + .build() +} diff --git a/multisrc/overrides/madara/nijitranslations/src/NijiTranslations.kt b/multisrc/overrides/madara/nijitranslations/src/NijiTranslations.kt new file mode 100644 index 000000000..bec40b814 --- /dev/null +++ b/multisrc/overrides/madara/nijitranslations/src/NijiTranslations.kt @@ -0,0 +1,7 @@ +package eu.kanade.tachiyomi.extension.ar.nijitranslations + +import eu.kanade.tachiyomi.multisrc.madara.Madara +import java.text.SimpleDateFormat +import java.util.Locale + +class NijiTranslations : Madara("Niji Translations", "https://niji-translations.com", "ar", SimpleDateFormat("MMMM dd, yyyy", Locale("ar"))) diff --git a/multisrc/overrides/madara/offscan/src/OffScan.kt b/multisrc/overrides/madara/offscan/src/OffScan.kt new file mode 100644 index 000000000..7ea291170 --- /dev/null +++ b/multisrc/overrides/madara/offscan/src/OffScan.kt @@ -0,0 +1,12 @@ +package eu.kanade.tachiyomi.extension.pt.offscan + +import eu.kanade.tachiyomi.multisrc.madara.Madara +import java.text.SimpleDateFormat +import java.util.Locale + +class OffScan : Madara( + "Off Scan", + "https://offscan.top", + "pt-BR", + dateFormat = SimpleDateFormat("dd/MM/yy", Locale.US) +) diff --git a/multisrc/overrides/madara/pmscans/src/PMScans.kt b/multisrc/overrides/madara/pmscans/src/PMScans.kt new file mode 100644 index 000000000..4622d7e89 --- /dev/null +++ b/multisrc/overrides/madara/pmscans/src/PMScans.kt @@ -0,0 +1,7 @@ +package eu.kanade.tachiyomi.extension.en.pmscans + +import eu.kanade.tachiyomi.multisrc.madara.Madara +import java.text.SimpleDateFormat +import java.util.Locale + +class PMScans : Madara("PMScans", "https://www.pmscans.com", "en", SimpleDateFormat("MMM-dd-yy", Locale.US)) diff --git a/multisrc/overrides/madara/pojokmanga/src/PojokManga.kt b/multisrc/overrides/madara/pojokmanga/src/PojokManga.kt new file mode 100644 index 000000000..0d007f5b1 --- /dev/null +++ b/multisrc/overrides/madara/pojokmanga/src/PojokManga.kt @@ -0,0 +1,7 @@ +package eu.kanade.tachiyomi.extension.id.pojokmanga + +import eu.kanade.tachiyomi.multisrc.madara.Madara +import java.text.SimpleDateFormat +import java.util.Locale + +class PojokManga : Madara("Pojok Manga", "https://pojokmanga.com", "id", SimpleDateFormat("MMM dd, yyyy", Locale.US)) diff --git a/multisrc/overrides/madara/projetoscanlator/src/ProjetoScanlator.kt b/multisrc/overrides/madara/projetoscanlator/src/ProjetoScanlator.kt new file mode 100644 index 000000000..8bdc9301b --- /dev/null +++ b/multisrc/overrides/madara/projetoscanlator/src/ProjetoScanlator.kt @@ -0,0 +1,7 @@ +package eu.kanade.tachiyomi.extension.pt.projetoscanlator + +import eu.kanade.tachiyomi.multisrc.madara.Madara +import java.text.SimpleDateFormat +import java.util.Locale + +class ProjetoScanlator : Madara("Projeto Scanlator", "https://projetoscanlator.com", "pt-BR", SimpleDateFormat("dd/MM/yyyy", Locale("pt", "BR"))) diff --git a/multisrc/overrides/madara/queensmanga/src/QueensManga.kt b/multisrc/overrides/madara/queensmanga/src/QueensManga.kt new file mode 100644 index 000000000..12bb8fe1a --- /dev/null +++ b/multisrc/overrides/madara/queensmanga/src/QueensManga.kt @@ -0,0 +1,7 @@ +package eu.kanade.tachiyomi.extension.ar.queensmanga + +import eu.kanade.tachiyomi.multisrc.madara.Madara + +class QueensManga : Madara("QueensManga ملكات المانجا", "https://queensmanga.com", "ar") { + override fun chapterListSelector(): String = "div.listing-chapters_wrap a" +} diff --git a/multisrc/overrides/madara/randomtranslations/src/RandomTranslations.kt b/multisrc/overrides/madara/randomtranslations/src/RandomTranslations.kt new file mode 100644 index 000000000..b1eaa4a5a --- /dev/null +++ b/multisrc/overrides/madara/randomtranslations/src/RandomTranslations.kt @@ -0,0 +1,7 @@ +package eu.kanade.tachiyomi.extension.en.randomtranslations + +import eu.kanade.tachiyomi.multisrc.madara.Madara +import java.text.SimpleDateFormat +import java.util.Locale + +class RandomTranslations : Madara("Random Translations", "https://randomtranslations.com", "en", SimpleDateFormat("dd/MM/yyyy", Locale.US)) diff --git a/multisrc/overrides/madara/rawmangas/src/RawMangas.kt b/multisrc/overrides/madara/rawmangas/src/RawMangas.kt new file mode 100644 index 000000000..b3714d74c --- /dev/null +++ b/multisrc/overrides/madara/rawmangas/src/RawMangas.kt @@ -0,0 +1,7 @@ +package eu.kanade.tachiyomi.extension.ja.rawmangas + +import eu.kanade.tachiyomi.multisrc.madara.Madara +import java.text.SimpleDateFormat +import java.util.Locale + +class RawMangas : Madara("Raw Mangas", "https://rawmangas.net", "ja", SimpleDateFormat("MMMM dd, yyyy", Locale.US)) diff --git a/multisrc/overrides/madara/readmanhua/src/ReadManhua.kt b/multisrc/overrides/madara/readmanhua/src/ReadManhua.kt new file mode 100644 index 000000000..cc23aaeab --- /dev/null +++ b/multisrc/overrides/madara/readmanhua/src/ReadManhua.kt @@ -0,0 +1,12 @@ +package eu.kanade.tachiyomi.extension.en.readmanhua + +import eu.kanade.tachiyomi.multisrc.madara.Madara +import java.text.SimpleDateFormat +import java.util.Locale + +class ReadManhua : Madara( + "ReadManhua", + "https://readmanhua.net", + "en", + dateFormat = SimpleDateFormat("dd MMM yy", Locale.US) +) diff --git a/multisrc/overrides/madara/renascans/src/RenaScans.kt b/multisrc/overrides/madara/renascans/src/RenaScans.kt new file mode 100644 index 000000000..7c8046ceb --- /dev/null +++ b/multisrc/overrides/madara/renascans/src/RenaScans.kt @@ -0,0 +1,7 @@ +package eu.kanade.tachiyomi.extension.en.renascans + +import eu.kanade.tachiyomi.multisrc.madara.Madara +import java.text.SimpleDateFormat +import java.util.Locale + +class RenaScans : Madara("Renascence Scans (Renascans)", "https://new.renascans.com", "en", SimpleDateFormat("dd/MM/yyyy", Locale.US)) diff --git a/multisrc/overrides/madara/ruyamanga/src/RuyaManga.kt b/multisrc/overrides/madara/ruyamanga/src/RuyaManga.kt new file mode 100644 index 000000000..2fe40b66d --- /dev/null +++ b/multisrc/overrides/madara/ruyamanga/src/RuyaManga.kt @@ -0,0 +1,7 @@ +package eu.kanade.tachiyomi.extension.tr.ruyamanga + +import eu.kanade.tachiyomi.multisrc.madara.Madara +import java.text.SimpleDateFormat +import java.util.Locale + +class RuyaManga : Madara("Rüya Manga", "https://www.ruyamanga.com", "tr", SimpleDateFormat("dd MMMM yyyy", Locale.forLanguageTag("tr"))) diff --git a/multisrc/overrides/madara/shoujohearts/src/ShoujoHearts.kt b/multisrc/overrides/madara/shoujohearts/src/ShoujoHearts.kt new file mode 100644 index 000000000..48c199a07 --- /dev/null +++ b/multisrc/overrides/madara/shoujohearts/src/ShoujoHearts.kt @@ -0,0 +1,16 @@ +package eu.kanade.tachiyomi.extension.en.shoujohearts + +import eu.kanade.tachiyomi.multisrc.madara.Madara +import eu.kanade.tachiyomi.network.POST +import okhttp3.CacheControl +import okhttp3.Request + +class ShoujoHearts : Madara("ShoujoHearts", "http://shoujohearts.com", "en") { + override fun popularMangaRequest(page: Int): Request = + POST("$baseUrl/reader/wp-admin/admin-ajax.php", formHeaders, formBuilder(page, true).build(), CacheControl.FORCE_NETWORK) + + override fun latestUpdatesRequest(page: Int): Request = + POST("$baseUrl/reader/wp-admin/admin-ajax.php", formHeaders, formBuilder(page, false).build(), CacheControl.FORCE_NETWORK) + + override fun searchPage(page: Int): String = "reader/page/$page/" +} diff --git a/multisrc/overrides/madara/sixiangscans/src/SiXiangScans.kt b/multisrc/overrides/madara/sixiangscans/src/SiXiangScans.kt new file mode 100644 index 000000000..c846cbda6 --- /dev/null +++ b/multisrc/overrides/madara/sixiangscans/src/SiXiangScans.kt @@ -0,0 +1,7 @@ +package eu.kanade.tachiyomi.extension.en.sixiangscans + +import eu.kanade.tachiyomi.multisrc.madara.Madara +import java.text.SimpleDateFormat +import java.util.Locale + +class SiXiangScans : Madara("SiXiang Scans", "http://www.sixiangscans.com", "en", SimpleDateFormat("MMMM dd, yyyy", Locale.US)) diff --git a/multisrc/overrides/madara/siyahmelek/src/Siyahmelek.kt b/multisrc/overrides/madara/siyahmelek/src/Siyahmelek.kt new file mode 100644 index 000000000..726606f9f --- /dev/null +++ b/multisrc/overrides/madara/siyahmelek/src/Siyahmelek.kt @@ -0,0 +1,7 @@ +package eu.kanade.tachiyomi.extension.tr.siyahmelek + +import eu.kanade.tachiyomi.multisrc.madara.Madara +import java.text.SimpleDateFormat +import java.util.Locale + +class Siyahmelek : Madara("Siyahmelek", "https://siyahmelek.com", "tr", SimpleDateFormat("dd MMM yyyy", Locale("tr"))) diff --git a/multisrc/overrides/madara/soloscanlation/src/SoloScanlation.kt b/multisrc/overrides/madara/soloscanlation/src/SoloScanlation.kt new file mode 100644 index 000000000..ec89d8d2b --- /dev/null +++ b/multisrc/overrides/madara/soloscanlation/src/SoloScanlation.kt @@ -0,0 +1,7 @@ +package eu.kanade.tachiyomi.extension.en.soloscanlation + +import eu.kanade.tachiyomi.multisrc.madara.Madara +import java.text.SimpleDateFormat +import java.util.Locale + +class SoloScanlation : Madara("SoloScanlation", "https://soloscanlation.site", "en", SimpleDateFormat("MMMM dd, yyyy", Locale.US)) diff --git a/multisrc/overrides/madara/spookyscanlations/src/SpookyScanlations.kt b/multisrc/overrides/madara/spookyscanlations/src/SpookyScanlations.kt new file mode 100644 index 000000000..3f71ca77b --- /dev/null +++ b/multisrc/overrides/madara/spookyscanlations/src/SpookyScanlations.kt @@ -0,0 +1,7 @@ +package eu.kanade.tachiyomi.extension.es.spookyscanlations + +import eu.kanade.tachiyomi.multisrc.madara.Madara +import java.text.SimpleDateFormat +import java.util.Locale + +class SpookyScanlations : Madara("Spooky Scanlations", "https://spookyscanlations.xyz", "es", SimpleDateFormat("MMMM dd, yyyy", Locale("es"))) diff --git a/multisrc/overrides/madara/stagecomics/src/StageComics.kt b/multisrc/overrides/madara/stagecomics/src/StageComics.kt new file mode 100644 index 000000000..0b9890b2c --- /dev/null +++ b/multisrc/overrides/madara/stagecomics/src/StageComics.kt @@ -0,0 +1,19 @@ +package eu.kanade.tachiyomi.extension.pt.stagecomics + +import eu.kanade.tachiyomi.multisrc.madara.Madara +import eu.kanade.tachiyomi.source.model.SChapter +import org.jsoup.nodes.Element +import java.text.SimpleDateFormat +import java.util.Locale + +class StageComics : Madara("StageComics", "https://stagecomics.com", "pt-BR", SimpleDateFormat("MMMM dd, yyyy", Locale("pt"))) { + override fun chapterFromElement(element: Element): SChapter { + val parsedChapter = super.chapterFromElement(element) + + parsedChapter.date_upload = element.select("img").firstOrNull()?.attr("alt") + ?.let { parseChapterDate(it) } + ?: parseChapterDate(element.select("span.chapter-release-date i").firstOrNull()?.text()) + + return parsedChapter + } +} diff --git a/multisrc/overrides/madara/threesixtyfivemanga/src/ThreeSixtyFiveManga.kt b/multisrc/overrides/madara/threesixtyfivemanga/src/ThreeSixtyFiveManga.kt new file mode 100644 index 000000000..0d375b494 --- /dev/null +++ b/multisrc/overrides/madara/threesixtyfivemanga/src/ThreeSixtyFiveManga.kt @@ -0,0 +1,10 @@ +package eu.kanade.tachiyomi.extension.en.threesixtyfivemanga + +import eu.kanade.tachiyomi.multisrc.madara.Madara +import eu.kanade.tachiyomi.network.GET +import okhttp3.Request + +class ThreeSixtyFiveManga : Madara("365Manga", "https://365manga.com", "en") { + override fun popularMangaRequest(page: Int): Request = GET("$baseUrl/manga/page/$page/?m_orderby=views", headers) + override fun latestUpdatesRequest(page: Int): Request = GET("$baseUrl/manga/page/$page/?m_orderby=latest", headers) +} diff --git a/multisrc/overrides/madara/toongod/src/ToonGod.kt b/multisrc/overrides/madara/toongod/src/ToonGod.kt new file mode 100644 index 000000000..a3f78d090 --- /dev/null +++ b/multisrc/overrides/madara/toongod/src/ToonGod.kt @@ -0,0 +1,7 @@ +package eu.kanade.tachiyomi.extension.en.toongod + +import eu.kanade.tachiyomi.multisrc.madara.Madara +import java.text.SimpleDateFormat +import java.util.Locale + +class ToonGod : Madara("ToonGod", "https://www.toongod.com", "en", SimpleDateFormat("dd MMM yyyy", Locale.US)) diff --git a/multisrc/overrides/madara/toonily/src/Toonily.kt b/multisrc/overrides/madara/toonily/src/Toonily.kt new file mode 100644 index 000000000..28ee3d605 --- /dev/null +++ b/multisrc/overrides/madara/toonily/src/Toonily.kt @@ -0,0 +1,37 @@ +package eu.kanade.tachiyomi.extension.en.toonily + +import eu.kanade.tachiyomi.multisrc.madara.Madara + +class Toonily : Madara("Toonily", "https://toonily.com", "en") { + override fun getGenreList(): List = listOf( + Genre("Action", "action-webtoon"), + Genre("Adult", "adult-webtoon"), + Genre("Adventure", "adventure-webtoon"), + Genre("Comedy", "comedy-webtoon"), + Genre("Drama", "drama-webtoon"), + Genre("Fantasy", "fantasy-webtoon"), + Genre("Gender Bender", "gender-bender"), + Genre("Gossip", "gossip"), + Genre("Harem", "harem-webtoon"), + Genre("Historical", "webtoon-historical"), + Genre("Horror", "horror-webtoon"), + Genre("Josei", "josei-manga"), + Genre("Mature", "mature-webtoon"), + Genre("Mystery", "mystery-webtoon"), + Genre("NTR", "ntr-webtoon"), + Genre("Psychological", "psychological-webtoon"), + Genre("Romance", "romance-webtoon"), + Genre("School life", "school-life-webtoon"), + Genre("Sci-Fi", "scifi-webtoon"), + Genre("Seinen", "seinen-webtoon"), + Genre("Shoujo", "shoujo"), + Genre("Shounen", "shounen-webtoon"), + Genre("Slice of Life", "sliceoflife-webtoon"), + Genre("Supernatural", "supernatural-webtoon"), + Genre("Thriller", "thriller-webtoon"), + Genre("Tragedy", "tragedy"), + Genre("Vanilla", "vanilla-webtoon"), + Genre("Yaoi", "yaoi-webtoon"), + Genre("Yuri", "yuri-webtoon") + ) +} diff --git a/multisrc/overrides/madara/toonpoint/src/ToonPoint.kt b/multisrc/overrides/madara/toonpoint/src/ToonPoint.kt new file mode 100644 index 000000000..d2b6adf42 --- /dev/null +++ b/multisrc/overrides/madara/toonpoint/src/ToonPoint.kt @@ -0,0 +1,7 @@ +package eu.kanade.tachiyomi.extension.en.toonpoint + +import eu.kanade.tachiyomi.multisrc.madara.Madara + +class ToonPoint : Madara("ToonPoint", "https://toonpoint.com", "en") { + override val userAgentRandomizer = "" +} diff --git a/multisrc/overrides/madara/topmanhua/src/TopManhua.kt b/multisrc/overrides/madara/topmanhua/src/TopManhua.kt new file mode 100644 index 000000000..a266577da --- /dev/null +++ b/multisrc/overrides/madara/topmanhua/src/TopManhua.kt @@ -0,0 +1,10 @@ +package eu.kanade.tachiyomi.extension.en.topmanhua + +import eu.kanade.tachiyomi.multisrc.madara.Madara +import okhttp3.Headers +import java.text.SimpleDateFormat +import java.util.Locale + +class TopManhua : Madara("Top Manhua", "https://topmanhua.com", "en", SimpleDateFormat("MM/dd/yy", Locale.US)) { + override fun headersBuilder(): Headers.Builder = super.headersBuilder().add("Referer", baseUrl) +} diff --git a/multisrc/overrides/madara/truyentranhaudiocom/src/TruyenTranhAudioCom.kt b/multisrc/overrides/madara/truyentranhaudiocom/src/TruyenTranhAudioCom.kt new file mode 100644 index 000000000..97e0962fc --- /dev/null +++ b/multisrc/overrides/madara/truyentranhaudiocom/src/TruyenTranhAudioCom.kt @@ -0,0 +1,26 @@ +package eu.kanade.tachiyomi.extension.vi.truyentranhaudiocom + +import eu.kanade.tachiyomi.multisrc.madara.Madara +import eu.kanade.tachiyomi.network.GET +import eu.kanade.tachiyomi.source.model.Page +import eu.kanade.tachiyomi.source.model.SManga +import okhttp3.Request +import org.jsoup.nodes.Document +import org.jsoup.nodes.Element +import java.text.SimpleDateFormat +import java.util.Locale + +class TruyenTranhAudioCom : Madara("TruyenTranhAudio.com", "https://truyentranhaudio.com", "vi", SimpleDateFormat("dd/MM/yyyy", Locale.getDefault())) { + override fun popularMangaRequest(page: Int): Request = GET("$baseUrl/page/$page?s&post_type=wp-manga&m_orderby=views", headers) + override fun popularMangaSelector() = searchMangaSelector() + override fun popularMangaFromElement(element: Element): SManga = searchMangaFromElement(element) + override fun latestUpdatesRequest(page: Int): Request = GET("$baseUrl/page/$page?s&post_type=wp-manga&m_orderby=latest", headers) + override fun latestUpdatesSelector() = searchMangaSelector() + override fun latestUpdatesFromElement(element: Element): SManga = searchMangaFromElement(element) + override fun pageListParse(document: Document): List { + return document.select("div.reading-content img").map { it.attr("abs:src") } + .filterNot { it.isNullOrEmpty() } + .distinct() + .mapIndexed { i, url -> Page(i, "", url) } + } +} diff --git a/multisrc/overrides/madara/truyentranhaudioonline/src/TruyenTranhAudioOnline.kt b/multisrc/overrides/madara/truyentranhaudioonline/src/TruyenTranhAudioOnline.kt new file mode 100644 index 000000000..e84a39968 --- /dev/null +++ b/multisrc/overrides/madara/truyentranhaudioonline/src/TruyenTranhAudioOnline.kt @@ -0,0 +1,21 @@ +package eu.kanade.tachiyomi.extension.vi.truyentranhaudioonline + +import eu.kanade.tachiyomi.multisrc.madara.Madara +import eu.kanade.tachiyomi.source.model.Page +import okhttp3.Headers +import org.jsoup.nodes.Document +import java.text.SimpleDateFormat +import java.util.Locale + +class TruyenTranhAudioOnline : Madara("TruyenTranhAudio.online", "https://truyentranhaudio.online", "vi", SimpleDateFormat("dd/MM/yyyy", Locale.getDefault())) { + override val formHeaders: Headers = headersBuilder() + .add("Content-Type", "application/x-www-form-urlencoded") + .build() + + override fun pageListParse(document: Document): List { + return document.select("div.reading-content img").map { it.attr("abs:src") } + .filterNot { it.isNullOrEmpty() } + .distinct() + .mapIndexed { i, url -> Page(i, "", url) } + } +} diff --git a/multisrc/overrides/madara/tsubakinoscan/src/TsubakiNoScan.kt b/multisrc/overrides/madara/tsubakinoscan/src/TsubakiNoScan.kt new file mode 100644 index 000000000..9292601e3 --- /dev/null +++ b/multisrc/overrides/madara/tsubakinoscan/src/TsubakiNoScan.kt @@ -0,0 +1,12 @@ +package eu.kanade.tachiyomi.extension.fr.tsubakinoscan + +import eu.kanade.tachiyomi.multisrc.madara.Madara +import java.text.SimpleDateFormat +import java.util.Locale + +class TsubakiNoScan : Madara( + "Tsubaki No Scan", + "https://tsubakinoscan.com", + "fr", + dateFormat = SimpleDateFormat("dd/MM/yy", Locale.US) +) diff --git a/multisrc/overrides/madara/turkcemanga/src/TurkceManga.kt b/multisrc/overrides/madara/turkcemanga/src/TurkceManga.kt new file mode 100644 index 000000000..13f3c9c2a --- /dev/null +++ b/multisrc/overrides/madara/turkcemanga/src/TurkceManga.kt @@ -0,0 +1,30 @@ +package eu.kanade.tachiyomi.extension.tr.turkcemanga + +import eu.kanade.tachiyomi.multisrc.madara.Madara +import eu.kanade.tachiyomi.network.GET +import eu.kanade.tachiyomi.network.POST +import eu.kanade.tachiyomi.source.Source +import eu.kanade.tachiyomi.source.SourceFactory +import eu.kanade.tachiyomi.source.model.FilterList +import eu.kanade.tachiyomi.source.model.Page +import eu.kanade.tachiyomi.source.model.SChapter +import eu.kanade.tachiyomi.source.model.SManga +import okhttp3.CacheControl +import okhttp3.Headers +import okhttp3.OkHttpClient +import okhttp3.Request +import okhttp3.Response +import org.jsoup.nodes.Document +import org.jsoup.nodes.Element +import java.text.SimpleDateFormat +import java.util.Locale +import java.util.concurrent.TimeUnit + +class TurkceManga : Madara("Türkçe Manga", "https://turkcemanga.com", "tr") { + override fun popularMangaRequest(page: Int): Request = GET("$baseUrl/page/$page/?s&post_type=wp-manga&m_orderby=views", headers) + override fun popularMangaSelector() = searchMangaSelector() + override fun popularMangaFromElement(element: Element): SManga = searchMangaFromElement(element) + override fun latestUpdatesRequest(page: Int): Request = GET("$baseUrl/page/$page/?s&post_type=wp-manga&m_orderby=latest", headers) + override fun latestUpdatesSelector() = searchMangaSelector() + override fun latestUpdatesFromElement(element: Element): SManga = searchMangaFromElement(element) +} diff --git a/multisrc/overrides/madara/uyuyanbalik/src/UyuyanBalik.kt b/multisrc/overrides/madara/uyuyanbalik/src/UyuyanBalik.kt new file mode 100644 index 000000000..c97685fdd --- /dev/null +++ b/multisrc/overrides/madara/uyuyanbalik/src/UyuyanBalik.kt @@ -0,0 +1,8 @@ +package eu.kanade.tachiyomi.extension.tr.uyuyanbalik + +import eu.kanade.tachiyomi.multisrc.madara.Madara +import java.text.SimpleDateFormat +import java.util.Locale + +class UyuyanBalik : Madara("Uyuyan Balik", "https://uyuyanbalik.com/", "tr", SimpleDateFormat("dd MMMM yyyy", Locale.US)) + diff --git a/multisrc/overrides/madara/voidscans/src/Voidscans.kt b/multisrc/overrides/madara/voidscans/src/Voidscans.kt new file mode 100644 index 000000000..e5e4ae330 --- /dev/null +++ b/multisrc/overrides/madara/voidscans/src/Voidscans.kt @@ -0,0 +1,9 @@ +package eu.kanade.tachiyomi.extension.en.voidscans + +import eu.kanade.tachiyomi.multisrc.madara.Madara +import eu.kanade.tachiyomi.network.GET +import eu.kanade.tachiyomi.source.model.FilterList + +class Voidscans : Madara("Void Scans", "https://voidscans.com", "en") { + override fun searchMangaRequest(page: Int, query: String, filters: FilterList) = GET("$baseUrl/?s=$query&post_type=wp-manga") +} diff --git a/multisrc/overrides/madara/warqueenscan/src/WarQueenScan.kt b/multisrc/overrides/madara/warqueenscan/src/WarQueenScan.kt new file mode 100644 index 000000000..e0981dbc9 --- /dev/null +++ b/multisrc/overrides/madara/warqueenscan/src/WarQueenScan.kt @@ -0,0 +1,8 @@ +package eu.kanade.tachiyomi.extension.pt.warqueenscan + +import eu.kanade.tachiyomi.multisrc.madara.Madara +import java.text.SimpleDateFormat +import java.util.Locale + +class WarQueenScan : Madara("War Queen Scan", "https://wqscan.com", "pt-BR", SimpleDateFormat("dd/MM/yyyy", Locale.US)) + diff --git a/multisrc/overrides/madara/webtoonxyz/src/WebtoonXYZ.kt b/multisrc/overrides/madara/webtoonxyz/src/WebtoonXYZ.kt new file mode 100644 index 000000000..5832fbe8a --- /dev/null +++ b/multisrc/overrides/madara/webtoonxyz/src/WebtoonXYZ.kt @@ -0,0 +1,11 @@ +package eu.kanade.tachiyomi.extension.en.webtoonxyz + +import eu.kanade.tachiyomi.multisrc.madara.Madara +import eu.kanade.tachiyomi.network.GET +import okhttp3.Request + +class WebtoonXYZ : Madara("WebtoonXYZ", "https://www.webtoon.xyz", "en") { + private fun pagePath(page: Int) = if (page > 1) "page/$page/" else "" + override fun popularMangaRequest(page: Int): Request = GET("$baseUrl/webtoons/${pagePath(page)}?m_orderby=views", headers) + override fun latestUpdatesRequest(page: Int): Request = GET("$baseUrl/webtoons/${pagePath(page)}?m_orderby=latest", headers) +} diff --git a/multisrc/overrides/madara/wescans/src/WeScans.kt b/multisrc/overrides/madara/wescans/src/WeScans.kt new file mode 100644 index 000000000..eafdfc340 --- /dev/null +++ b/multisrc/overrides/madara/wescans/src/WeScans.kt @@ -0,0 +1,15 @@ +package eu.kanade.tachiyomi.extension.en.wescans + +import eu.kanade.tachiyomi.multisrc.madara.Madara +import eu.kanade.tachiyomi.network.GET +import eu.kanade.tachiyomi.source.model.FilterList +import okhttp3.Request + +class WeScans : Madara("WeScans", "https://wescans.xyz", "en") { + override fun popularMangaRequest(page: Int): Request = GET("$baseUrl/manhua/manga/?m_orderby=views", headers) + override fun popularMangaNextPageSelector(): String? = null + override fun latestUpdatesRequest(page: Int): Request = GET("$baseUrl/manhua/manga/?m_orderby=latest", headers) + override fun searchMangaRequest(page: Int, query: String, filters: FilterList) = GET("$baseUrl/manhua/?s=$query&post_type=wp-manga") + override fun searchMangaNextPageSelector(): String? = null + override fun getFilterList(): FilterList = FilterList() +} diff --git a/multisrc/overrides/madara/worldromancetranslation/src/WorldRomanceTranslation.kt b/multisrc/overrides/madara/worldromancetranslation/src/WorldRomanceTranslation.kt new file mode 100644 index 000000000..fbf305a6e --- /dev/null +++ b/multisrc/overrides/madara/worldromancetranslation/src/WorldRomanceTranslation.kt @@ -0,0 +1,8 @@ +package eu.kanade.tachiyomi.extension.id.worldromancetranslation + +import eu.kanade.tachiyomi.multisrc.madara.Madara +import java.text.SimpleDateFormat +import java.util.Locale + +class WorldRomanceTranslation : Madara("World Romance Translation", "https://wrt.my.id/", "id", SimpleDateFormat("dd MMMM yyyy", Locale("id"))) + diff --git a/multisrc/overrides/madara/wuxiaworld/src/WuxiaWorld.kt b/multisrc/overrides/madara/wuxiaworld/src/WuxiaWorld.kt new file mode 100644 index 000000000..ce7c6996f --- /dev/null +++ b/multisrc/overrides/madara/wuxiaworld/src/WuxiaWorld.kt @@ -0,0 +1,13 @@ +package eu.kanade.tachiyomi.extension.en.wuxiaworld + +import eu.kanade.tachiyomi.multisrc.madara.Madara +import eu.kanade.tachiyomi.network.GET +import eu.kanade.tachiyomi.source.model.FilterList +import okhttp3.Request + +class WuxiaWorld : Madara("WuxiaWorld", "https://wuxiaworld.site", "en") { + override fun popularMangaRequest(page: Int): Request = GET("$baseUrl/tag/webcomic/page/$page/?m_orderby=views", headers) + override fun latestUpdatesRequest(page: Int): Request = GET("$baseUrl/tag/webcomic/page/$page/?m_orderby=latest", headers) + override fun searchMangaRequest(page: Int, query: String, filters: FilterList) = super.searchMangaRequest(page, "$query comics", filters) + override fun popularMangaNextPageSelector() = "div.nav-previous.float-left" +} diff --git a/multisrc/overrides/madara/yaoitoshokan/src/YaoiToshokan.kt b/multisrc/overrides/madara/yaoitoshokan/src/YaoiToshokan.kt new file mode 100644 index 000000000..28d745a5b --- /dev/null +++ b/multisrc/overrides/madara/yaoitoshokan/src/YaoiToshokan.kt @@ -0,0 +1,28 @@ +package eu.kanade.tachiyomi.extension.pt.yaoitoshokan + +import eu.kanade.tachiyomi.multisrc.madara.Madara +import eu.kanade.tachiyomi.source.model.Page +import eu.kanade.tachiyomi.source.model.SChapter +import okhttp3.Response +import org.jsoup.nodes.Document +import java.text.SimpleDateFormat +import java.util.Locale + +class YaoiToshokan : Madara("Yaoi Toshokan", "https://yaoitoshokan.com.br", "pt-BR", SimpleDateFormat("dd MMM yyyy", Locale("pt", "BR"))) { + // Page has custom link to scan website. + override val popularMangaUrlSelector = "div.post-title a:not([target])" + + // Chapters are listed old to new. + override fun chapterListParse(response: Response): List { + return super.chapterListParse(response).reversed() + } + + override fun pageListParse(document: Document): List { + return document.select(pageListParseSelector) + .mapIndexed { index, element -> + // Had to add trim because of white space in source. + val imageUrl = element.select("img").attr("data-src").trim() + Page(index, document.location(), imageUrl) + } + } +} diff --git a/multisrc/overrides/madara/yokaijump/src/YokaiJump.kt b/multisrc/overrides/madara/yokaijump/src/YokaiJump.kt new file mode 100644 index 000000000..c8349ed6e --- /dev/null +++ b/multisrc/overrides/madara/yokaijump/src/YokaiJump.kt @@ -0,0 +1,12 @@ +package eu.kanade.tachiyomi.extension.fr.yokaijump + +import eu.kanade.tachiyomi.multisrc.madara.Madara +import java.text.SimpleDateFormat +import java.util.Locale + +class YokaiJump : Madara( + "Yokai Jump", + "https://yokaijump.fr", + "fr", + dateFormat = SimpleDateFormat("dd/MM/yy", Locale.US) +) diff --git a/multisrc/overrides/madara/yuriverso/src/YuriVerso.kt b/multisrc/overrides/madara/yuriverso/src/YuriVerso.kt new file mode 100644 index 000000000..a2a67deb9 --- /dev/null +++ b/multisrc/overrides/madara/yuriverso/src/YuriVerso.kt @@ -0,0 +1,12 @@ +package eu.kanade.tachiyomi.extension.pt.yuriverso + +import eu.kanade.tachiyomi.multisrc.madara.Madara +import java.text.SimpleDateFormat +import java.util.Locale + +class YuriVerso : Madara( + "Yuri Verso", + "https://yuri.live", + "pt-BR", + SimpleDateFormat("dd/MM/yyyy", Locale("pt", "BR")) +) diff --git a/multisrc/overrides/madara/zinmanga/src/ZinManga.kt b/multisrc/overrides/madara/zinmanga/src/ZinManga.kt new file mode 100644 index 000000000..6c08e3c1d --- /dev/null +++ b/multisrc/overrides/madara/zinmanga/src/ZinManga.kt @@ -0,0 +1,9 @@ +package eu.kanade.tachiyomi.extension.en.zinmanga + +import eu.kanade.tachiyomi.multisrc.madara.Madara +import okhttp3.Headers + +class ZinManga : Madara("Zin Translator", "https://zinmanga.com", "en") { + override fun headersBuilder(): Headers.Builder = super.headersBuilder() + .add("Referer", "https://zinmanga.com/") +} diff --git a/multisrc/src/main/java/eu/kanade/tachiyomi/multisrc/madara/MadaraGenerator.kt b/multisrc/src/main/java/eu/kanade/tachiyomi/multisrc/madara/MadaraGenerator.kt index daee83c2a..d7649be3a 100644 --- a/multisrc/src/main/java/eu/kanade/tachiyomi/multisrc/madara/MadaraGenerator.kt +++ b/multisrc/src/main/java/eu/kanade/tachiyomi/multisrc/madara/MadaraGenerator.kt @@ -1,6 +1,7 @@ package eu.kanade.tachiyomi.multisrc.madara import eu.kanade.tachiyomi.multisrc.ThemeSourceData.SingleLang +import eu.kanade.tachiyomi.multisrc.ThemeSourceData.MultiLang import eu.kanade.tachiyomi.multisrc.ThemeSourceGenerator class MadaraGenerator : ThemeSourceGenerator { @@ -15,25 +16,25 @@ class MadaraGenerator : ThemeSourceGenerator { SingleLang("Adonis Fansub", "https://manga.adonisfansub.com", "tr"), SingleLang("AkuManga", "https://akumanga.com", "ar"), SingleLang("AlianzaMarcial", "https://alianzamarcial.xyz", "es"), - SingleLang("AllPornComic", "https://allporncomic.com", "en"), + SingleLang("AllPornComic", "https://allporncomic.com", "en", isNsfw = true), SingleLang("Aloalivn", "https://aloalivn.com", "en"), SingleLang("AniMangaEs", "http://animangaes.com", "en"), SingleLang("Agent of Change Translations", "https://aoc.moe", "en"), SingleLang("ApollComics", "https://apollcomics.xyz", "es"), - SingleLang("Arang Scans", "https://www.arangscans.com", "en"), + SingleLang("Arang Scans", "https://arangscans.com", "en", overrideVersionCode = 1), SingleLang("ArazNovel", "https://www.araznovel.com", "tr"), SingleLang("Argos Scan", "https://argosscan.com", "pt-BR"), SingleLang("Asgard Team", "https://www.asgard1team.com", "ar"), SingleLang("Astral Library", "https://www.astrallibrary.net", "en"), SingleLang("Atikrost", "https://atikrost.com", "tr"), - SingleLang("ATM-Subs", "https://atm-subs.fr", "fr", className = "ATMSubs", pkgName = "atmsubs"), + SingleLang("ATM-Subs", "https://atm-subs.fr", "fr", className = "ATMSubs"), SingleLang("Azora", "https://www.azoramanga.com", "ar"), SingleLang("Bakaman", "https://bakaman.net", "th"), SingleLang("BestManga", "https://bestmanga.club", "ru"), SingleLang("BestManhua", "https://bestmanhua.com", "en", overrideVersionCode = 1), SingleLang("BoysLove", "https://boyslove.me", "en"), SingleLang("CatOnHeadTranslations", "https://catonhead.com", "en"), - SingleLang("CAT-translator", "https://cat-translator.com", "th", className = "CatTranslator", pkgName = "cattranslator"), + SingleLang("CAT-translator", "https://cat-translator.com", "th", className = "CatTranslator"), SingleLang("Chibi Manga", "https://www.cmreader.info", "en"), SingleLang("Clover Manga", "Clover Manga", "tr"), SingleLang("ComicKiba", "https://comickiba.com", "en"), @@ -78,8 +79,151 @@ class MadaraGenerator : ThemeSourceGenerator { SingleLang("KlikManga", "https://klikmanga.com", "id"), SingleLang("Kissmanga.in", "https://kissmanga.in", "en", className= "KissmangaIn"), SingleLang("Kombatch", "https://kombatch.com", "id"), - + SingleLang("KomikGo", "https://komikgo.com", "id"), + SingleLang("Lily Manga", "https://lilymanga.com", "en"), + SingleLang("LovableSubs", "https://lovablesubs.com", "tr"), + SingleLang("Manga18 Fun", "https://manga18.fun", "en"), + SingleLang("Manga347", "https://manga347.com", "en"), + SingleLang("مانجا العاشق", "https://3asq.org", "ar", className = "Manga3asq"), + SingleLang("Manga3S", "https://manga3s.com", "en"), + SingleLang("Manga68", "https://manga68.com", "en"), + SingleLang("Manga Action", "https://manga-action.com", "ar"), + SingleLang("Manga Arab Online مانجا عرب اون لاين", "https://mangaarabonline.com", "ar", className = "MangaArabOnline"), + SingleLang("مانجا عرب تيم Manga Arab Team", "https://mangaarabteam.com", "ar", className = "MangaArabTeam"), + SingleLang("MangaBaz", "https://mangabaz.com", "tr"), + SingleLang("Manga Bin", "https://mangabin.com/", "en"), + SingleLang("MangaBob", "https://mangabob.com", "en"), + SingleLang("Manga Chill", "https://mangachill.com/", "en"), + SingleLang("Manga Clash", "https://mangaclash.com", "en"), + SingleLang("Manga Crimson", "https://mangacrimson.com", "tr"), + SingleLang("MangaCultivator", "https://mangacultivator.com", "en"), + SingleLang("MangaDods", "https://www.mangadods.com", "en"), + SingleLang("MangaEffect", "https://mangaeffect.com", "en"), + SingleLang("MangaGreat", "https://mangagreat.com", "en"), + SingleLang("Manga Hentai", "https://mangahentai.me", "en", isNsfw = true), + SingleLang("Manga Kiss", "https://mangakiss.org", "en"), + SingleLang("MangaKomi", "https://mangakomi.com", "en"), + SingleLang("Manga Land Arabic", "https://mangalandarabic.com", "ar"), + SingleLang("مانجا ليك", "https://mangalek.com", "ar", className = "Mangalek"), + SingleLang("Manga Lord", "https://mangalord.com", "en"), + SingleLang("Manganelo.link", "https://manganelo.link", "en", className = "ManganeloLink"), + SingleLang("Manga Nine", "https://manganine.com", "en"), + SingleLang("Manga-Online.co", "https://www.manga-online.co", "th", className = "MangaOnlineCo"), + SingleLang("Manga Diyari", "https://mangadiyari.com", "tr"), + SingleLang("MangaRave", "http://www.mangarave.com", "en"), + SingleLang("MangaRawr", "https://mangarawr.com", "en"), + SingleLang("Manga Read", "https://mangaread.co", "en"), + SingleLang("MangaRead.org", "https://www.mangaread.org", "en", className = "MangaReadOrg"), + SingleLang("Mangareceh", "https://mangareceh.id", "id"), + SingleLang("Manga Rock Team", "https://mangarockteam.com", "en"), + SingleLang("Manga Rocky", "https://mangarocky.com", "en"), + SingleLang("MangaRoma", "https://mangaroma.com", "en"), + SingleLang("Manga-Scantrad", "https://manga-scantrad.net", "fr", className = "MangaScantrad"), + SingleLang("MangaSco", "https://mangasco.com", "en"), + SingleLang("MangaSpark", "https://mangaspark.com", "ar"), + SingleLang("Manga Starz", "https://mangastarz.com", "ar"), + SingleLang("MangaStein", "https://mangastein.com", "tr"), + SingleLang("Mangasushi", "https://mangasushi.net", "en"), + SingleLang("Manga SY", "https://www.mangasy.com", "en"), + SingleLang("MangaTeca", "https://www.mangateca.com", "pt-BR"), + SingleLang("Manga Turf", "https://mangaturf.com", "en"), + SingleLang("MangaTX", "https://mangatx.com", "en"), + SingleLang("Manga Weebs", "https://mangaweebs.in", "en"), + SingleLang("MangaWT", "https://mangawt.com", "tr"), + SingleLang("MangaYaku", "https://mangayaku.my.id", "id"), + SingleLang("MangaYosh", "https://mangayosh.xyz", "id"), + MultiLang("Mangazuki.club", "https://mangazuki.club", listOf("ja", "ko"), + className = "MangazukiClubFactory"), + SingleLang("Mangazuki.me", "https://mangazuki.me", "en", className = "MangazukiMe"), SingleLang("Mangazuki.online", "http://mangazukinew.online", "en", className = "MangazukiOnline"), + SingleLang("ManhuaBox", "https://manhuabox.net", "en"), + SingleLang("ManhuaFast", "https://manhuafast.com", "en"), + SingleLang("Manhuaga", "https://manhuaga.com", "en"), + SingleLang("Manhua Plus", "https://manhuaplus.com", "en"), + SingleLang("Manhuas.net", "https://manhuas.net", "en", className = "Manhuasnet"), + SingleLang("Manhuas World", "https://manhuasworld.com", "en"), + SingleLang("Manhua SY", "https://www.manhuasy.com", "en"), + SingleLang("ManhuaUS", "https://manhuaus.com", "en"), + SingleLang("Manhwa Raw", "https://manhwaraw.com", "ko"), + SingleLang("Manhwatop", "https://manhwatop.com", "en"), + SingleLang("Manwahentai.me", "https://manhwahentai.me", "en", className = "ManwahentaiMe", isNsfw = true), + SingleLang("Manwha Club", "https://manhwa.club", "en"), + SingleLang("ManyToon", "https://manytoon.com", "en"), + SingleLang("ManyToonClub", "https://manytoon.club", "ko"), + SingleLang("ManyToon.me", "https://manytoon.me", "en", className = "ManyToonMe"), + SingleLang("Mark Scans", "https://markscans.online", "pt-BR"), + SingleLang("Martial Scans", "https://martialscans.com", "en"), + SingleLang("MG Komik", "https://mgkomik.my.id", "id"), + SingleLang("Milftoon", "https://milftoon.xxx", "en", isNsfw = true), + SingleLang("Miracle Scans", "https://miraclescans.com", "en"), + SingleLang("Mixed Manga", "https://mixedmanga.com", "en"), + SingleLang("MMScans", "https://mm-scans.com/", "en"), + SingleLang("Mundo Wuxia", "https://mundowuxia.com", "es"), + SingleLang("Mystical Merries", "https://mysticalmerries.com", "en"), + SingleLang("Nazarick Scans", "https://nazarickscans.com", "en"), + SingleLang("NeatManga", "https://neatmanga.com", "en"), + SingleLang("NekoBreaker", "https://nekobreaker.com", "pt-BR"), + SingleLang("NekoScan", "https://nekoscan.com", "en"), + SingleLang("Neox Scanlator", "https://neoxscans.com", "pt-BR"), + SingleLang("Night Comic", "https://www.nightcomic.com", "en"), + SingleLang("Niji Translations", "https://niji-translations.com", "ar"), + SingleLang("Ninjavi", "https://ninjavi.com", "ar"), + SingleLang("NTS Void Scans", "https://ntsvoidscans.com", "en"), + SingleLang("Off Scan", "https://offscan.top", "pt-BR"), + SingleLang("مانجا اولاو", "https://olaoe.giize.com", "ar", className = "OlaoeManga"), + SingleLang("OnManga", "https://onmanga.com", "en"), + SingleLang("Origami Orpheans", "https://origami-orpheans.com.br", "pt-BR"), + SingleLang("PMScans", "https://www.pmscans.com", "en"), + SingleLang("Pojok Manga", "https://pojokmanga.com", "id"), + SingleLang("PornComix", "https://www.porncomixonline.net", "en", isNsfw = true), + SingleLang("Prime Manga", "https://primemanga.com", "en"), + SingleLang("Projeto Scanlator", "https://projetoscanlator.com", "pt-BR"), + SingleLang("QueensManga ملكات المانجا", "https://queensmanga.com", "ar", className = "QueensManga"), + SingleLang("Raider Scans", "https://raiderscans.com", "en"), + SingleLang("Random Translations", "https://randomtranslations.com", "en"), + SingleLang("Raw Mangas", "https://rawmangas.net", "ja", isNsfw = true), + SingleLang("ReadManhua", "https://readmanhua.net", "en"), + SingleLang("Renascence Scans (Renascans)", "https://new.renascans.com", "en", className = "RenaScans"), + SingleLang("Rüya Manga", "https://www.ruyamanga.com", "tr", className = "RuyaManga"), + SingleLang("S2Manga", "https://s2manga.com", "en"), + SingleLang("Sekte Doujin", "https://sektedoujin.xyz", "id", isNsfw = true), + SingleLang("ShoujoHearts", "http://shoujohearts.com", "en"), + SingleLang("SiXiang Scans", "http://www.sixiangscans.com", "en"), + SingleLang("Siyahmelek", "https://siyahmelek.com", "tr", isNsfw = true), + SingleLang("Skymanga", "https://skymanga.co", "en"), + SingleLang("SoloScanlation", "https://soloscanlation.site", "en"), + SingleLang("Spooky Scanlations", "https://spookyscanlations.xyz", "es"), + SingleLang("StageComics", "https://stagecomics.com", "pt-BR"), + SingleLang("TheTopComic", "https://thetopcomic.com", "en"), + SingleLang("365Manga", "https://365manga.com", "en", className = "ThreeSixtyFiveManga"), + SingleLang("ToonGod", "https://www.toongod.com", "en"), + SingleLang("Toonily", "https://toonily.com", "en", isNsfw = true), + SingleLang("Toonily.net", "https://toonily.net", "en", isNsfw = true, className = "ToonilyNet"), + SingleLang("ToonPoint", "https://toonpoint.com", "en"), + SingleLang("Top Manhua", "https://topmanhua.com", "en"), + SingleLang("TritiniaScans", "https://tritinia.com", "en"), + SingleLang("TruyenTranhAudio.com", "https://truyentranhaudio.com", "vi", className = "TruyenTranhAudioCom"), + SingleLang("TruyenTranhAudio.online", "https://truyentranhaudio.online", "vi", className = "TruyenTranhAudioOnline"), + SingleLang("Tsubaki No Scan", "https://tsubakinoscan.com", "fr"), + SingleLang("Türkçe Manga", "https://turkcemanga.com", "tr", className = "TurkceManga"), + SingleLang("Twilight Scans", "https://twilightscans.com", "en"), + SingleLang("Uyuyan Balik", "https://uyuyanbalik.com/", "tr"), + SingleLang("Vanguard Bun", "https://vanguardbun.com/", "en"), + SingleLang("Void Scans", "https://voidscans.com", "en"), + SingleLang("Wakascan", "https://wakascan.com", "fr"), + SingleLang("War Queen Scan", "https://wqscan.com", "pt-BR"), + SingleLang("WebNovel", "https://webnovel.live", "en"), + SingleLang("WebToonily", "https://webtoonily.com", "en"), + SingleLang("WebtoonXYZ", "https://www.webtoon.xyz", "en"), + SingleLang("WeScans", "https://wescans.xyz", "en"), + SingleLang("WoopRead", "https://woopread.com", "en"), + SingleLang("World Romance Translation", "https://wrt.my.id/", "id"), + SingleLang("WuxiaWorld", "https://wuxiaworld.site", "en"), + SingleLang("Yaoi Toshokan", "https://yaoitoshokan.com.br", "pt-BR", isNsfw = true), + SingleLang("Yokai Jump", "https://yokaijump.fr", "fr"), + SingleLang("Yuri Verso", "https://yuri.live", "pt-BR"), + SingleLang("Zin Translator", "https://zinmanga.com", "en"), + SingleLang("ZManga", "https://zmanga.org", "es"), ) companion object { diff --git a/src/all/madara/AndroidManifest.xml b/src/all/madara/AndroidManifest.xml deleted file mode 100644 index 30deb7f79..000000000 --- a/src/all/madara/AndroidManifest.xml +++ /dev/null @@ -1,2 +0,0 @@ - - diff --git a/src/all/madara/build.gradle b/src/all/madara/build.gradle deleted file mode 100644 index 9b0873e1a..000000000 --- a/src/all/madara/build.gradle +++ /dev/null @@ -1,13 +0,0 @@ -apply plugin: 'com.android.application' -apply plugin: 'kotlin-android' - -ext { - extName = 'Madara (multiple sources)' - pkgNameSuffix = "all.madara" - extClass = '.MadaraFactory' - extVersionCode = 180 - libVersion = '1.2' - containsNsfw = true -} - -apply from: "$rootDir/common.gradle" diff --git a/src/all/madara/res/mipmap-hdpi/ic_launcher.png b/src/all/madara/res/mipmap-hdpi/ic_launcher.png deleted file mode 100644 index bc8eef503983d78cfcf77423bb98cd56b01189af..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3110 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 X7ys9Md`fPe00000NkvXXu0mjf%wRIy diff --git a/src/all/madara/res/mipmap-xhdpi/ic_launcher.png b/src/all/madara/res/mipmap-xhdpi/ic_launcher.png deleted file mode 100644 index b011eaf9b9437f8c510e9aaa5a8f55c9ac5fa546..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4286 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 Hu0mjf{k>3T diff --git a/src/all/madara/res/mipmap-xxxhdpi/ic_launcher.png b/src/all/madara/res/mipmap-xxxhdpi/ic_launcher.png deleted file mode 100644 index c2706aa3f2cb5e52d31f74315873dd4aedfe38d2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 13510 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 M<OV diff --git a/src/all/madara/res/web_hi_res_512.png b/src/all/madara/res/web_hi_res_512.png deleted file mode 100644 index a62cfe72f7519d4a6d40c6eedf027f8a254c4fe6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 75253 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 diff --git a/src/all/madara/src/eu/kanade/tachiyomi/extension/all/madara/Madara.kt b/src/all/madara/src/eu/kanade/tachiyomi/extension/all/madara/Madara.kt deleted file mode 100644 index a69602267..000000000 --- a/src/all/madara/src/eu/kanade/tachiyomi/extension/all/madara/Madara.kt +++ /dev/null @@ -1,525 +0,0 @@ -package eu.kanade.tachiyomi.extension.all.madara - -import eu.kanade.tachiyomi.network.GET -import eu.kanade.tachiyomi.network.POST -import eu.kanade.tachiyomi.network.asObservable -import eu.kanade.tachiyomi.source.model.Filter -import eu.kanade.tachiyomi.source.model.FilterList -import eu.kanade.tachiyomi.source.model.MangasPage -import eu.kanade.tachiyomi.source.model.Page -import eu.kanade.tachiyomi.source.model.SChapter -import eu.kanade.tachiyomi.source.model.SManga -import eu.kanade.tachiyomi.source.online.ParsedHttpSource -import eu.kanade.tachiyomi.util.asJsoup -import okhttp3.CacheControl -import okhttp3.FormBody -import okhttp3.Headers -import okhttp3.HttpUrl -import okhttp3.OkHttpClient -import okhttp3.Request -import okhttp3.RequestBody -import okhttp3.Response -import org.jsoup.nodes.Document -import org.jsoup.nodes.Element -import rx.Observable -import java.text.ParseException -import java.text.SimpleDateFormat -import java.util.Calendar -import java.util.Locale -import java.util.concurrent.TimeUnit -import kotlin.math.absoluteValue -import kotlin.random.Random - -abstract class Madara( - override val name: String, - override val baseUrl: String, - override val lang: String, - private val dateFormat: SimpleDateFormat = SimpleDateFormat("MMMM dd, yyyy", Locale.US) -) : ParsedHttpSource() { - - override val supportsLatest = true - - override val client: OkHttpClient = network.cloudflareClient.newBuilder() - .connectTimeout(10, TimeUnit.SECONDS) - .readTimeout(30, TimeUnit.SECONDS) - .build() - - // helps with cloudflare for some sources, makes it worse for others; override with empty string if the latter is true - protected open val userAgentRandomizer = " ${Random.nextInt().absoluteValue}" - - override fun headersBuilder(): Headers.Builder = Headers.Builder() - .add("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:77.0) Gecko/20100101 Firefox/78.0$userAgentRandomizer") - - // Popular Manga - - override fun popularMangaSelector() = "div.page-item-detail" - - open val popularMangaUrlSelector = "div.post-title a" - - override fun popularMangaFromElement(element: Element): SManga { - val manga = SManga.create() - - with(element) { - select(popularMangaUrlSelector).first()?.let { - manga.setUrlWithoutDomain(it.attr("abs:href")) - manga.title = it.ownText() - } - - select("img").first()?.let { - manga.thumbnail_url = imageFromElement(it) - } - } - - return manga - } - - open fun formBuilder(page: Int, popular: Boolean) = FormBody.Builder().apply { - add("action", "madara_load_more") - add("page", (page - 1).toString()) - add("template", "madara-core/content/content-archive") - add("vars[orderby]", "meta_value_num") - add("vars[paged]", "1") - add("vars[posts_per_page]", "20") - add("vars[post_type]", "wp-manga") - add("vars[post_status]", "publish") - add("vars[meta_key]", if (popular) "_wp_manga_views" else "_latest_update") - add("vars[order]", "desc") - add("vars[sidebar]", if (popular) "full" else "right") - add("vars[manga_archives_item_layout]", "big_thumbnail") - } - - open val formHeaders: Headers by lazy { headersBuilder().build() } - - override fun popularMangaRequest(page: Int): Request { - return POST("$baseUrl/wp-admin/admin-ajax.php", formHeaders, formBuilder(page, true).build(), CacheControl.FORCE_NETWORK) - } - - override fun popularMangaNextPageSelector(): String? = "body:not(:has(.no-posts))" - - // Latest Updates - - override fun latestUpdatesSelector() = popularMangaSelector() - - override fun latestUpdatesFromElement(element: Element): SManga { - // Even if it's different from the popular manga's list, the relevant classes are the same - return popularMangaFromElement(element) - } - - override fun latestUpdatesRequest(page: Int): Request { - return POST("$baseUrl/wp-admin/admin-ajax.php", formHeaders, formBuilder(page, false).build(), CacheControl.FORCE_NETWORK) - } - - override fun latestUpdatesNextPageSelector(): String? = popularMangaNextPageSelector() - - override fun latestUpdatesParse(response: Response): MangasPage { - val mp = super.latestUpdatesParse(response) - val mangas = mp.mangas.distinctBy { it.url } - return MangasPage(mangas, mp.hasNextPage) - } - - override fun fetchSearchManga(page: Int, query: String, filters: FilterList): Observable { - return client.newCall(searchMangaRequest(page, query, filters)) - .asObservable().doOnNext { response -> - if (!response.isSuccessful) { - response.close() - // Error message for exceeding last page - if (response.code() == 404) - error("Already on the Last Page!") - else throw Exception("HTTP error ${response.code()}") - } - } - .map { response -> - searchMangaParse(response) - } - } - - // Search Manga - - protected open fun searchPage(page: Int): String = "page/$page/" - - override fun searchMangaRequest(page: Int, query: String, filters: FilterList): Request { - val url = HttpUrl.parse("$baseUrl/${searchPage(page)}")!!.newBuilder() - url.addQueryParameter("s", query) - url.addQueryParameter("post_type", "wp-manga") - filters.forEach { filter -> - when (filter) { - is AuthorFilter -> { - if (filter.state.isNotBlank()) { - url.addQueryParameter("author", filter.state) - } - } - is ArtistFilter -> { - if (filter.state.isNotBlank()) { - url.addQueryParameter("artist", filter.state) - } - } - is YearFilter -> { - if (filter.state.isNotBlank()) { - url.addQueryParameter("release", filter.state) - } - } - is StatusFilter -> { - filter.state.forEach { - if (it.state) { - url.addQueryParameter("status[]", it.id) - } - } - } - is OrderByFilter -> { - if (filter.state != 0) { - url.addQueryParameter("m_orderby", filter.toUriPart()) - } - } - is GenreConditionFilter -> { - url.addQueryParameter("op", filter.toUriPart()) - } - is GenreList -> { - filter.state - .filter { it.state } - .let { list -> - if (list.isNotEmpty()) { list.forEach { genre -> url.addQueryParameter("genre[]", genre.id) } } - } - } - } - } - return GET(url.toString(), headers) - } - - private class AuthorFilter : Filter.Text("Author") - private class ArtistFilter : Filter.Text("Artist") - private class YearFilter : Filter.Text("Year of Released") - private class StatusFilter(status: List) : Filter.Group("Status", status) - private class OrderByFilter : UriPartFilter( - "Order By", - arrayOf( - Pair("