parent
1a66b51e52
commit
90ae067a32
|
@ -12,7 +12,6 @@ import org.jsoup.Jsoup
|
||||||
|
|
||||||
|
|
||||||
class MesFilmsProvider : MainAPI() {
|
class MesFilmsProvider : MainAPI() {
|
||||||
// VostFreeProvider() est ajouté à la liste allProviders dans MainAPI.kt
|
|
||||||
override var mainUrl = "https://mesfilms.lol"
|
override var mainUrl = "https://mesfilms.lol"
|
||||||
override var name = "Mes Films"
|
override var name = "Mes Films"
|
||||||
override val hasQuickSearch = false // recherche rapide (optionel, pas vraimet utile)
|
override val hasQuickSearch = false // recherche rapide (optionel, pas vraimet utile)
|
||||||
|
@ -37,36 +36,37 @@ class MesFilmsProvider : MainAPI() {
|
||||||
?.replace("\t", "")?.replace("\n", "")
|
?.replace("\t", "")?.replace("\n", "")
|
||||||
|
|
||||||
type != "Épisode" // enlève tous les éléments qui sont des épisodes de série
|
type != "Épisode" // enlève tous les éléments qui sont des épisodes de série
|
||||||
}.apmap { div -> // apmap crée une liste des éléments (ici newMovieSearchResponse et newTvSeriesSearchResponse)
|
}.mapNotNull { div -> // apmap crée une liste des éléments (ici newMovieSearchResponse et newTvSeriesSearchResponse)
|
||||||
val posterContainer = div.selectFirst("> div.image > div.thumbnail > a") // selectione le premier élément correspondant à ces critères
|
val posterContainer = div.selectFirst("> div.image > div.thumbnail > a") // selectione le premier élément correspondant à ces critères
|
||||||
val type = posterContainer?.selectFirst("> span")?.text()?.replace("\t", "")?.replace("\n", "")
|
val type = posterContainer?.selectFirst("> span")?.text()?.replace("\t", "")?.replace("\n", "")
|
||||||
// replace enlève tous les '\t' et '\n' du titre
|
// replace enlève tous les '\t' et '\n' du titre
|
||||||
val mediaPoster = posterContainer?.selectFirst("> img")?.attr("src") // récupère le texte de l'attribut src de l'élément
|
val mediaPoster = posterContainer?.selectFirst("> img")?.attr("src") // récupère le texte de l'attribut src de l'élément
|
||||||
|
|
||||||
val href = posterContainer?.attr("href") ?: throw ErrorLoadingException("invalid link") // renvoie une erreur si il n'y a pas de lien vers le média
|
val href = posterContainer?.attr("href") ?: return@mapNotNull null // renvoie une erreur si il n'y a pas de lien vers le média
|
||||||
// val test1 = stringVariable ?: "valeur par défault"
|
// val test1 = stringVariable ?: "valeur par défault"
|
||||||
// val test2 = stringVariable ?: doSomething() // si stringVariable est null, on appelle la fonction doSomething
|
// val test2 = stringVariable ?: doSomething() // si stringVariable est null, on appelle la fonction doSomething
|
||||||
// '?:' est appelé Elvis Operator, si la variable stringVariable est null, alors on utilise la "valeur par défault"
|
// '?:' est appelé Elvis Operator, si la variable stringVariable est null, alors on utilise la "valeur par défault"
|
||||||
// https://stackoverflow.com/questions/48253107/what-does-do-in-kotlin-elvis-operator
|
// https://stackoverflow.com/questions/48253107/what-does-do-in-kotlin-elvis-operator
|
||||||
val details = div.select("> div.details > div.meta")
|
// val details = div.select("> div.details > div.meta")
|
||||||
//val rating = details.select("> span.rating").text()
|
//val rating = details.select("> span.rating").text()
|
||||||
val year = details.select("> span.year").text()
|
// val year = details.select("> span.year").text().toIntOrNull()
|
||||||
|
|
||||||
val title = div.selectFirst("> div.details > div.title > a")?.text().toString()
|
val title = div.selectFirst("> div.details > div.title > a")?.text().toString()
|
||||||
|
|
||||||
when (type) {
|
when (type) {
|
||||||
"Film" -> (
|
"Film" -> (
|
||||||
newMovieSearchResponse( // réponse du film qui sera ajoutée à la liste apmap qui sera ensuite return
|
newMovieSearchResponse( // réponse du film qui sera ajoutée à la liste map qui sera ensuite return
|
||||||
title,
|
title,
|
||||||
href,
|
href,
|
||||||
TvType.Movie,
|
TvType.Movie,
|
||||||
false
|
false
|
||||||
) {
|
) {
|
||||||
this.posterUrl = mediaPoster
|
this.posterUrl = mediaPoster
|
||||||
|
// this.year = year
|
||||||
// this.rating = rating
|
// this.rating = rating
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
"TV" -> (
|
/*"TV" -> (
|
||||||
newTvSeriesSearchResponse(
|
newTvSeriesSearchResponse(
|
||||||
title,
|
title,
|
||||||
href,
|
href,
|
||||||
|
@ -74,10 +74,11 @@ class MesFilmsProvider : MainAPI() {
|
||||||
false
|
false
|
||||||
) {
|
) {
|
||||||
this.posterUrl = mediaPoster
|
this.posterUrl = mediaPoster
|
||||||
|
|
||||||
// this.rating = rating
|
// this.rating = rating
|
||||||
}
|
}
|
||||||
|
|
||||||
)
|
)
|
||||||
|
*/
|
||||||
else -> {
|
else -> {
|
||||||
throw ErrorLoadingException("invalid media type") // le type n'est pas reconnu ==> affiche une erreur
|
throw ErrorLoadingException("invalid media type") // le type n'est pas reconnu ==> affiche une erreur
|
||||||
}
|
}
|
||||||
|
@ -114,7 +115,7 @@ class MesFilmsProvider : MainAPI() {
|
||||||
val description = extra.select("span.tagline").first()?.text() // first() selectione le premier élément de la liste
|
val description = extra.select("span.tagline").first()?.text() // first() selectione le premier élément de la liste
|
||||||
|
|
||||||
val rating = data.select("div.dt_rating_data > div.starstruck-rating > span.dt_rating_vgs").first()?.text()?.let {
|
val rating = data.select("div.dt_rating_data > div.starstruck-rating > span.dt_rating_vgs").first()?.text()?.let {
|
||||||
if (it == "0.0" || it.isNullOrBlank()) {
|
if (it == "0.0" || it.isBlank()) {
|
||||||
null
|
null
|
||||||
} else {
|
} else {
|
||||||
it
|
it
|
||||||
|
@ -133,14 +134,26 @@ class MesFilmsProvider : MainAPI() {
|
||||||
"TV"
|
"TV"
|
||||||
}
|
}
|
||||||
// un api est disponible sur ce site pour récupérer le trailer (lien vers youtube)
|
// un api est disponible sur ce site pour récupérer le trailer (lien vers youtube)
|
||||||
val trailerUrl = if (postId != null){
|
val trailerUrl = postId?.let{
|
||||||
val payloadRequest = mapOf("action" to "doo_player_ajax", "post" to postId, "nume" to "trailer", "type" to mediaType) // on crée les donées de la requetes ici
|
try {
|
||||||
val getTrailer =
|
val payloadRequest = mapOf(
|
||||||
app.post("$mainUrl/wp-admin/admin-ajax.php", headers = mapOf("Content-Type" to "application/x-www-form-urlencoded; charset=UTF-8"), data = payloadRequest).text
|
"action" to "doo_player_ajax",
|
||||||
parseJson<EmbedUrlClass>(getTrailer).url
|
"post" to postId,
|
||||||
// parseJson lit le contenu de la réponse (la variable getTrailer) et cherche la valeur d'embed_url dans cette réponse
|
"nume" to "trailer",
|
||||||
} else {
|
"type" to mediaType
|
||||||
null
|
) // on crée les donées de la requetes ici
|
||||||
|
val getTrailer =
|
||||||
|
app.post(
|
||||||
|
"$mainUrl/wp-admin/admin-ajax.php",
|
||||||
|
headers = mapOf("Content-Type" to "application/x-www-form-urlencoded; charset=UTF-8"),
|
||||||
|
data = payloadRequest
|
||||||
|
).text
|
||||||
|
parseJson<EmbedUrlClass>(getTrailer).url
|
||||||
|
// parseJson lit le contenu de la réponse (la variable getTrailer) et cherche la valeur d'embed_url dans cette réponse
|
||||||
|
|
||||||
|
} catch (e: Exception){
|
||||||
|
null
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -151,7 +164,7 @@ class MesFilmsProvider : MainAPI() {
|
||||||
this.year = date?.toIntOrNull()
|
this.year = date?.toIntOrNull()
|
||||||
this.tags = tags
|
this.tags = tags
|
||||||
this.plot = description
|
this.plot = description
|
||||||
addTrailer(trailerUrl)
|
trailerUrl?.let{addTrailer(trailerUrl)}
|
||||||
}
|
}
|
||||||
} else // a tv serie
|
} else // a tv serie
|
||||||
{
|
{
|
||||||
|
@ -220,7 +233,7 @@ class MesFilmsProvider : MainAPI() {
|
||||||
val poster = article.select("div.poster")
|
val poster = article.select("div.poster")
|
||||||
val posterUrl = poster.select("> img").attr("data-src")
|
val posterUrl = poster.select("> img").attr("data-src")
|
||||||
val quality = getQualityFromString(poster.select("> div.mepo > span.quality").text())
|
val quality = getQualityFromString(poster.select("> div.mepo > span.quality").text())
|
||||||
val rating = poster.select("> div.rating").text()
|
// val rating = poster.select("> div.rating").text()
|
||||||
//val link = poster.select("> a")?.attr("href")
|
//val link = poster.select("> a")?.attr("href")
|
||||||
|
|
||||||
val data = article.select("div.data")
|
val data = article.select("div.data")
|
||||||
|
@ -236,11 +249,11 @@ class MesFilmsProvider : MainAPI() {
|
||||||
this.quality = quality
|
this.quality = quality
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (returnList.isEmpty()) throw ErrorLoadingException()
|
if (returnList.isEmpty()) throw ErrorLoadingException("No movies found in the main page")
|
||||||
return HomePageResponse(
|
return HomePageResponse(
|
||||||
listOf(
|
listOf(
|
||||||
HomePageList(categoryTitle, returnList)
|
HomePageList(categoryTitle, returnList)
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue