[SKIP CI] use lib version 12

This commit is contained in:
jmir1
2021-06-21 23:07:26 +02:00
parent 8de3e46d77
commit b57cf56492
9 changed files with 67 additions and 66 deletions

View File

@ -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:6467320" compileOnly "com.github.jmir1:extensions-lib:632a3e4"
// 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"

View File

@ -6,7 +6,7 @@ ext {
pkgNameSuffix = 'en.fouranime' pkgNameSuffix = 'en.fouranime'
extClass = '.FourAnime' extClass = '.FourAnime'
extVersionCode = 11 extVersionCode = 11
libVersion = '11' libVersion = '12'
} }
dependencies { dependencies {
ext.coroutinesVersion = "1.4.3" ext.coroutinesVersion = "1.4.3"

View File

@ -1,9 +1,9 @@
package eu.kanade.tachiyomi.animeextension.en.fouranime package eu.kanade.tachiyomi.animeextension.en.fouranime
import eu.kanade.tachiyomi.animesource.model.AnimeFilterList import eu.kanade.tachiyomi.animesource.model.AnimeFilterList
import eu.kanade.tachiyomi.animesource.model.Link
import eu.kanade.tachiyomi.animesource.model.SAnime import eu.kanade.tachiyomi.animesource.model.SAnime
import eu.kanade.tachiyomi.animesource.model.SEpisode import eu.kanade.tachiyomi.animesource.model.SEpisode
import eu.kanade.tachiyomi.animesource.model.Video
import eu.kanade.tachiyomi.animesource.online.ParsedAnimeHttpSource import eu.kanade.tachiyomi.animesource.online.ParsedAnimeHttpSource
import eu.kanade.tachiyomi.network.GET import eu.kanade.tachiyomi.network.GET
import okhttp3.Request import okhttp3.Request
@ -58,12 +58,21 @@ class FourAnime : ParsedAnimeHttpSource() {
text.replace("[^\\d]".toRegex(), "").toFloat() + firstLetterAsNumber text.replace("[^\\d]".toRegex(), "").toFloat() + firstLetterAsNumber
} }
} }
override fun episodeLinkSelector() = "source"
override fun linksFromElement(element: Element): List<Link> { override fun videoListSelector() = "source"
return mutableListOf(Link(element.attr("src"), "1080p"))
override fun videoFromElement(element: Element): Video {
return Video(element.attr("src"), "1080p", null, null)
} }
override fun fetchVideoUrl(video: Video): Observable<String> {
return Observable.just(video.url)
}
override fun videoUrlSelector() = throw Exception("not used")
override fun videoUrlFromElement(element: Element) = 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"))

View File

