[WitAnime] adding dailymotion extractor (#1644)
This commit is contained in:
@ -5,7 +5,7 @@ ext {
|
|||||||
extName = 'WIT ANIME'
|
extName = 'WIT ANIME'
|
||||||
pkgNameSuffix = 'ar.witanime'
|
pkgNameSuffix = 'ar.witanime'
|
||||||
extClass = '.WitAnime'
|
extClass = '.WitAnime'
|
||||||
extVersionCode = 35
|
extVersionCode = 36
|
||||||
libVersion = '13'
|
libVersion = '13'
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -4,6 +4,7 @@ import android.app.Application
|
|||||||
import android.content.SharedPreferences
|
import android.content.SharedPreferences
|
||||||
import androidx.preference.ListPreference
|
import androidx.preference.ListPreference
|
||||||
import androidx.preference.PreferenceScreen
|
import androidx.preference.PreferenceScreen
|
||||||
|
import eu.kanade.tachiyomi.animeextension.ar.witanime.extractors.DailymotionExtractor
|
||||||
import eu.kanade.tachiyomi.animeextension.ar.witanime.extractors.SharedExtractor
|
import eu.kanade.tachiyomi.animeextension.ar.witanime.extractors.SharedExtractor
|
||||||
import eu.kanade.tachiyomi.animeextension.ar.witanime.extractors.SoraPlayExtractor
|
import eu.kanade.tachiyomi.animeextension.ar.witanime.extractors.SoraPlayExtractor
|
||||||
import eu.kanade.tachiyomi.animesource.ConfigurableAnimeSource
|
import eu.kanade.tachiyomi.animesource.ConfigurableAnimeSource
|
||||||
@ -94,6 +95,7 @@ class WitAnime : ConfigurableAnimeSource, ParsedAnimeHttpSource() {
|
|||||||
override fun videoListParse(response: Response): List<Video> {
|
override fun videoListParse(response: Response): List<Video> {
|
||||||
val document = response.asJsoup()
|
val document = response.asJsoup()
|
||||||
val videoList = mutableListOf<Video>()
|
val videoList = mutableListOf<Video>()
|
||||||
|
var dailyMotion = true
|
||||||
document.select("ul#episode-servers li").forEach { it ->
|
document.select("ul#episode-servers li").forEach { it ->
|
||||||
val server = it.select("a").text()
|
val server = it.select("a").text()
|
||||||
val url = it.select("a").attr("data-ep-url")
|
val url = it.select("a").attr("data-ep-url")
|
||||||
@ -148,6 +150,11 @@ class WitAnime : ConfigurableAnimeSource, ParsedAnimeHttpSource() {
|
|||||||
val videos = StreamSBExtractor(client).videosFromUrl(url, headers)
|
val videos = StreamSBExtractor(client).videosFromUrl(url, headers)
|
||||||
videoList.addAll(videos)
|
videoList.addAll(videos)
|
||||||
}
|
}
|
||||||
|
url.contains("dailymotion") && dailyMotion -> {
|
||||||
|
val videos = DailymotionExtractor(client).videosFromUrl(url, headers)
|
||||||
|
videoList.addAll(videos)
|
||||||
|
dailyMotion = false
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return videoList
|
return videoList
|
||||||
@ -239,8 +246,8 @@ class WitAnime : ConfigurableAnimeSource, ParsedAnimeHttpSource() {
|
|||||||
val videoQualityPref = ListPreference(screen.context).apply {
|
val videoQualityPref = ListPreference(screen.context).apply {
|
||||||
key = "preferred_quality"
|
key = "preferred_quality"
|
||||||
title = "Preferred quality"
|
title = "Preferred quality"
|
||||||
entries = arrayOf("1080p", "720p", "480p", "360p", "240p")
|
entries = arrayOf("1080p", "720p", "480p", "380p", "360p", "240p")
|
||||||
entryValues = arrayOf("1080", "720", "480", "360p", "240")
|
entryValues = arrayOf("1080", "720", "480", "380", "360", "240")
|
||||||
setDefaultValue("1080")
|
setDefaultValue("1080")
|
||||||
summary = "%s"
|
summary = "%s"
|
||||||
|
|
||||||
|
@ -0,0 +1,23 @@
|
|||||||
|
package eu.kanade.tachiyomi.animeextension.ar.witanime.extractors
|
||||||
|
|
||||||
|
import eu.kanade.tachiyomi.animesource.model.Video
|
||||||
|
import eu.kanade.tachiyomi.network.GET
|
||||||
|
import eu.kanade.tachiyomi.util.asJsoup
|
||||||
|
import okhttp3.Headers
|
||||||
|
import okhttp3.OkHttpClient
|
||||||
|
|
||||||
|
class DailymotionExtractor(private val client: OkHttpClient) {
|
||||||
|
|
||||||
|
fun videosFromUrl(url: String, newHeaders: Headers): List<Video> {
|
||||||
|
val id = url.split("/").last()
|
||||||
|
val document = client.newCall(GET("https://www.dailymotion.com/player/metadata/video/$id", newHeaders)).execute().asJsoup()
|
||||||
|
val streamURL = document.body().toString().substringAfter("{\"type\":\"application\\/x-mpegURL\",\"url\":\"").substringBefore("\"").replace("\\", "")
|
||||||
|
val sources = client.newCall(GET(streamURL)).execute().asJsoup().body().toString()
|
||||||
|
val videoList = mutableListOf<Video>()
|
||||||
|
val videos = Regex("#EXT(?:.*?)NAME=\"(.*?)\",PROGRESSIVE-URI=\"(.*?)\"").findAll(sources).map {
|
||||||
|
Video(it.groupValues[2], "Dailymotion: ${it.groupValues[1]}", it.groupValues[2])
|
||||||
|
}
|
||||||
|
videoList.addAll(videos)
|
||||||
|
return videoList
|
||||||
|
}
|
||||||
|
}
|
Reference in New Issue
Block a user