remove page stuff and fix some 4anime bugs
This commit is contained in:
@ -1,7 +1,7 @@
|
|||||||
// used both in common.gradle and themesources library
|
// used both in common.gradle and themesources library
|
||||||
dependencies {
|
dependencies {
|
||||||
// Lib 1.3, but using specific commit so we don't need to bump up the version
|
// Lib 1.3, but using specific commit so we don't need to bump up the version
|
||||||
compileOnly "com.github.jmir1:extensions-lib:7d796e4"
|
compileOnly "com.github.jmir1:extensions-lib:ad509d7"
|
||||||
|
|
||||||
// These are provided by the app itself
|
// These are provided by the app itself
|
||||||
compileOnly "org.jetbrains.kotlin:kotlin-stdlib-jdk8:$kotlin_version"
|
compileOnly "org.jetbrains.kotlin:kotlin-stdlib-jdk8:$kotlin_version"
|
||||||
|
@ -2,7 +2,6 @@ package eu.kanade.tachiyomi.animeextension.en.fouranime
|
|||||||
|
|
||||||
import eu.kanade.tachiyomi.network.GET
|
import eu.kanade.tachiyomi.network.GET
|
||||||
import eu.kanade.tachiyomi.source.model.FilterList
|
import eu.kanade.tachiyomi.source.model.FilterList
|
||||||
import eu.kanade.tachiyomi.source.model.Page
|
|
||||||
import eu.kanade.tachiyomi.source.model.SAnime
|
import eu.kanade.tachiyomi.source.model.SAnime
|
||||||
import eu.kanade.tachiyomi.source.model.SEpisode
|
import eu.kanade.tachiyomi.source.model.SEpisode
|
||||||
import eu.kanade.tachiyomi.source.online.ParsedAnimeHttpSource
|
import eu.kanade.tachiyomi.source.online.ParsedAnimeHttpSource
|
||||||
@ -28,7 +27,7 @@ class FourAnime : ParsedAnimeHttpSource() {
|
|||||||
val anime = SAnime.create()
|
val anime = SAnime.create()
|
||||||
anime.setUrlWithoutDomain(element.select("#headerA_5").first().attr("href"))
|
anime.setUrlWithoutDomain(element.select("#headerA_5").first().attr("href"))
|
||||||
anime.thumbnail_url = element.select("#headerIMG_6").first().attr("src")
|
anime.thumbnail_url = element.select("#headerIMG_6").first().attr("src")
|
||||||
anime.title = "Episode " + element.select("#headerIMG_6").first().attr("title")
|
anime.title = element.select("#headerIMG_6").first().attr("title")
|
||||||
return anime
|
return anime
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -40,7 +39,7 @@ class FourAnime : ParsedAnimeHttpSource() {
|
|||||||
val episode = SEpisode.create()
|
val episode = SEpisode.create()
|
||||||
episode.setUrlWithoutDomain(element.attr("href"))
|
episode.setUrlWithoutDomain(element.attr("href"))
|
||||||
episode.episode_number = element.text().toFloat()
|
episode.episode_number = element.text().toFloat()
|
||||||
episode.name = element.text()
|
episode.name = "Episode " + element.text()
|
||||||
return episode
|
return episode
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -50,12 +49,6 @@ class FourAnime : ParsedAnimeHttpSource() {
|
|||||||
return element.attr("src")
|
return element.attr("src")
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun pageListParse(document: Document): List<Page> = throw Exception("Not used")
|
|
||||||
|
|
||||||
override fun imageUrlRequest(page: Page) = throw Exception("Not used")
|
|
||||||
|
|
||||||
override fun imageUrlParse(document: Document) = throw Exception("Not used")
|
|
||||||
|
|
||||||
override fun searchAnimeFromElement(element: Element): SAnime {
|
override fun searchAnimeFromElement(element: Element): SAnime {
|
||||||
val anime = SAnime.create()
|
val anime = SAnime.create()
|
||||||
anime.setUrlWithoutDomain(element.select("a").attr("href"))
|
anime.setUrlWithoutDomain(element.select("a").attr("href"))
|
||||||
@ -64,7 +57,7 @@ class FourAnime : ParsedAnimeHttpSource() {
|
|||||||
return anime
|
return anime
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun searchAnimeNextPageSelector(): String? = "a.nextpostslink"
|
override fun searchAnimeNextPageSelector(): String = "a.nextpostslink"
|
||||||
|
|
||||||
override fun searchAnimeSelector(): String = "#headerDIV_95"
|
override fun searchAnimeSelector(): String = "#headerDIV_95"
|
||||||
|
|
||||||
@ -73,16 +66,16 @@ class FourAnime : ParsedAnimeHttpSource() {
|
|||||||
override fun animeDetailsParse(document: Document): SAnime {
|
override fun animeDetailsParse(document: Document): SAnime {
|
||||||
val anime = SAnime.create()
|
val anime = SAnime.create()
|
||||||
anime.title = document.select("p.single-anime-desktop").text()
|
anime.title = document.select("p.single-anime-desktop").text()
|
||||||
anime.genre = document.select("div.tag").text().replace(" ", ", ")
|
anime.genre = document.select("div.tag a").joinToString(", ") { it.text() }
|
||||||
anime.description = document.select("div#description-mob p").not("p.description-mobile").text()
|
anime.description = document.select("div#description-mob div#fullcontent p").text()
|
||||||
return anime
|
return anime
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun latestUpdatesNextPageSelector(): String? = "a.nextpostslink"
|
override fun latestUpdatesNextPageSelector(): String = "a.nextpostslink"
|
||||||
|
|
||||||
override fun latestUpdatesFromElement(element: Element): SAnime {
|
override fun latestUpdatesFromElement(element: Element): SAnime {
|
||||||
val anime = SAnime.create()
|
val anime = SAnime.create()
|
||||||
anime.setUrlWithoutDomain(element.select("#headerA_5").first().attr("href").split("-episode-").first())
|
anime.setUrlWithoutDomain("https://4anime.to/anime" + element.select("#headerA_5").first().attr("href").removePrefix("https://4anime.to").split("-episode-").first())
|
||||||
anime.thumbnail_url = element.select("#headerIMG_6").first().attr("src")
|
anime.thumbnail_url = element.select("#headerIMG_6").first().attr("src")
|
||||||
anime.title = element.select("#headerA_5").first().attr("alt")
|
anime.title = element.select("#headerA_5").first().attr("alt")
|
||||||
return anime
|
return anime
|
||||||
|
@ -3,7 +3,6 @@ package eu.kanade.tachiyomi.animeextension.en.twodgirlstech
|
|||||||
import eu.kanade.tachiyomi.network.GET
|
import eu.kanade.tachiyomi.network.GET
|
||||||
import eu.kanade.tachiyomi.source.model.AnimesPage
|
import eu.kanade.tachiyomi.source.model.AnimesPage
|
||||||
import eu.kanade.tachiyomi.source.model.FilterList
|
import eu.kanade.tachiyomi.source.model.FilterList
|
||||||
import eu.kanade.tachiyomi.source.model.Page
|
|
||||||
import eu.kanade.tachiyomi.source.model.SAnime
|
import eu.kanade.tachiyomi.source.model.SAnime
|
||||||
import eu.kanade.tachiyomi.source.model.SEpisode
|
import eu.kanade.tachiyomi.source.model.SEpisode
|
||||||
import eu.kanade.tachiyomi.source.online.ParsedAnimeHttpSource
|
import eu.kanade.tachiyomi.source.online.ParsedAnimeHttpSource
|
||||||
@ -161,63 +160,6 @@ class TwoDGirlsTech : ParsedAnimeHttpSource() {
|
|||||||
return url
|
return url
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun pageListParse(document: Document): List<Page> {
|
|
||||||
val titleWords: Sequence<String>
|
|
||||||
val altTextWords: Sequence<String>
|
|
||||||
val interactiveText = listOf(
|
|
||||||
"To experience the", "interactive version of this comic,",
|
|
||||||
"open it in WebView/browser."
|
|
||||||
)
|
|
||||||
.joinToString(separator = "%0A")
|
|
||||||
.replace(" ", "%20")
|
|
||||||
|
|
||||||
// transforming filename from info.0.json isn't guaranteed to work, stick to html
|
|
||||||
// if an HD image is available it'll be the srcset attribute
|
|
||||||
// if img tag is empty then it is an interactive comic viewable only in browser
|
|
||||||
val image = document.select("div#comic img").let {
|
|
||||||
when {
|
|
||||||
it == null || it.isEmpty() -> baseAltTextUrl + interactiveText + baseAltTextPostUrl
|
|
||||||
it.hasAttr("srcset") -> it.attr("abs:srcset").substringBefore(" ")
|
|
||||||
else -> it.attr("abs:src")
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// create a text image for the alt text
|
|
||||||
document.select("div#comic img").let {
|
|
||||||
titleWords = it.attr("alt").splitToSequence(" ")
|
|
||||||
altTextWords = it.attr("title").splitToSequence(" ")
|
|
||||||
}
|
|
||||||
|
|
||||||
val builder = StringBuilder()
|
|
||||||
var count = 0
|
|
||||||
|
|
||||||
for (i in titleWords) {
|
|
||||||
if (count != 0 && count.rem(7) == 0) {
|
|
||||||
builder.append("%0A")
|
|
||||||
}
|
|
||||||
builder.append(i).append("+")
|
|
||||||
count++
|
|
||||||
}
|
|
||||||
builder.append("%0A%0A")
|
|
||||||
|
|
||||||
var charCount = 0
|
|
||||||
|
|
||||||
for (i in altTextWords) {
|
|
||||||
if (charCount > 25) {
|
|
||||||
builder.append("%0A")
|
|
||||||
charCount = 0
|
|
||||||
}
|
|
||||||
builder.append(i).append("+")
|
|
||||||
charCount += i.length + 1
|
|
||||||
}
|
|
||||||
|
|
||||||
return listOf(Page(0, "", image), Page(1, "", baseAltTextUrl + builder.toString() + baseAltTextPostUrl))
|
|
||||||
}
|
|
||||||
|
|
||||||
override fun imageUrlRequest(page: Page) = GET(page.url)
|
|
||||||
|
|
||||||
override fun imageUrlParse(document: Document) = throw Exception("Not used")
|
|
||||||
|
|
||||||
override fun popularAnimeSelector(): String = throw Exception("Not used")
|
override fun popularAnimeSelector(): String = throw Exception("Not used")
|
||||||
|
|
||||||
override fun searchAnimeFromElement(element: Element): SAnime = throw Exception("Not used")
|
override fun searchAnimeFromElement(element: Element): SAnime = throw Exception("Not used")
|
||||||
|
Reference in New Issue
Block a user