Update sites for FMReader, Foolslide, and Genkan (#3230)

This commit is contained in:
TacoTheDank 2020-05-20 00:50:40 -04:00 committed by GitHub
parent d121387761
commit 10d51de70a
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
7 changed files with 15 additions and 61 deletions

View File

@ -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'
} }

View File

@ -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()

View File

@ -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'
} }

View File

@ -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

View File

@ -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")

View File

@ -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'
} }

View File

@ -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()) {