Update sites for FMReader, Foolslide, and Genkan (#3230)
This commit is contained in:
parent
d121387761
commit
10d51de70a
|
@ -5,7 +5,7 @@ ext {
|
||||||
appName = 'Tachiyomi: FMReader (multiple aggregators)'
|
appName = 'Tachiyomi: FMReader (multiple aggregators)'
|
||||||
pkgNameSuffix = 'all.fmreader'
|
pkgNameSuffix = 'all.fmreader'
|
||||||
extClass = '.FMReaderFactory'
|
extClass = '.FMReaderFactory'
|
||||||
extVersionCode = 13
|
extVersionCode = 14
|
||||||
libVersion = '1.2'
|
libVersion = '1.2'
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -24,11 +24,8 @@ import rx.Observable
|
||||||
class FMReaderFactory : SourceFactory {
|
class FMReaderFactory : SourceFactory {
|
||||||
override fun createSources(): List<Source> = listOf(
|
override fun createSources(): List<Source> = listOf(
|
||||||
LHTranslation(),
|
LHTranslation(),
|
||||||
MangaHato(),
|
KissLove(),
|
||||||
ManhwaScan(),
|
|
||||||
MangaTiki(),
|
|
||||||
MangaBone(),
|
MangaBone(),
|
||||||
YoloManga(),
|
|
||||||
ReadComicOnlineOrg(),
|
ReadComicOnlineOrg(),
|
||||||
HanaScan(),
|
HanaScan(),
|
||||||
RawLH(),
|
RawLH(),
|
||||||
|
@ -38,7 +35,6 @@ class FMReaderFactory : SourceFactory {
|
||||||
Comicastle(),
|
Comicastle(),
|
||||||
Manhwa18Net(),
|
Manhwa18Net(),
|
||||||
Manhwa18NetRaw(),
|
Manhwa18NetRaw(),
|
||||||
MangaBorn(),
|
|
||||||
SayTruyen(),
|
SayTruyen(),
|
||||||
EpikManga(),
|
EpikManga(),
|
||||||
ManhuaScan()
|
ManhuaScan()
|
||||||
|
@ -50,15 +46,8 @@ class FMReaderFactory : SourceFactory {
|
||||||
|
|
||||||
class LHTranslation : FMReader("LHTranslation", "https://lhtranslation.net", "en")
|
class LHTranslation : FMReader("LHTranslation", "https://lhtranslation.net", "en")
|
||||||
|
|
||||||
class MangaHato : FMReader("MangaHato", "https://mangahato.com", "ja")
|
class KissLove : FMReader("KissLove", "https://kisslove.net", "ja")
|
||||||
class ManhwaScan : FMReader("ManhwaScan", "https://manhwascan.com", "en") {
|
|
||||||
override fun getImgAttr(element: Element?): String? = element?.attr("abs:src")
|
|
||||||
}
|
|
||||||
class MangaTiki : FMReader("MangaTiki", "https://mangatiki.com", "ja")
|
|
||||||
class MangaBone : FMReader("MangaBone", "https://mangabone.com", "en")
|
class MangaBone : FMReader("MangaBone", "https://mangabone.com", "en")
|
||||||
class YoloManga : FMReader("Yolo Manga", "https://yolomanga.ca", "es") {
|
|
||||||
override fun chapterListSelector() = "div#tab-chapper ~ div#tab-chapper table tr"
|
|
||||||
}
|
|
||||||
|
|
||||||
class ReadComicOnlineOrg : FMReader("ReadComicOnline.org", "https://readcomiconline.org", "en") {
|
class ReadComicOnlineOrg : FMReader("ReadComicOnline.org", "https://readcomiconline.org", "en") {
|
||||||
override val client: OkHttpClient = network.cloudflareClient.newBuilder()
|
override val client: OkHttpClient = network.cloudflareClient.newBuilder()
|
||||||
|
@ -263,45 +252,6 @@ class Manhwa18NetRaw : FMReader("Manhwa18.net Raw", "https://manhwa18.net", "ko"
|
||||||
override fun getFilterList() = FilterList(super.getFilterList().filterNot { it == GenreList(getGenreList()) })
|
override fun getFilterList() = FilterList(super.getFilterList().filterNot { it == GenreList(getGenreList()) })
|
||||||
}
|
}
|
||||||
|
|
||||||
class MangaBorn : FMReader("MangaBorn", "https://hellxlight.com", "en") {
|
|
||||||
override val requestPath = "manga_list"
|
|
||||||
override val popularSort = "type=topview"
|
|
||||||
override fun popularMangaNextPageSelector() = "div.page-number a.select + a:not(.go-p-end)"
|
|
||||||
override fun popularMangaSelector() = "div.story-item"
|
|
||||||
override fun searchMangaRequest(page: Int, query: String, filters: FilterList): Request {
|
|
||||||
return GET("$baseUrl/search/${query.replace(" ", "_")}?page=$page", headers)
|
|
||||||
}
|
|
||||||
override fun searchMangaParse(response: Response): MangasPage {
|
|
||||||
return response.asJsoup().let { document ->
|
|
||||||
val mangas = document.select(searchMangaSelector()).map { searchMangaFromElement(it) }
|
|
||||||
MangasPage(mangas, document.select(searchMangaNextPageSelector()).isNotEmpty())
|
|
||||||
}
|
|
||||||
}
|
|
||||||
override fun searchMangaFromElement(element: Element): SManga {
|
|
||||||
return SManga.create().apply {
|
|
||||||
element.select("h2 a").let {
|
|
||||||
setUrlWithoutDomain(it.attr("href"))
|
|
||||||
title = it.text()
|
|
||||||
}
|
|
||||||
thumbnail_url = element.select("img").attr("abs:src")
|
|
||||||
}
|
|
||||||
}
|
|
||||||
override fun mangaDetailsParse(document: Document): SManga {
|
|
||||||
return SManga.create().apply {
|
|
||||||
document.select("div.story_content").let { info ->
|
|
||||||
author = info.select("span:contains(Author) + a").text()
|
|
||||||
genre = info.select("span:contains(Genres) + a").joinToString { it.text() }
|
|
||||||
status = parseStatus(info.select("span:contains(Status) + a").text())
|
|
||||||
thumbnail_url = info.select("img.avatar").attr("abs:src")
|
|
||||||
description = info.select("div#story_discription > p").text()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
override fun chapterListSelector() = "div.chapter_list li"
|
|
||||||
override val pageListImageSelector = "div.panel-read-story img"
|
|
||||||
override fun getFilterList() = FilterList()
|
|
||||||
}
|
|
||||||
|
|
||||||
class SayTruyen : FMReader("Say Truyen", "https://saytruyen.com", "vi") {
|
class SayTruyen : FMReader("Say Truyen", "https://saytruyen.com", "vi") {
|
||||||
override fun mangaDetailsParse(document: Document): SManga {
|
override fun mangaDetailsParse(document: Document): SManga {
|
||||||
val info = document.select("div.row").first()
|
val info = document.select("div.row").first()
|
||||||
|
|
|
@ -5,7 +5,7 @@ ext {
|
||||||
appName = 'Tachiyomi: FoolSlide (multiple sources)'
|
appName = 'Tachiyomi: FoolSlide (multiple sources)'
|
||||||
pkgNameSuffix = 'all.foolslide'
|
pkgNameSuffix = 'all.foolslide'
|
||||||
extClass = '.FoolSlideFactory'
|
extClass = '.FoolSlideFactory'
|
||||||
extVersionCode = 47
|
extVersionCode = 48
|
||||||
libVersion = '1.2'
|
libVersion = '1.2'
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -107,7 +107,7 @@ class Mangatellers : FoolSlide("Mangatellers", "http://www.mangatellers.gr", "en
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
class IskultripScans : FoolSlide("Iskultrip Scans", "http://www.maryfaye.net", "en", "/reader")
|
class IskultripScans : FoolSlide("Iskultrip Scans", "https://maryfaye.net", "en", "/reader")
|
||||||
|
|
||||||
class AnataNoMotokare : FoolSlide("Anata no Motokare", "https://motokare.xyz", "en", "/reader")
|
class AnataNoMotokare : FoolSlide("Anata no Motokare", "https://motokare.xyz", "en", "/reader")
|
||||||
|
|
||||||
|
@ -117,7 +117,7 @@ class DokiFansubs : FoolSlide("Doki Fansubs", "https://kobato.hologfx.com", "en"
|
||||||
|
|
||||||
class YuriIsm : FoolSlide("Yuri-ism", "https://www.yuri-ism.net", "en", "/slide")
|
class YuriIsm : FoolSlide("Yuri-ism", "https://www.yuri-ism.net", "en", "/slide")
|
||||||
|
|
||||||
class AjiaNoScantrad : FoolSlide("Ajia no Scantrad", "https://ajianoscantrad.fr", "fr", "/reader")
|
class AjiaNoScantrad : FoolSlide("Ajia no Scantrad", "https://www.ajianoscantrad.fr", "fr", "/reader")
|
||||||
|
|
||||||
class OneTimeScans : FoolSlide("One Time Scans", "https://reader.otscans.com", "en")
|
class OneTimeScans : FoolSlide("One Time Scans", "https://reader.otscans.com", "en")
|
||||||
|
|
||||||
|
@ -129,7 +129,7 @@ class Lilyreader : FoolSlide("Lilyreader", "https://manga.smuglo.li", "en")
|
||||||
|
|
||||||
class Russification : FoolSlide("Русификация", "https://rusmanga.ru", "ru")
|
class Russification : FoolSlide("Русификация", "https://rusmanga.ru", "ru")
|
||||||
|
|
||||||
class EvilFlowers : FoolSlide("Evil Flowers", "http://reader.evilflowers.com", "en")
|
class EvilFlowers : FoolSlide("Evil Flowers", "https://reader.evilflowers.com", "en")
|
||||||
|
|
||||||
class LupiTeam : FoolSlide("LupiTeam", "https://lupiteam.net", "it", "/reader") {
|
class LupiTeam : FoolSlide("LupiTeam", "https://lupiteam.net", "it", "/reader") {
|
||||||
override fun mangaDetailsParse(document: Document): SManga {
|
override fun mangaDetailsParse(document: Document): SManga {
|
||||||
|
@ -156,11 +156,11 @@ class ZandynoFansub : FoolSlide("Zandy no Fansub", "https://zandynofansub.aishit
|
||||||
|
|
||||||
class HelveticaScans : FoolSlide("Helvetica Scans", "https://helveticascans.com", "en", "/r")
|
class HelveticaScans : FoolSlide("Helvetica Scans", "https://helveticascans.com", "en", "/r")
|
||||||
|
|
||||||
class KirishimaFansub : FoolSlide("Kirishima Fansub", "https://kirishimafansub.net", "es", "/lector")
|
class KirishimaFansub : FoolSlide("Kirishima Fansub", "https://www.kirishimafansub.net", "es", "/lector")
|
||||||
|
|
||||||
class PowerMangaIT : FoolSlide("PowerManga", "https://reader.powermanga.org", "it", "")
|
class PowerMangaIT : FoolSlide("PowerManga", "https://reader.powermanga.org", "it", "")
|
||||||
|
|
||||||
class BaixarHentai : FoolSlide("Baixar Hentai", "https://leitura.baixarhentai.net", "pt-BR") {
|
class BaixarHentai : FoolSlide("Baixar Hentai", "https://baixarhentai.net", "pt-BR", "/listona") {
|
||||||
// Hardcode the id because the language wasn't specific.
|
// Hardcode the id because the language wasn't specific.
|
||||||
override val id: Long = 8908032188831949972
|
override val id: Long = 8908032188831949972
|
||||||
|
|
||||||
|
|
|
@ -177,16 +177,20 @@ class HentaiCafe : FoolSlide("Hentai Cafe", "https://hentai.cafe", "en", "/manga
|
||||||
Tag("osananajimi", "Osananajimi"),
|
Tag("osananajimi", "Osananajimi"),
|
||||||
Tag("paizuri", "Paizuri"),
|
Tag("paizuri", "Paizuri"),
|
||||||
Tag("pettanko", "Pettanko"),
|
Tag("pettanko", "Pettanko"),
|
||||||
|
Tag("ponytail", "Ponytail"),
|
||||||
|
Tag("pubic-hair", "Pubic Hair"),
|
||||||
Tag("rape", "Rape"),
|
Tag("rape", "Rape"),
|
||||||
Tag("schoolgirl", "Schoolgirl"),
|
Tag("schoolgirl", "Schoolgirl"),
|
||||||
Tag("sex-toys", "Sex toys"),
|
Tag("sex-toys", "Sex toys"),
|
||||||
Tag("shota", "Shota"),
|
Tag("shota", "Shota"),
|
||||||
Tag("socks", "Socks"),
|
Tag("socks", "Socks"),
|
||||||
|
Tag("squirting", "Squirting"),
|
||||||
Tag("stocking", "Stocking"),
|
Tag("stocking", "Stocking"),
|
||||||
Tag("stockings", "Stockings"),
|
Tag("stockings", "Stockings"),
|
||||||
Tag("swimsuit", "Swimsuit"),
|
Tag("swimsuit", "Swimsuit"),
|
||||||
Tag("teacher", "Teacher"),
|
Tag("teacher", "Teacher"),
|
||||||
Tag("tsundere", "Tsundere"),
|
Tag("tsundere", "Tsundere"),
|
||||||
|
Tag("twintails", "Twintails"),
|
||||||
Tag("uncensored", "Uncensored"),
|
Tag("uncensored", "Uncensored"),
|
||||||
Tag("vanilla", "Vanilla"),
|
Tag("vanilla", "Vanilla"),
|
||||||
Tag("x-ray", "X-Ray")
|
Tag("x-ray", "X-Ray")
|
||||||
|
|
|
@ -5,7 +5,7 @@ ext {
|
||||||
appName = 'Tachiyomi: Genkan (multiple sources)'
|
appName = 'Tachiyomi: Genkan (multiple sources)'
|
||||||
pkgNameSuffix = 'all.genkan'
|
pkgNameSuffix = 'all.genkan'
|
||||||
extClass = '.GenkanFactory'
|
extClass = '.GenkanFactory'
|
||||||
extVersionCode = 19
|
extVersionCode = 20
|
||||||
libVersion = '1.2'
|
libVersion = '1.2'
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -203,7 +203,7 @@ abstract class GenkanOriginal(
|
||||||
|
|
||||||
/* call another function if there's more pages to search
|
/* call another function if there's more pages to search
|
||||||
not doing it this way can lead to a false "no results found"
|
not doing it this way can lead to a false "no results found"
|
||||||
if no matches are found on the first page but there are matcheszz
|
if no matches are found on the first page but there are matches
|
||||||
on subsequent pages */
|
on subsequent pages */
|
||||||
nextPageSelectorElement = document.select(searchMangaNextPageSelector())
|
nextPageSelectorElement = document.select(searchMangaNextPageSelector())
|
||||||
while (nextPageSelectorElement.hasText()) {
|
while (nextPageSelectorElement.hasText()) {
|
||||||
|
|
Loading…
Reference in New Issue