Dramasee and WatchAsian fix to support asianload domain. Fixes #526 (#536)

* Dramasee and WatchAsian fix to support asianload domain. Fixes #526

* [skip ci] minor edits from PR suggestions.

* fix pinoymoviepedia titles on homepage.

* fix pinoymovies title on homepage.

* Update DramaSeeProvider.kt

Co-authored-by: Osten <balt.758@gmail.com>
This commit is contained in:
Jace 2022-02-01 05:01:25 +08:00 committed by GitHub
parent 4bac7eb33b
commit 54cd44179d
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
5 changed files with 60 additions and 39 deletions

View file

@ -1,6 +1,7 @@
package com.lagradost.cloudstream3.extractors.helper package com.lagradost.cloudstream3.extractors.helper
import android.util.Log import android.util.Log
import com.lagradost.cloudstream3.apmap
import com.lagradost.cloudstream3.app import com.lagradost.cloudstream3.app
import com.lagradost.cloudstream3.utils.ExtractorLink import com.lagradost.cloudstream3.utils.ExtractorLink
import com.lagradost.cloudstream3.utils.loadExtractor import com.lagradost.cloudstream3.utils.loadExtractor
@ -8,18 +9,16 @@ import com.lagradost.cloudstream3.utils.loadExtractor
class AsianEmbedHelper { class AsianEmbedHelper {
companion object { companion object {
suspend fun getUrls(url: String, callback: (ExtractorLink) -> Unit) { suspend fun getUrls(url: String, callback: (ExtractorLink) -> Unit) {
if (url.startsWith("https://asianembed.io")) {
// Fetch links // Fetch links
val doc = app.get(url).document val doc = app.get(url).document
val links = doc.select("div#list-server-more > ul > li.linkserver") val links = doc.select("div#list-server-more > ul > li.linkserver")
if (!links.isNullOrEmpty()) { if (!links.isNullOrEmpty()) {
links.forEach { links.apmap {
val datavid = it.attr("data-video") ?: "" val datavid = it.attr("data-video") ?: ""
//Log.i("AsianEmbed", "Result => (datavid) ${datavid}") //Log.i("AsianEmbed", "Result => (datavid) ${datavid}")
if (datavid.isNotEmpty()) { if (datavid.isNotEmpty()) {
val res = loadExtractor(datavid, url, callback) val res = loadExtractor(datavid, url, callback)
Log.i("AsianEmbed", "Result => ($res) (datavid) ${datavid}") Log.i("AsianEmbed", "Result => ($res) (datavid) $datavid")
}
} }
} }
} }

View file

@ -96,7 +96,7 @@ class DramaSeeProvider : MainAPI() {
// Episodes Links // Episodes Links
val episodeList = ArrayList<TvSeriesEpisode>() val episodeList = ArrayList<TvSeriesEpisode>()
body?.select("ul.episodes > li.episode-item")?.forEach { ep -> body?.select("ul.episodes > li")?.forEach { ep ->
val innerA = ep.select("a") ?: return@forEach val innerA = ep.select("a") ?: return@forEach
val count = innerA.select("span.episode")?.text()?.toIntOrNull() ?: 0 val count = innerA.select("span.episode")?.text()?.toIntOrNull() ?: 0
val epLink = fixUrlNull(innerA.attr("href")) ?: return@forEach val epLink = fixUrlNull(innerA.attr("href")) ?: return@forEach
@ -110,13 +110,13 @@ class DramaSeeProvider : MainAPI() {
val innerPage = app.get(fixUrl(ajaxUrl), referer = epLink).document val innerPage = app.get(fixUrl(ajaxUrl), referer = epLink).document
val listOfLinks = mutableListOf<String>() val listOfLinks = mutableListOf<String>()
innerPage.select("div.player.active > main > div")?.forEach { em -> innerPage.select("div.player.active > main > div")?.forEach { em ->
val href = em.attr("src") ?: "" val href = fixUrlNull(em.attr("src")) ?: ""
if (href.isNotEmpty()) { if (href.isNotEmpty()) {
listOfLinks.add(href) listOfLinks.add(href)
} }
} }
//Log.i(this.name, "Result => (listOfLinks) ${listOfLinks}") //Log.i(this.name, "Result => (listOfLinks) ${listOfLinks.toJson()}")
episodeList.add( episodeList.add(
TvSeriesEpisode( TvSeriesEpisode(
name = null, name = null,
@ -160,18 +160,16 @@ class DramaSeeProvider : MainAPI() {
mapper.readValue<List<String>>(data).apmap { item -> mapper.readValue<List<String>>(data).apmap { item ->
if (item.isNotEmpty()) { if (item.isNotEmpty()) {
count++ count++
var url = fixUrl(item.trim()) val url = fixUrl(item.trim())
//Log.i(this.name, "Result => (url) ${url}") //Log.i(this.name, "Result => (url) ${url}")
when { when {
url.startsWith("https://asianembed.io") -> { url.startsWith("https://asianembed.io") || url.startsWith("https://asianload.io") -> {
AsianEmbedHelper.getUrls(url, callback) AsianEmbedHelper.getUrls(url, callback)
} }
url.startsWith("https://embedsito.com") -> { url.startsWith("https://embedsito.com") -> {
val extractor = XStreamCdn() val extractor = XStreamCdn()
extractor.domainUrl = "embedsito.com" extractor.domainUrl = "embedsito.com"
extractor.getUrl(url).forEach { link -> extractor.getSafeUrl(url)?.forEach(callback)
callback.invoke(link)
}
} }
else -> { else -> {
loadExtractor(url, mainUrl, callback) loadExtractor(url, mainUrl, callback)

View file

@ -36,20 +36,28 @@ class PinoyMoviePediaProvider : MainAPI() {
val inner = mainbody?.select("div#${item.second} > article") val inner = mainbody?.select("div#${item.second} > article")
val elements: List<SearchResponse> = inner?.mapNotNull { val elements: List<SearchResponse> = inner?.mapNotNull {
if (it == null) { if (it == null) { return@mapNotNull null }
return@mapNotNull null
}
// Get inner div from article // Get inner div from article
val urlTitle = it.select("div.data") ?: return@mapNotNull null val urlTitle = it.select("div.data") ?: return@mapNotNull null
// Fetch details // Fetch details
val link = fixUrlNull(urlTitle.select("a")?.attr("href")) ?: return@mapNotNull null val link = fixUrlNull(urlTitle.select("a")?.attr("href")) ?: return@mapNotNull null
val name = urlTitle.text() ?: ""
val image = it.select("div.poster > img")?.attr("src") val image = it.select("div.poster > img")?.attr("src")
// Get Year from Title
val year = try { // Get Title and Year
val titleYear = it.select("div.data.dfeatur")
var name = titleYear?.select("h3")?.text() ?: ""
var year = titleYear?.select("span")?.text()?.toIntOrNull()
if (name.isEmpty()) {
name = urlTitle.select("h3")?.text() ?: ""
year = titleYear?.select("span")?.text()?.takeLast(4)?.toIntOrNull()
}
if (year == null) {
// Get year from name
val rex = Regex("\\((\\d+)") val rex = Regex("\\((\\d+)")
rex.find(name)?.value?.replace("(", "")?.toIntOrNull() year = rex.find(name)?.value?.replace("(", "")?.toIntOrNull()
} catch (e: Exception) { null } }
val tvType = TvType.Movie val tvType = TvType.Movie
MovieSearchResponse( MovieSearchResponse(

View file

@ -39,11 +39,18 @@ class PinoyMoviesEsProvider : MainAPI() {
} }
// Fetch details // Fetch details
val link = urlTitle?.select("a")?.attr("href") ?: "" val link = urlTitle?.select("a")?.attr("href") ?: ""
val name = urlTitle?.text() ?: ""
val year = urlTitle?.select("span")?.text()?.toIntOrNull()
//Log.i(this.name, "Result => (link) ${link}")
val image = it?.select("div.poster > img")?.attr("data-src") val image = it?.select("div.poster > img")?.attr("data-src")
// Get Title and Year
val name = urlTitle?.select("h3")?.text() ?: ""
var year = urlTitle?.select("span")?.text()?.toIntOrNull()
if (year == null) {
// Get year from name
val rex = Regex("\\((\\d+)")
year = rex.find(name)?.value?.replace("(", "")?.toIntOrNull()
}
MovieSearchResponse( MovieSearchResponse(
name, name,
link, link,

View file

@ -2,7 +2,7 @@ package com.lagradost.cloudstream3.movieproviders
import com.fasterxml.jackson.module.kotlin.readValue import com.fasterxml.jackson.module.kotlin.readValue
import com.lagradost.cloudstream3.* import com.lagradost.cloudstream3.*
import com.lagradost.cloudstream3.extractors.* import com.lagradost.cloudstream3.extractors.XStreamCdn
import com.lagradost.cloudstream3.extractors.helper.AsianEmbedHelper import com.lagradost.cloudstream3.extractors.helper.AsianEmbedHelper
import com.lagradost.cloudstream3.utils.AppUtils.toJson import com.lagradost.cloudstream3.utils.AppUtils.toJson
import com.lagradost.cloudstream3.utils.ExtractorLink import com.lagradost.cloudstream3.utils.ExtractorLink
@ -144,7 +144,7 @@ class WatchAsianProvider : MainAPI() {
//If there's only 1 episode, consider it a movie. //If there's only 1 episode, consider it a movie.
if (episodeList.size == 1) { if (episodeList.size == 1) {
//Clean title //Clean title
title = title.removeSuffix("Episode 1") title = title.trim().removeSuffix("Episode 1")
val streamlink = getServerLinks(episodeList[0].data) val streamlink = getServerLinks(episodeList[0].data)
//Log.i(this.name, "Result => (streamlink) $streamlink") //Log.i(this.name, "Result => (streamlink) $streamlink")
return MovieLoadResponse(title, url, this.name, TvType.Movie, streamlink, poster, year, descript, null, null) return MovieLoadResponse(title, url, this.name, TvType.Movie, streamlink, poster, year, descript, null, null)
@ -178,13 +178,22 @@ class WatchAsianProvider : MainAPI() {
count++ count++
val url = fixUrl(item.trim()) val url = fixUrl(item.trim())
//Log.i(this.name, "Result => (url) $url") //Log.i(this.name, "Result => (url) $url")
if (url.startsWith("https://asianembed.io")) { when {
// Fetch links url.startsWith("https://asianembed.io") || url.startsWith("https://asianload.io") -> {
AsianEmbedHelper.getUrls(url, callback) AsianEmbedHelper.getUrls(url, callback)
} else { }
url.startsWith("https://embedsito.com") -> {
val extractor = XStreamCdn()
extractor.domainUrl = "embedsito.com"
extractor.getSafeUrl(url)?.apmap { link ->
callback.invoke(link)
}
}
else -> {
loadExtractor(url, mainUrl, callback) loadExtractor(url, mainUrl, callback)
} }
} }
}
return count > 0 return count > 0
} }