@ -6,7 +6,7 @@ ext {
pkgNameSuffix = 'en.gogoanime' pkgNameSuffix = 'en.gogoanime'
extClass = '.GogoAnime' extClass = '.GogoAnime'
extVersionCode = 2 extVersionCode = 2
libVersion = '11' libVersion = '12'
} }
dependencies { dependencies {
ext.coroutinesVersion = "1.4.3" ext.coroutinesVersion = "1.4.3"

View File

@ -1,12 +1,11 @@
package eu.kanade.tachiyomi.animeextension.en.gogoanime package eu.kanade.tachiyomi.animeextension.en.gogoanime
import eu.kanade.tachiyomi.animesource.model.AnimeFilterList import eu.kanade.tachiyomi.animesource.model.AnimeFilterList
import eu.kanade.tachiyomi.animesource.model.Link
import eu.kanade.tachiyomi.animesource.model.SAnime import eu.kanade.tachiyomi.animesource.model.SAnime
import eu.kanade.tachiyomi.animesource.model.SEpisode import eu.kanade.tachiyomi.animesource.model.SEpisode
import eu.kanade.tachiyomi.animesource.model.Video
import eu.kanade.tachiyomi.animesource.online.ParsedAnimeHttpSource import eu.kanade.tachiyomi.animesource.online.ParsedAnimeHttpSource
import eu.kanade.tachiyomi.network.GET import eu.kanade.tachiyomi.network.GET
import eu.kanade.tachiyomi.network.asObservableSuccess
import eu.kanade.tachiyomi.network.await import eu.kanade.tachiyomi.network.await
import eu.kanade.tachiyomi.util.asJsoup import eu.kanade.tachiyomi.util.asJsoup
import kotlinx.coroutines.runBlocking import kotlinx.coroutines.runBlocking
@ -14,7 +13,7 @@ import okhttp3.Request
import okhttp3.Response import okhttp3.Response
import org.jsoup.nodes.Document import org.jsoup.nodes.Document
import org.jsoup.nodes.Element import org.jsoup.nodes.Element
import rx.Observable import java.lang.Exception
class GogoAnime : ParsedAnimeHttpSource() { class GogoAnime : ParsedAnimeHttpSource() {
@ -57,23 +56,6 @@ class GogoAnime : ParsedAnimeHttpSource() {
return document.select("a").map { episodeFromElement(it) } return document.select("a").map { episodeFromElement(it) }
} }
override fun fetchEpisodeLink(episode: SEpisode): Observable<List<Link>> {
return client.newCall(GET(baseUrl + episode.url))
.asObservableSuccess()
.map { response ->
runBlocking { linkRequest(response) }
}
}
private suspend fun linkRequest(response: Response): List<Link> {
val elements = response.asJsoup()
val link = elements.select("li.dowloads a").attr("href")
val dlResponse = client.newCall(GET(link))
.await()
val document = dlResponse.asJsoup()
return linksFromElement(document.select(episodeLinkSelector()).first())
}
override fun episodeFromElement(element: Element): SEpisode { override fun episodeFromElement(element: Element): SEpisode {
val episode = SEpisode.create() val episode = SEpisode.create()
episode.setUrlWithoutDomain(baseUrl + element.attr("href").substringAfter(" ")) episode.setUrlWithoutDomain(baseUrl + element.attr("href").substringAfter(" "))
@ -84,16 +66,11 @@ class GogoAnime : ParsedAnimeHttpSource() {
return episode return episode
} }
override fun episodeLinkSelector() = "div.mirror_link:has(a[download])" override fun videoListSelector() = "div.mirror_link a[download]"
override fun linksFromElement(element: Element): List<Link> { override fun videoFromElement(element: Element): Video {
val links = mutableListOf<Link>() val quality = element.text().substringAfter("Download (").replace("P - mp4)", "p")
val linkElements = element.select("a[download]") return Video(element.attr("href"), quality, element.attr("href"), null)
for (e in linkElements) {
val quality = e.text().substringAfter("Download (").replace("P - mp4)", "p")
links.add(Link(e.attr("href"), quality))
}
return links
} }
override fun searchAnimeFromElement(element: Element): SAnime { override fun searchAnimeFromElement(element: Element): SAnime {
@ -141,4 +118,8 @@ class GogoAnime : ParsedAnimeHttpSource() {
override fun latestUpdatesRequest(page: Int): Request = GET("https://ajax.gogo-load.com/ajax/page-recent-release-ongoing.html?page=$page&type=1") override fun latestUpdatesRequest(page: Int): Request = GET("https://ajax.gogo-load.com/ajax/page-recent-release-ongoing.html?page=$page&type=1")
override fun latestUpdatesSelector(): String = "div.added_series_body.popular li a:has(div)" override fun latestUpdatesSelector(): String = "div.added_series_body.popular li a:has(div)"
override fun videoUrlFromElement(element: Element) = throw Exception("not used")
override fun videoUrlSelector() = throw Exception("not used")
} }

View File

@ -6,7 +6,7 @@ ext {
pkgNameSuffix = 'en.hanime' pkgNameSuffix = 'en.hanime'
extClass = '.Hanime' extClass = '.Hanime'
extVersionCode = 6 extVersionCode = 6
libVersion = '11' libVersion = '12'
containsNsfw = true containsNsfw = true
} }
dependencies { dependencies {

View File

@ -6,9 +6,9 @@ import com.google.gson.JsonObject
import com.google.gson.JsonParser import com.google.gson.JsonParser
import eu.kanade.tachiyomi.animesource.model.AnimeFilterList import eu.kanade.tachiyomi.animesource.model.AnimeFilterList
import eu.kanade.tachiyomi.animesource.model.AnimesPage import eu.kanade.tachiyomi.animesource.model.AnimesPage
import eu.kanade.tachiyomi.animesource.model.Link
import eu.kanade.tachiyomi.animesource.model.SAnime import eu.kanade.tachiyomi.animesource.model.SAnime
import eu.kanade.tachiyomi.animesource.model.SEpisode import eu.kanade.tachiyomi.animesource.model.SEpisode
import eu.kanade.tachiyomi.animesource.model.Video
import eu.kanade.tachiyomi.animesource.online.AnimeHttpSource import eu.kanade.tachiyomi.animesource.online.AnimeHttpSource
import eu.kanade.tachiyomi.network.GET import eu.kanade.tachiyomi.network.GET
import eu.kanade.tachiyomi.network.POST import eu.kanade.tachiyomi.network.POST
@ -117,16 +117,16 @@ class Hanime : AnimeHttpSource() {
return anime return anime
} }
override fun episodeLinkParse(response: Response): List<Link> { override fun videoListParse(response: Response): List<Video> {
val responseString = response.body!!.string() val responseString = response.body!!.string()
val jElement: JsonElement = JsonParser.parseString(responseString) val jElement: JsonElement = JsonParser.parseString(responseString)
val jObject: JsonObject = jElement.asJsonObject val jObject: JsonObject = jElement.asJsonObject
val server = jObject.get("videos_manifest").asJsonObject.get("servers").asJsonArray[0].asJsonObject val server = jObject.get("videos_manifest").asJsonObject.get("servers").asJsonArray[0].asJsonObject
val streams = server.get("streams").asJsonArray val streams = server.get("streams").asJsonArray
val linkList = mutableListOf<Link>() val linkList = mutableListOf<Video>()
for (stream in streams) { for (stream in streams) {
if (stream.asJsonObject.get("kind").asString != "premium_alert") { if (stream.asJsonObject.get("kind").asString != "premium_alert") {
linkList.add(Link(stream.asJsonObject.get("url").asString, stream.asJsonObject.get("height").asString + "p")) linkList.add(Video(stream.asJsonObject.get("url").asString, stream.asJsonObject.get("height").asString + "p", stream.asJsonObject.get("url").asString, null))
} }
} }
return linkList return linkList

View File

@ -6,7 +6,7 @@ ext {
pkgNameSuffix = 'en.tenshimoe' pkgNameSuffix = 'en.tenshimoe'
extClass = '.TenshiMoe' extClass = '.TenshiMoe'
extVersionCode = 15 extVersionCode = 15
libVersion = '11' libVersion = '12'
} }
dependencies { dependencies {
ext.coroutinesVersion = "1.4.3" ext.coroutinesVersion = "1.4.3"

View File

@ -3,21 +3,20 @@ package eu.kanade.tachiyomi.animeextension.en.tenshimoe
import android.annotation.SuppressLint import android.annotation.SuppressLint
import android.util.Log import android.util.Log
import eu.kanade.tachiyomi.animesource.model.AnimeFilterList import eu.kanade.tachiyomi.animesource.model.AnimeFilterList
import eu.kanade.tachiyomi.animesource.model.Link
import eu.kanade.tachiyomi.animesource.model.SAnime import eu.kanade.tachiyomi.animesource.model.SAnime
import eu.kanade.tachiyomi.animesource.model.SEpisode import eu.kanade.tachiyomi.animesource.model.SEpisode
import eu.kanade.tachiyomi.animesource.model.Video
import eu.kanade.tachiyomi.animesource.online.ParsedAnimeHttpSource import eu.kanade.tachiyomi.animesource.online.ParsedAnimeHttpSource
import eu.kanade.tachiyomi.network.GET import eu.kanade.tachiyomi.network.GET
import eu.kanade.tachiyomi.network.asObservableSuccess import eu.kanade.tachiyomi.network.asObservableSuccess
import eu.kanade.tachiyomi.network.await
import eu.kanade.tachiyomi.util.asJsoup import eu.kanade.tachiyomi.util.asJsoup
import kotlinx.coroutines.runBlocking
import okhttp3.Headers import okhttp3.Headers
import okhttp3.Request import okhttp3.Request
import okhttp3.Response import okhttp3.Response
import org.jsoup.nodes.Document import org.jsoup.nodes.Document
import org.jsoup.nodes.Element import org.jsoup.nodes.Element
import rx.Observable import rx.Observable
import java.lang.Exception
import java.lang.Float.parseFloat import java.lang.Float.parseFloat
import java.text.SimpleDateFormat import java.text.SimpleDateFormat
import java.util.Date import java.util.Date
@ -85,34 +84,46 @@ class TenshiMoe : ParsedAnimeHttpSource() {
return Date(-1L) return Date(-1L)
} }
override fun fetchEpisodeLink(episode: SEpisode): Observable<List<Link>> { override fun videoListParse(response: Response): List<Video> {
return client.newCall(GET(baseUrl + episode.url)) val document = response.asJsoup()
val iframe = document.selectFirst("iframe")
val referer = response.request.url.encodedPath
return document.select(videoListSelector()).map { videoFromElement(it, iframe, referer) }
}
override fun videoListSelector() = "span.resolution a"
private fun videoFromElement(element: Element, iframe: Element, referer: String): Video {
Log.i("lol", iframe.attr("src") + "&referer=$referer")
return Video(iframe.attr("src") + "&referer=$referer", element.text(), null, null)
}
override fun videoFromElement(element: Element) = throw Exception("not used")
override fun videoUrlRequest(video: Video): Request {
Log.i("lol", baseUrl + video.url.substringAfter("&referer="))
return GET(video.url, Headers.headersOf("referer", baseUrl + video.url.substringAfter("&referer=")))
}
override fun fetchVideoUrl(video: Video): Observable<String> {
return client.newCall(videoUrlRequest(video))
.asObservableSuccess() .asObservableSuccess()
.map { response -> .map {
Log.w("tenshi", "linkReq") Log.i("lol", it.code.toString())
runBlocking { linkRequest(response) } videoUrlParse(it, video.quality)
} }
} }
private suspend fun linkRequest(response: Response): List<Link> { private fun videoUrlParse(response: Response, quality: String): String {
val elements = response.asJsoup() val document = response.asJsoup()
val link = elements.select("iframe").attr("src") return videoUrlFromElement(document.selectFirst(videoUrlSelector(quality)))
val dlResponse = client.newCall(GET(link, Headers.headersOf("referer", response.request.url.toString())))
.await()
val document = dlResponse.asJsoup()
return linksFromElement(document.select(episodeLinkSelector()).first())
} }
override fun episodeLinkSelector() = "video#player" override fun videoUrlFromElement(element: Element): String = element.attr("src")
override fun linksFromElement(element: Element): List<Link> { private fun videoUrlSelector(quality: String) = "source[title=$quality]"
val linkList = mutableListOf<Link>()
val linkElements = element.select("source") override fun videoUrlSelector() = throw Exception("not used")
for (link in linkElements) {
linkList.add(Link(link.attr("src"), link.attr("title")))
}
return linkList
}
override fun searchAnimeFromElement(element: Element): SAnime { override fun searchAnimeFromElement(element: Element): SAnime {
val anime = SAnime.create() val anime = SAnime.create()