mirror of
https://github.com/recloudstream/cloudstream.git
synced 2024-08-15 01:53:11 +00:00
Merge remote-tracking branch 'origin/master'
This commit is contained in:
commit
f38ffc8ce9
5 changed files with 228 additions and 34 deletions
|
@ -64,6 +64,7 @@ It merely scrapes 3rd-party websites that are publicly accessable via any regula
|
||||||
- [allmoviesforyou.co](https://allmoviesforyou.co)
|
- [allmoviesforyou.co](https://allmoviesforyou.co)
|
||||||
- [vidembed.cc](https://vidembed.cc)
|
- [vidembed.cc](https://vidembed.cc)
|
||||||
- [vf-film.me](https://vf-film.me)
|
- [vf-film.me](https://vf-film.me)
|
||||||
|
- [vf-serie.org](https://vf-serie.org)
|
||||||
- [asianload.cc](https://asianload.cc)
|
- [asianload.cc](https://asianload.cc)
|
||||||
- [sflix.to](https://sflix.to)
|
- [sflix.to](https://sflix.to)
|
||||||
- [zoro.to](https://zoro.to)
|
- [zoro.to](https://zoro.to)
|
||||||
|
|
|
@ -46,6 +46,7 @@ object APIHolder {
|
||||||
|
|
||||||
VidEmbedProvider(),
|
VidEmbedProvider(),
|
||||||
VfFilmProvider(),
|
VfFilmProvider(),
|
||||||
|
VfSerieProvider(),
|
||||||
AsianLoadProvider(),
|
AsianLoadProvider(),
|
||||||
|
|
||||||
SflixProvider(),
|
SflixProvider(),
|
||||||
|
|
|
@ -77,11 +77,11 @@ class VfFilmProvider : MainAPI() {
|
||||||
|
|
||||||
private fun getDirect(original: String): String { // original data, https://vf-film.org/?trembed=1&trid=55313&trtype=1 for example
|
private fun getDirect(original: String): String { // original data, https://vf-film.org/?trembed=1&trid=55313&trtype=1 for example
|
||||||
val response = get(original).text
|
val response = get(original).text
|
||||||
val url = "iframe .*src=\"(.*?)\"".toRegex().find(response)?.groupValues?.get(1)
|
val url = "iframe .*src=\"(.*?)\"".toRegex().find(response)?.groupValues?.get(1).toString() // https://vudeo.net/embed-uweno86lzx8f.html for example
|
||||||
.toString() // https://vudeo.net/embed-uweno86lzx8f.html for example
|
|
||||||
val vudoResponse = get(url).text
|
val vudoResponse = get(url).text
|
||||||
val document = Jsoup.parse(vudoResponse)
|
val document = Jsoup.parse(vudoResponse)
|
||||||
return Regex("sources: \\[\"(.*?)\"]").find(document.html())?.groupValues?.get(1).toString()
|
val vudoUrl = Regex("sources: \\[\"(.*?)\"]").find(document.html())?.groupValues?.get(1).toString() // direct mp4 link, https://m11.vudeo.net/2vp3ukyw2avjdohilpebtzuct42q5jwvpmpsez3xjs6d7fbs65dpuey2rbra/v.mp4 for exemple
|
||||||
|
return vudoUrl
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -105,23 +105,23 @@ class VfFilmProvider : MainAPI() {
|
||||||
|
|
||||||
|
|
||||||
val players = document.select("ul.TPlayerNv > li")
|
val players = document.select("ul.TPlayerNv > li")
|
||||||
var numberPlayer = 0
|
var number_player = 0
|
||||||
var found = false
|
var found = false
|
||||||
for (player in players) {
|
for (player in players) {
|
||||||
if (player.selectFirst("> span").text() == "Vudeo") {
|
if (player.selectFirst("> span").text() == "Vudeo") {
|
||||||
found = true
|
found = true
|
||||||
break
|
break
|
||||||
} else {
|
} else {
|
||||||
numberPlayer += 1
|
number_player += 1
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (!found) {
|
if (found == false) {
|
||||||
numberPlayer = 0
|
number_player = 0
|
||||||
}
|
}
|
||||||
val i = numberPlayer.toString()
|
val i = number_player.toString()
|
||||||
val trid = Regex("iframe .*trid=(.*?)&").find(document.html())?.groupValues?.get(1)
|
val trid = Regex("iframe .*trid=(.*?)&").find(document.html())?.groupValues?.get(1)
|
||||||
|
|
||||||
val data = getDirect("https://vf-film.me/?trembed=$i&trid=$trid&trtype=1")
|
val data = getDirect("$mainUrl/?trembed=$i&trid=$trid&trtype=1")
|
||||||
|
|
||||||
|
|
||||||
return MovieLoadResponse(
|
return MovieLoadResponse(
|
||||||
|
|
|
@ -0,0 +1,190 @@
|
||||||
|
package com.lagradost.cloudstream3.movieproviders
|
||||||
|
|
||||||
|
import com.fasterxml.jackson.module.kotlin.readValue
|
||||||
|
import com.lagradost.cloudstream3.*
|
||||||
|
import com.lagradost.cloudstream3.network.get
|
||||||
|
import com.lagradost.cloudstream3.network.post
|
||||||
|
import com.lagradost.cloudstream3.network.text
|
||||||
|
import com.lagradost.cloudstream3.network.url
|
||||||
|
import com.lagradost.cloudstream3.utils.ExtractorLink
|
||||||
|
import com.lagradost.cloudstream3.utils.Qualities
|
||||||
|
import okio.Buffer
|
||||||
|
import org.jsoup.Jsoup
|
||||||
|
|
||||||
|
// referer = https://vf-serie.org, USERAGENT ALSO REQUIRED
|
||||||
|
class VfSerieProvider : MainAPI() {
|
||||||
|
override val mainUrl: String
|
||||||
|
get() = "https://vf-serie.org"
|
||||||
|
override val name: String
|
||||||
|
get() = "vf-serie.org"
|
||||||
|
|
||||||
|
override val lang: String = "fr"
|
||||||
|
|
||||||
|
override val hasQuickSearch: Boolean
|
||||||
|
get() = false
|
||||||
|
|
||||||
|
override val hasMainPage: Boolean
|
||||||
|
get() = false
|
||||||
|
|
||||||
|
override val hasChromecastSupport: Boolean
|
||||||
|
get() = false
|
||||||
|
|
||||||
|
override val supportedTypes: Set<TvType>
|
||||||
|
get() = setOf(
|
||||||
|
TvType.TvSeries,
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
override fun search(query: String): List<SearchResponse> {
|
||||||
|
val url = "$mainUrl/?s=$query"
|
||||||
|
val response = get(url).text
|
||||||
|
val document = Jsoup.parse(response)
|
||||||
|
val items = document.select("ul.MovieList > li > article > a")
|
||||||
|
if (items.isNullOrEmpty()) return ArrayList()
|
||||||
|
|
||||||
|
val returnValue = ArrayList<SearchResponse>()
|
||||||
|
for (item in items) {
|
||||||
|
val href = item.attr("href")
|
||||||
|
|
||||||
|
val poster = item.selectFirst("> div.Image > figure > img").attr("src").replace("//image", "https://image")
|
||||||
|
|
||||||
|
if (poster == "$mainUrl/wp-content/themes/toroplay/img/cnt/noimg-thumbnail.png") { // if the poster is missing (the item is just a redirect to something like https://vf-serie.org/series-tv/)
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
val name = item.selectFirst("> h3.Title").text()
|
||||||
|
|
||||||
|
val year = item.selectFirst("> span.Year").text()?.toIntOrNull()
|
||||||
|
|
||||||
|
returnValue.add(TvSeriesSearchResponse(name, href, this.name, TvType.TvSeries, poster, year, null))
|
||||||
|
}
|
||||||
|
return returnValue
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
private fun getDirect(original: String): String { // original data, https://vf-serie.org/?trembed=1&trid=80467&trtype=2 for example
|
||||||
|
val response = get(original).text
|
||||||
|
val url = "iframe .*src=\\\"(.*?)\\\"".toRegex().find(response)?.groupValues?.get(1).toString() // https://vudeo.net/embed-7jdb1t5b2mvo.html for example
|
||||||
|
val vudoResponse = get(url).text
|
||||||
|
val document = Jsoup.parse(vudoResponse)
|
||||||
|
val vudoUrl = Regex("sources: \\[\"(.*?)\"\\]").find(document.html())?.groupValues?.get(1).toString() // direct mp4 link, https://m5.vudeo.net/2vp3xgpw2avjdohilpfbtyuxzzrqzuh4z5yxvztral5k3rjnba6f4byj3saa/v.mp4 for exemple
|
||||||
|
return vudoUrl
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun loadLinks(
|
||||||
|
data: String,
|
||||||
|
isCasting: Boolean,
|
||||||
|
subtitleCallback: (SubtitleFile) -> Unit,
|
||||||
|
callback: (ExtractorLink) -> Unit
|
||||||
|
): Boolean {
|
||||||
|
if (data == "") return false
|
||||||
|
|
||||||
|
val response = get(data).text
|
||||||
|
val document = Jsoup.parse(response)
|
||||||
|
val players = document.select("ul.TPlayerNv > li")
|
||||||
|
var number_player = Regex(".*trembed=(.*?)&").find(document.html())?.groupValues?.get(1)!!.toInt() // the starting trembed number of the first player website, some start at 0 other at 1
|
||||||
|
var found = false
|
||||||
|
for (player in players) {
|
||||||
|
if (player.selectFirst("> span").text() == "Vudeo") {
|
||||||
|
found = true
|
||||||
|
break
|
||||||
|
} else {
|
||||||
|
number_player += 1
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (found == false) {
|
||||||
|
number_player = 1
|
||||||
|
}
|
||||||
|
val i = number_player.toString()
|
||||||
|
val trid = Regex("iframe .*trid=(.*?)&").find(document.html())?.groupValues?.get(1)
|
||||||
|
|
||||||
|
val data = getDirect("$mainUrl/?trembed=$i&trid=$trid&trtype=2")
|
||||||
|
callback.invoke(
|
||||||
|
ExtractorLink(
|
||||||
|
this.name,
|
||||||
|
this.name,
|
||||||
|
data,
|
||||||
|
"",
|
||||||
|
Qualities.P720.value,
|
||||||
|
false
|
||||||
|
)
|
||||||
|
)
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
override fun load(url: String): LoadResponse {
|
||||||
|
val response = get(url).text
|
||||||
|
val document = Jsoup.parse(response)
|
||||||
|
val title = document?.selectFirst(".Title")?.text()?.replace("Regarder Serie ","")?.replace(" En Streaming", "")
|
||||||
|
?: throw ErrorLoadingException("Service might be unavailable")
|
||||||
|
|
||||||
|
|
||||||
|
val year = document.select("span.Date").text()?.toIntOrNull()
|
||||||
|
|
||||||
|
val rating = document.select("span.AAIco-star").text()?.toIntOrNull()
|
||||||
|
|
||||||
|
val duration = document.select("span.Time").text()?.toIntOrNull()
|
||||||
|
|
||||||
|
val backgroundPoster = document.selectFirst("div.Image > figure > img").attr("src").replace("//image", "https://image")
|
||||||
|
|
||||||
|
val descript = document.selectFirst("div.Description > p").text()
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
val list = ArrayList<Int>()
|
||||||
|
|
||||||
|
// episode begin
|
||||||
|
document.select(".Wdgt").forEach { element ->
|
||||||
|
val season = element.selectFirst("> .AA-Season > span")?.text()?.toIntOrNull()
|
||||||
|
if (season != null && season > 0) {
|
||||||
|
list.add(season)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (list.isEmpty()) throw ErrorLoadingException("No Seasons Found")
|
||||||
|
|
||||||
|
val episodeList = ArrayList<TvSeriesEpisode>()
|
||||||
|
|
||||||
|
for (season in list) {
|
||||||
|
val episodes = document.select("table > tbody > tr")
|
||||||
|
if (episodes.isNotEmpty()) {
|
||||||
|
episodes.forEach { episode ->
|
||||||
|
val epNum = episode.selectFirst("> span.Num")?.text()?.toIntOrNull()
|
||||||
|
val poster = episode.selectFirst("> td.MvTbImg > a > img")?.attr("src")?.replace("//image", "https://image")
|
||||||
|
val aName = episode.selectFirst("> td.MvTbTtl > a")
|
||||||
|
val date = episode.selectFirst("> td.MvTbTtl > span")?.text()?.toString()
|
||||||
|
val name = aName.text()
|
||||||
|
val href = aName.attr("href")
|
||||||
|
episodeList.add(
|
||||||
|
TvSeriesEpisode(
|
||||||
|
name,
|
||||||
|
season,
|
||||||
|
epNum,
|
||||||
|
href,
|
||||||
|
poster,
|
||||||
|
date
|
||||||
|
)
|
||||||
|
)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return TvSeriesLoadResponse(
|
||||||
|
title,
|
||||||
|
url,
|
||||||
|
this.name,
|
||||||
|
TvType.TvSeries,
|
||||||
|
episodeList,
|
||||||
|
backgroundPoster,
|
||||||
|
year,
|
||||||
|
descript,
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
rating
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
|
@ -17,14 +17,12 @@
|
||||||
<string name="result_open_in_browser">Ouvrir dans le naviguateur</string>
|
<string name="result_open_in_browser">Ouvrir dans le naviguateur</string>
|
||||||
<string name="skip_loading">Passer le chargement</string>
|
<string name="skip_loading">Passer le chargement</string>
|
||||||
<string name="loading_chromecast">Chargement…</string>
|
<string name="loading_chromecast">Chargement…</string>
|
||||||
|
|
||||||
<string name="type_watching">En visionnage</string>
|
<string name="type_watching">En visionnage</string>
|
||||||
<string name="type_on_hold">En pose</string>
|
<string name="type_on_hold">En pose</string>
|
||||||
<string name="type_completed">Terminé</string>
|
<string name="type_completed">Terminé</string>
|
||||||
<string name="type_dropped">Abandonné</string>
|
<string name="type_dropped">Abandonné</string>
|
||||||
<string name="type_plan_to_watch">A regarder</string>
|
<string name="type_plan_to_watch">A regarder</string>
|
||||||
<string name="type_none">Aucun</string>
|
<string name="type_none">Aucun</string>
|
||||||
|
|
||||||
<string name="play_movie_button">Lire</string>
|
<string name="play_movie_button">Lire</string>
|
||||||
<string name="play_torrent_button">Streamer Torrent</string>
|
<string name="play_torrent_button">Streamer Torrent</string>
|
||||||
<string name="pick_source">Sources</string>
|
<string name="pick_source">Sources</string>
|
||||||
|
@ -34,7 +32,6 @@
|
||||||
<string name="episode_poster_img_des">Miniature de l\'Episode</string>
|
<string name="episode_poster_img_des">Miniature de l\'Episode</string>
|
||||||
<string name="play_episode">Lire l\'Episode</string>
|
<string name="play_episode">Lire l\'Episode</string>
|
||||||
<string name="need_storage">Permet de télécharger les épisodes</string>
|
<string name="need_storage">Permet de télécharger les épisodes</string>
|
||||||
|
|
||||||
<string name="download">Télécharger</string>
|
<string name="download">Télécharger</string>
|
||||||
<string name="downloaded">Téléchargé</string>
|
<string name="downloaded">Téléchargé</string>
|
||||||
<string name="downloading">Téléchargement</string>
|
<string name="downloading">Téléchargement</string>
|
||||||
|
@ -43,18 +40,14 @@
|
||||||
<string name="download_failed">Echec du Téléchargement</string>
|
<string name="download_failed">Echec du Téléchargement</string>
|
||||||
<string name="download_canceled">Téléchargement Annulé</string>
|
<string name="download_canceled">Téléchargement Annulé</string>
|
||||||
<string name="download_done">Téléchargement Terminé</string>
|
<string name="download_done">Téléchargement Terminé</string>
|
||||||
|
|
||||||
<string name="error_loading_links_toast">Erreur lors du téléchargement des liens</string>
|
<string name="error_loading_links_toast">Erreur lors du téléchargement des liens</string>
|
||||||
<string name="download_storage_text">Stockage Interne</string>
|
<string name="download_storage_text">Stockage Interne</string>
|
||||||
|
|
||||||
<string name="app_dubbed_text">Dub</string>
|
<string name="app_dubbed_text">Dub</string>
|
||||||
<string name="app_subbed_text">Sub</string>
|
<string name="app_subbed_text">Sub</string>
|
||||||
|
|
||||||
<string name="popup_delete_file">Supprimer le fichier</string>
|
<string name="popup_delete_file">Supprimer le fichier</string>
|
||||||
<string name="popup_play_file">Lire le fichier</string>
|
<string name="popup_play_file">Lire le fichier</string>
|
||||||
<string name="popup_resume_download">Reprendre le téléchargement</string>
|
<string name="popup_resume_download">Reprendre le téléchargement</string>
|
||||||
<string name="popup_pause_download">Mettre en pause le téléchargement</string>
|
<string name="popup_pause_download">Mettre en pause le téléchargement</string>
|
||||||
|
|
||||||
<string name="pref_disable_acra">Désactiver le rapport de bug automatique</string>
|
<string name="pref_disable_acra">Désactiver le rapport de bug automatique</string>
|
||||||
<string name="home_more_info">Plus d\'informations</string>
|
<string name="home_more_info">Plus d\'informations</string>
|
||||||
<string name="home_expanded_hide">Cacher</string>
|
<string name="home_expanded_hide">Cacher</string>
|
||||||
|
@ -80,24 +73,19 @@
|
||||||
<string name="subs_font">Police</string>
|
<string name="subs_font">Police</string>
|
||||||
<string name="search_provider_text_providers">Rechercher en utilisant les fournisseurs</string>
|
<string name="search_provider_text_providers">Rechercher en utilisant les fournisseurs</string>
|
||||||
<string name="search_provider_text_types">Rechercher en utilisant les types</string>
|
<string name="search_provider_text_types">Rechercher en utilisant les types</string>
|
||||||
|
|
||||||
<string name="benene_count_text">%d Benenes données au dev</string>
|
<string name="benene_count_text">%d Benenes données au dev</string>
|
||||||
<string name="benene_count_text_none">Aucune Benenes donnée</string>
|
<string name="benene_count_text_none">Aucune Benenes donnée</string>
|
||||||
|
|
||||||
<string name="subs_auto_select_language">Séléction automatique de la langue</string>
|
<string name="subs_auto_select_language">Séléction automatique de la langue</string>
|
||||||
<string name="subs_download_languages">Télécharger les langues</string>
|
<string name="subs_download_languages">Télécharger les langues</string>
|
||||||
<string name="subs_hold_to_reset_to_default">Maintenir pour réinitialliser les valeurs par défault</string>
|
<string name="subs_hold_to_reset_to_default">Maintenir pour réinitialliser les valeurs par défault</string>
|
||||||
<string name="continue_watching">Continer à regarder</string>
|
<string name="continue_watching">Continer à regarder</string>
|
||||||
|
|
||||||
<string name="action_remove_watching">Supprimer</string>
|
<string name="action_remove_watching">Supprimer</string>
|
||||||
<string name="action_open_watching">Plus d\'info</string>
|
<string name="action_open_watching">Plus d\'info</string>
|
||||||
|
|
||||||
<string name="vpn_might_be_needed">Un VPN peut être requit pour que ce fournisseur fonctionne</string>
|
<string name="vpn_might_be_needed">Un VPN peut être requit pour que ce fournisseur fonctionne</string>
|
||||||
<string name="vpn_torrent">Ce fournisseur est un torrent, un VPN est recommendé</string>
|
<string name="vpn_torrent">Ce fournisseur est un torrent, un VPN est recommendé</string>
|
||||||
<string name="torrent_plot">Description</string>
|
<string name="torrent_plot">Description</string>
|
||||||
<string name="normal_no_plot">Aucune description trouvée</string>
|
<string name="normal_no_plot">Aucune description trouvée</string>
|
||||||
<string name="torrent_no_plot">Aucune description trouvée</string>
|
<string name="torrent_no_plot">Aucune description trouvée</string>
|
||||||
|
|
||||||
<string name="picture_in_picture">Lecteur en mode Picture-in-Picture</string>
|
<string name="picture_in_picture">Lecteur en mode Picture-in-Picture</string>
|
||||||
<string name="picture_in_picture_des">Continuer la lecture dans une fenêtre miniature en superposition sur d\'autres applis</string>
|
<string name="picture_in_picture_des">Continuer la lecture dans une fenêtre miniature en superposition sur d\'autres applis</string>
|
||||||
<string name="player_size_settings">Boutton de redimentionnement du lecteur</string>
|
<string name="player_size_settings">Boutton de redimentionnement du lecteur</string>
|
||||||
|
@ -128,29 +116,24 @@
|
||||||
<string name="discord">Rejoindre le serveur Discord</string>
|
<string name="discord">Rejoindre le serveur Discord</string>
|
||||||
<string name="benene">Donner une benene aux devs</string>
|
<string name="benene">Donner une benene aux devs</string>
|
||||||
<string name="benene_des">benenes données</string>
|
<string name="benene_des">benenes données</string>
|
||||||
|
|
||||||
<string name="app_language">Language de l\'application</string>
|
<string name="app_language">Language de l\'application</string>
|
||||||
|
|
||||||
<string name="no_chomecast_support_toast">Ce fournisseur ne supporte pas le Chromecast</string>
|
<string name="no_chomecast_support_toast">Ce fournisseur ne supporte pas le Chromecast</string>
|
||||||
<string name="no_links_found_toast">Aucun lien trouvé</string>
|
<string name="no_links_found_toast">Aucun lien trouvé</string>
|
||||||
<string name="copy_link_toast">Lien copié dans le presse-papiers</string>
|
<string name="copy_link_toast">Lien copié dans le presse-papiers</string>
|
||||||
<string name="play_episode_toast">Lecture de l\'episode</string>
|
<string name="play_episode_toast">Lecture de l\'episode</string>
|
||||||
<string name="subs_default_reset_toast">Réinitialiser aux valeurs par défault</string>
|
<string name="subs_default_reset_toast">Réinitialiser aux valeurs par défault</string>
|
||||||
<string name="acra_report_toast">Désolé, l\'application à crashé. Un rapport de bug anonyme va être envoyé aux devloppeurs</string>
|
<string name="acra_report_toast">Désolé, l\'application à crashé. Un rapport de bug anonyme va être envoyé aux devloppeurs</string>
|
||||||
|
|
||||||
<string name="season">Saison</string>
|
<string name="season">Saison</string>
|
||||||
<string name="no_season">Pas de Saison</string>
|
<string name="no_season">Pas de Saison</string>
|
||||||
<string name="episode">Episode</string>
|
<string name="episode">Episode</string>
|
||||||
<string name="episodes">Episodes</string>
|
<string name="episodes">Episodes</string>
|
||||||
<string name="season_short">S</string>
|
<string name="season_short">S</string>
|
||||||
<string name="episode_short">E</string>
|
<string name="episode_short">E</string>
|
||||||
|
|
||||||
<string name="delete_file">Supprimer le Fichier</string>
|
<string name="delete_file">Supprimer le Fichier</string>
|
||||||
<string name="delete">Supprimer</string>
|
<string name="delete">Supprimer</string>
|
||||||
<string name="pause">Pause</string>
|
<string name="pause">Pause</string>
|
||||||
<string name="resume">Reprendre</string>
|
<string name="resume">Reprendre</string>
|
||||||
<string name="delete_message">Cela va supprimer définitivement %s\nÊtes vous sûr ?</string>
|
<string name="delete_message">Cela va supprimer définitivement %s\nÊtes vous sûr ?</string>
|
||||||
|
|
||||||
<string name="status_ongoing">En cours</string>
|
<string name="status_ongoing">En cours</string>
|
||||||
<string name="status_completed">Terminé</string>
|
<string name="status_completed">Terminé</string>
|
||||||
<string name="status">Status</string>
|
<string name="status">Status</string>
|
||||||
|
@ -159,27 +142,22 @@
|
||||||
<string name="duration">Durée</string>
|
<string name="duration">Durée</string>
|
||||||
<string name="site">Site</string>
|
<string name="site">Site</string>
|
||||||
<string name="synopsis">Synopsis</string>
|
<string name="synopsis">Synopsis</string>
|
||||||
|
|
||||||
<string name="queued">Liste d\'attente</string>
|
<string name="queued">Liste d\'attente</string>
|
||||||
<string name="no_subtitles">Pas de sous-titres</string>
|
<string name="no_subtitles">Pas de sous-titres</string>
|
||||||
<string name="default_subtitles">Défault</string>
|
<string name="default_subtitles">Défault</string>
|
||||||
|
|
||||||
<string name="free_storage">Libre</string>
|
<string name="free_storage">Libre</string>
|
||||||
<string name="used_storage">Utilisé</string>
|
<string name="used_storage">Utilisé</string>
|
||||||
<string name="app_storage">Application</string>
|
<string name="app_storage">Application</string>
|
||||||
|
|
||||||
<string name="movies">Films</string>
|
<string name="movies">Films</string>
|
||||||
<string name="tv_series">Séries TV</string>
|
<string name="tv_series">Séries TV</string>
|
||||||
<string name="cartoons">Dessin animés</string>
|
<string name="cartoons">Dessin animés</string>
|
||||||
<string name="anime">Animés</string>
|
<string name="anime">Animés</string>
|
||||||
<string name="torrent">Torrents</string>
|
<string name="torrent">Torrents</string>
|
||||||
|
|
||||||
<string name="source_error">Erreur de la source</string>
|
<string name="source_error">Erreur de la source</string>
|
||||||
<string name="remote_error">Erreur distante</string>
|
<string name="remote_error">Erreur distante</string>
|
||||||
<string name="render_error">Erreur d\'affichage</string>
|
<string name="render_error">Erreur d\'affichage</string>
|
||||||
<string name="unexpected_error">Erreur innatendue du lecteur</string>
|
<string name="unexpected_error">Erreur innatendue du lecteur</string>
|
||||||
<string name="storage_error">Erreur du téléchargement, vérifier l\'autorisation du stockage</string>
|
<string name="storage_error">Erreur du téléchargement, vérifier l\'autorisation du stockage</string>
|
||||||
|
|
||||||
<string name="episode_action_chomecast_episode">Episode Chromecast</string>
|
<string name="episode_action_chomecast_episode">Episode Chromecast</string>
|
||||||
<string name="episode_action_chomecast_mirror">Miroir Chromecast</string>
|
<string name="episode_action_chomecast_mirror">Miroir Chromecast</string>
|
||||||
<string name="episode_action_play_in_app">Lecture dans l\'application</string>
|
<string name="episode_action_play_in_app">Lecture dans l\'application</string>
|
||||||
|
@ -189,15 +167,39 @@
|
||||||
<string name="episode_action_auto_download">Téléchargement Automatique</string>
|
<string name="episode_action_auto_download">Téléchargement Automatique</string>
|
||||||
<string name="episode_action_download_mirror">Télécharger depuis le miroir</string>
|
<string name="episode_action_download_mirror">Télécharger depuis le miroir</string>
|
||||||
<string name="episode_action_reload_links">Recharger les liens</string>
|
<string name="episode_action_reload_links">Recharger les liens</string>
|
||||||
|
|
||||||
<string name="no_update_found">Pas de mise-à-jour trouvés</string>
|
<string name="no_update_found">Pas de mise-à-jour trouvés</string>
|
||||||
<string name="check_for_update">Vérifier les mise-à-jour</string>
|
<string name="check_for_update">Vérifier les mise-à-jour</string>
|
||||||
|
|
||||||
<string name="video_lock">Verouiller</string>
|
<string name="video_lock">Verouiller</string>
|
||||||
<string name="video_aspect_ratio_resize">Redimensionner</string>
|
<string name="video_aspect_ratio_resize">Redimensionner</string>
|
||||||
<string name="video_source">Source</string>
|
<string name="video_source">Source</string>
|
||||||
<string name="video_skip_op">Passer l\'OP</string>
|
<string name="video_skip_op">Passer l\'OP</string>
|
||||||
|
|
||||||
<string name="dont_show_again">Ne pas afficher à nouveau</string>
|
<string name="dont_show_again">Ne pas afficher à nouveau</string>
|
||||||
<string name="update">Mettre à jour</string>
|
<string name="update">Mettre à jour</string>
|
||||||
|
<string name="dns_pref_summary">Utile pour contourner les bloquages des FAI</string>
|
||||||
|
<string name="new_update_format" formatted="true">Nouvelle mise à jour trouvée !
|
||||||
|
\n%s -> %s</string>
|
||||||
|
<string name="filler_format" formatted="true">(Épisode spécial) %s</string>
|
||||||
|
<string name="watch_quality_pref">Qualité de visionnage préférée</string>
|
||||||
|
<string name="resize_fill">Étendre</string>
|
||||||
|
<string name="legal_notice">Non-responsabilité</string>
|
||||||
|
<string name="primary_color_settings">Couleur principale</string>
|
||||||
|
<string name="app_theme_settings">Thème de l\'application</string>
|
||||||
|
<string name="player_speed_text_format" formatted="true">Vitesse (%.2fx)</string>
|
||||||
|
<string name="use_system_brightness_settings">Utiliser la luminosité du système</string>
|
||||||
|
<string name="general">Général</string>
|
||||||
|
<string name="dns_pref">DNS avec HTTPS</string>
|
||||||
|
<string name="display_subbed_dubbed_settings">Afficher les animés en Anglais (Dub) / sous-titrés</string>
|
||||||
|
<string name="phone_layout">Disposition en mode téléphone</string>
|
||||||
|
<string name="app_dub_sub_episode_text_format">%s Ep %d</string>
|
||||||
|
<string name="rated_format" formatted="true">Note : %.1f</string>
|
||||||
|
<string name="subs_font_size">Taille de la police</string>
|
||||||
|
<string name="use_system_brightness_settings_des">Utiliser la luminosité du système dans le lecteur de l\'application au lieu d\'un écran noir</string>
|
||||||
|
<string name="show_fillers_settings">Afficher les épisodes spéciaux pour les animés</string>
|
||||||
|
<string name="resize_zoom">Zoom</string>
|
||||||
|
<string name="resize_fit">Adapter à l\'écran</string>
|
||||||
|
<string name="app_layout">Disposition de l\'application</string>
|
||||||
|
<string name="tv_layout">Disposition TV</string>
|
||||||
|
<string name="provider_lang_settings">Language des fournisseurs</string>
|
||||||
|
<string name="preferred_media_settings">Médias préfères</string>
|
||||||
|
<string name="automatic">Auto</string>
|
||||||
</resources>
|
</resources>
|
||||||
|
|
Loading…
Reference in a new issue