[SKIP CI] use lib version 12
This commit is contained in:
@ -1,7 +1,7 @@
|
||||
// used both in common.gradle and themesources library
|
||||
dependencies {
|
||||
// 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
|
||||
compileOnly "org.jetbrains.kotlin:kotlin-stdlib-jdk8:$kotlin_version"
|
||||
|
@ -6,7 +6,7 @@ ext {
|
||||
pkgNameSuffix = 'en.fouranime'
|
||||
extClass = '.FourAnime'
|
||||
extVersionCode = 11
|
||||
libVersion = '11'
|
||||
libVersion = '12'
|
||||
}
|
||||
dependencies {
|
||||
ext.coroutinesVersion = "1.4.3"
|
||||
|
@ -1,9 +1,9 @@
|
||||
package eu.kanade.tachiyomi.animeextension.en.fouranime
|
||||
|
||||
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.SEpisode
|
||||
import eu.kanade.tachiyomi.animesource.model.Video
|
||||
import eu.kanade.tachiyomi.animesource.online.ParsedAnimeHttpSource
|
||||
import eu.kanade.tachiyomi.network.GET
|
||||
import okhttp3.Request
|
||||
@ -58,12 +58,21 @@ class FourAnime : ParsedAnimeHttpSource() {
|
||||
text.replace("[^\\d]".toRegex(), "").toFloat() + firstLetterAsNumber
|
||||
}
|
||||
}
|
||||
override fun episodeLinkSelector() = "source"
|
||||
|
||||
override fun linksFromElement(element: Element): List<Link> {
|
||||
return mutableListOf(Link(element.attr("src"), "1080p"))
|
||||
override fun videoListSelector() = "source"
|
||||
|
||||
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 {
|
||||
val anime = SAnime.create()
|
||||
anime.setUrlWithoutDomain(element.select("a").attr("href"))
|
||||
|
@ -6,7 +6,7 @@ ext {
|
||||
pkgNameSuffix = 'en.gogoanime'
|
||||
extClass = '.GogoAnime'
|
||||
extVersionCode = 2
|
||||
libVersion = '11'
|
||||
libVersion = '12'
|
||||
}
|
||||
dependencies {
|
||||
ext.coroutinesVersion = "1.4.3"
|
||||
|
@ -1,12 +1,11 @@
|
||||
package eu.kanade.tachiyomi.animeextension.en.gogoanime
|
||||
|
||||
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.SEpisode
|
||||
import eu.kanade.tachiyomi.animesource.model.Video
|
||||
import eu.kanade.tachiyomi.animesource.online.ParsedAnimeHttpSource
|
||||
import eu.kanade.tachiyomi.network.GET
|
||||
import eu.kanade.tachiyomi.network.asObservableSuccess
|
||||
import eu.kanade.tachiyomi.network.await
|
||||
import eu.kanade.tachiyomi.util.asJsoup
|
||||
import kotlinx.coroutines.runBlocking
|
||||
@ -14,7 +13,7 @@ import okhttp3.Request
|
||||
import okhttp3.Response
|
||||
import org.jsoup.nodes.Document
|
||||
import org.jsoup.nodes.Element
|
||||
import rx.Observable
|
||||
import java.lang.Exception
|
||||
|
||||
class GogoAnime : ParsedAnimeHttpSource() {
|
||||
|
||||
@ -57,23 +56,6 @@ class GogoAnime : ParsedAnimeHttpSource() {
|
||||
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 {
|
||||
val episode = SEpisode.create()
|
||||
episode.setUrlWithoutDomain(baseUrl + element.attr("href").substringAfter(" "))
|
||||
@ -84,16 +66,11 @@ class GogoAnime : ParsedAnimeHttpSource() {
|
||||
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> {
|
||||
val links = mutableListOf<Link>()
|
||||
val linkElements = element.select("a[download]")
|
||||
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 videoFromElement(element: Element): Video {
|
||||
val quality = element.text().substringAfter("Download (").replace("P - mp4)", "p")
|
||||
return Video(element.attr("href"), quality, element.attr("href"), null)
|
||||
}
|
||||
|
||||
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 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")
|
||||
}
|
||||
|
@ -6,7 +6,7 @@ ext {
|
||||
pkgNameSuffix = 'en.hanime'
|
||||
extClass = '.Hanime'
|
||||
extVersionCode = 6
|
||||
libVersion = '11'
|
||||
libVersion = '12'
|
||||
containsNsfw = true
|
||||
}
|
||||
dependencies {
|
||||
|
@ -6,9 +6,9 @@ import com.google.gson.JsonObject
|
||||
import com.google.gson.JsonParser
|
||||
import eu.kanade.tachiyomi.animesource.model.AnimeFilterList
|
||||
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.SEpisode
|
||||
import eu.kanade.tachiyomi.animesource.model.Video
|
||||
import eu.kanade.tachiyomi.animesource.online.AnimeHttpSource
|
||||
import eu.kanade.tachiyomi.network.GET
|
||||
import eu.kanade.tachiyomi.network.POST
|
||||
@ -117,16 +117,16 @@ class Hanime : AnimeHttpSource() {
|
||||
return anime
|
||||
}
|
||||
|
||||
override fun episodeLinkParse(response: Response): List<Link> {
|
||||
override fun videoListParse(response: Response): List<Video> {
|
||||
val responseString = response.body!!.string()
|
||||
val jElement: JsonElement = JsonParser.parseString(responseString)
|
||||
val jObject: JsonObject = jElement.asJsonObject
|
||||
val server = jObject.get("videos_manifest").asJsonObject.get("servers").asJsonArray[0].asJsonObject
|
||||
val streams = server.get("streams").asJsonArray
|
||||
val linkList = mutableListOf<Link>()
|
||||
val linkList = mutableListOf<Video>()
|
||||
for (stream in streams) {
|
||||
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
|
||||
|
@ -6,7 +6,7 @@ ext {
|
||||
pkgNameSuffix = 'en.tenshimoe'
|
||||
extClass = '.TenshiMoe'
|
||||
extVersionCode = 15
|
||||
libVersion = '11'
|
||||
libVersion = '12'
|
||||
}
|
||||
dependencies {
|
||||
ext.coroutinesVersion = "1.4.3"
|
||||
|
@ -3,21 +3,20 @@ package eu.kanade.tachiyomi.animeextension.en.tenshimoe
|
||||
import android.annotation.SuppressLint
|
||||
import android.util.Log
|
||||
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.SEpisode
|
||||
import eu.kanade.tachiyomi.animesource.model.Video
|
||||
import eu.kanade.tachiyomi.animesource.online.ParsedAnimeHttpSource
|
||||
import eu.kanade.tachiyomi.network.GET
|
||||
import eu.kanade.tachiyomi.network.asObservableSuccess
|
||||
import eu.kanade.tachiyomi.network.await
|
||||
import eu.kanade.tachiyomi.util.asJsoup
|
||||
import kotlinx.coroutines.runBlocking
|
||||
import okhttp3.Headers
|
||||
import okhttp3.Request
|
||||
import okhttp3.Response
|
||||
import org.jsoup.nodes.Document
|
||||
import org.jsoup.nodes.Element
|
||||
import rx.Observable
|
||||
import java.lang.Exception
|
||||
import java.lang.Float.parseFloat
|
||||
import java.text.SimpleDateFormat
|
||||
import java.util.Date
|
||||
@ -85,34 +84,46 @@ class TenshiMoe : ParsedAnimeHttpSource() {
|
||||
return Date(-1L)
|
||||
}
|
||||
|
||||
override fun fetchEpisodeLink(episode: SEpisode): Observable<List<Link>> {
|
||||
return client.newCall(GET(baseUrl + episode.url))
|
||||
override fun videoListParse(response: Response): List<Video> {
|
||||
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()
|
||||
.map { response ->
|
||||
Log.w("tenshi", "linkReq")
|
||||
runBlocking { linkRequest(response) }
|
||||
.map {
|
||||
Log.i("lol", it.code.toString())
|
||||
videoUrlParse(it, video.quality)
|
||||
}
|
||||
}
|
||||
|
||||
private suspend fun linkRequest(response: Response): List<Link> {
|
||||
val elements = response.asJsoup()
|
||||
val link = elements.select("iframe").attr("src")
|
||||
val dlResponse = client.newCall(GET(link, Headers.headersOf("referer", response.request.url.toString())))
|
||||
.await()
|
||||
val document = dlResponse.asJsoup()
|
||||
return linksFromElement(document.select(episodeLinkSelector()).first())
|
||||
private fun videoUrlParse(response: Response, quality: String): String {
|
||||
val document = response.asJsoup()
|
||||
return videoUrlFromElement(document.selectFirst(videoUrlSelector(quality)))
|
||||
}
|
||||
|
||||
override fun episodeLinkSelector() = "video#player"
|
||||
override fun videoUrlFromElement(element: Element): String = element.attr("src")
|
||||
|
||||
override fun linksFromElement(element: Element): List<Link> {
|
||||
val linkList = mutableListOf<Link>()
|
||||
val linkElements = element.select("source")
|
||||
for (link in linkElements) {
|
||||
linkList.add(Link(link.attr("src"), link.attr("title")))
|
||||
}
|
||||
return linkList
|
||||
}
|
||||
private fun videoUrlSelector(quality: String) = "source[title=$quality]"
|
||||
|
||||
override fun videoUrlSelector() = throw Exception("not used")
|
||||
|
||||
override fun searchAnimeFromElement(element: Element): SAnime {
|
||||
val anime = SAnime.create()
|
||||
|
Reference in New Issue
Block a user