added search by text option [Vostfree] (#363)
* New source [HentaiLA] * Fix ok.ru server and add Mytv extractor * Update version [Vostfree] * added search by text option [VostFree]
This commit is contained in:
committed by
GitHub
parent
a27498bbc5
commit
4deaaa7f3e
@ -5,7 +5,7 @@ ext {
|
||||
extName = 'Vostfree'
|
||||
pkgNameSuffix = 'fr.vostfree'
|
||||
extClass = '.Vostfree'
|
||||
extVersionCode = 2
|
||||
extVersionCode = 3
|
||||
libVersion = '12'
|
||||
}
|
||||
|
||||
|
@ -12,20 +12,26 @@ import eu.kanade.tachiyomi.animeextension.fr.vostfree.extractors.VudeoExtractor
|
||||
import eu.kanade.tachiyomi.animesource.ConfigurableAnimeSource
|
||||
import eu.kanade.tachiyomi.animesource.model.AnimeFilter
|
||||
import eu.kanade.tachiyomi.animesource.model.AnimeFilterList
|
||||
import eu.kanade.tachiyomi.animesource.model.AnimesPage
|
||||
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.POST
|
||||
import eu.kanade.tachiyomi.util.asJsoup
|
||||
import kotlinx.serialization.json.Json
|
||||
import okhttp3.FormBody
|
||||
import okhttp3.OkHttpClient
|
||||
import okhttp3.Request
|
||||
import okhttp3.Response
|
||||
import org.jsoup.Connection
|
||||
import org.jsoup.Jsoup
|
||||
import org.jsoup.nodes.Document
|
||||
import org.jsoup.nodes.Element
|
||||
import uy.kohesive.injekt.Injekt
|
||||
import uy.kohesive.injekt.api.get
|
||||
import uy.kohesive.injekt.injectLazy
|
||||
import java.lang.Exception
|
||||
|
||||
class Vostfree : ConfigurableAnimeSource, ParsedAnimeHttpSource() {
|
||||
@ -36,6 +42,8 @@ class Vostfree : ConfigurableAnimeSource, ParsedAnimeHttpSource() {
|
||||
|
||||
override val lang = "fr"
|
||||
|
||||
private val json: Json by injectLazy()
|
||||
|
||||
override val supportsLatest = false
|
||||
|
||||
override val client: OkHttpClient = network.cloudflareClient
|
||||
@ -52,10 +60,10 @@ class Vostfree : ConfigurableAnimeSource, ParsedAnimeHttpSource() {
|
||||
Log.i("bruh", "${element.baseUri()}")
|
||||
val anime = SAnime.create()
|
||||
anime.setUrlWithoutDomain(
|
||||
element.select("div.play a").attr("href")
|
||||
element.select("div.movie-poster div.play a").attr("href")
|
||||
)
|
||||
anime.title = element.select("div.info.hidden div.title").text()
|
||||
anime.thumbnail_url = baseUrl + element.select("span.image img").attr("src")
|
||||
anime.title = element.select("div.movie-poster div.info.hidden div.title").text()
|
||||
anime.thumbnail_url = baseUrl + element.select("div.movie-poster span.image img").attr("src")
|
||||
return anime
|
||||
}
|
||||
|
||||
@ -163,30 +171,60 @@ class Vostfree : ConfigurableAnimeSource, ParsedAnimeHttpSource() {
|
||||
|
||||
override fun searchAnimeRequest(page: Int, query: String, filters: AnimeFilterList): Request {
|
||||
val filterList = if (filters.isEmpty()) getFilterList() else filters
|
||||
val typeFilter = filterList.find { it is TypeFilter } as TypeFilter
|
||||
val genreFilter = filterList.find { it is GenreFilter } as GenreFilter
|
||||
val typeFilter = filterList.find { it is TypeFilter } as TypeFilter
|
||||
|
||||
return if (typeFilter.state != 0) {
|
||||
GET("https://vostfree.tv/${typeFilter.toUriPart()}/page/$page/")
|
||||
} else {
|
||||
if (query.isNotBlank()) {
|
||||
throw Exception("Recherche non prise en charge")
|
||||
} else {
|
||||
if (genreFilter.state != 0) {
|
||||
GET("https://vostfree.tv/genre/${genreFilter.toUriPart()}/page/$page/")
|
||||
} else {
|
||||
GET("https://vostfree.tv/films-vf-vostfr/page/$page/")
|
||||
}
|
||||
}
|
||||
val formData = FormBody.Builder()
|
||||
.addEncoded("do", "search")
|
||||
.addEncoded("subaction", "search")
|
||||
.addEncoded("search_start", "0")
|
||||
.addEncoded("full_search", "0")
|
||||
.addEncoded("result_from", "1")
|
||||
.addEncoded("story", "$query")
|
||||
.build()
|
||||
|
||||
val test = Jsoup.connect("https://vostfree.tv/index.php?do=search").method(Connection.Method.POST).data("do", "search").data("subaction", "search").data("search_start", "0").data("full_search", "0").data("result_from", "1").data("story", "$query").get()
|
||||
|
||||
return when {
|
||||
query.isNotBlank() && test.select("div.search-result").toString() != "" -> POST("https://vostfree.tv/index.php?do=search", headers, formData)
|
||||
genreFilter.state != 0 -> GET("$baseUrl/genre/${genreFilter.toUriPart()}/page/$page/")
|
||||
typeFilter.state != 0 -> GET("https://vostfree.tv/${typeFilter.toUriPart()}/page/$page/")
|
||||
else -> GET("https://vostfree.tv/animes-vostfr/page/$page/")
|
||||
}
|
||||
}
|
||||
|
||||
override fun searchAnimeParse(response: Response): AnimesPage {
|
||||
val document = response.asJsoup()
|
||||
val animeList = document.select("div.search-result")
|
||||
val animeList2 = document.select("div.movie-poster")
|
||||
val animes = animeList.map {
|
||||
searchAnimeFromElement(it)
|
||||
} + animeList2.map {
|
||||
searchAnimeFromElement(it)
|
||||
}
|
||||
return AnimesPage(animes, false)
|
||||
}
|
||||
|
||||
override fun searchAnimeFromElement(element: Element): SAnime {
|
||||
return popularAnimeFromElement(element)
|
||||
return when {
|
||||
element.select("div.search-result").toString() != "" -> searchPopularAnimeFromElement(element)
|
||||
else -> popularAnimeFromElement(element)
|
||||
}
|
||||
}
|
||||
|
||||
private fun searchPopularAnimeFromElement(element: Element): SAnime {
|
||||
val anime = SAnime.create()
|
||||
anime.setUrlWithoutDomain(
|
||||
element.select("div.search-result div.info div.title a").attr("href")
|
||||
)
|
||||
anime.title = element.select("div.search-result div.info div.title a").text()
|
||||
anime.thumbnail_url = baseUrl + element.select("div.search-result span.image img").attr("src")
|
||||
return anime
|
||||
}
|
||||
|
||||
override fun searchAnimeNextPageSelector(): String = popularAnimeNextPageSelector()
|
||||
|
||||
override fun searchAnimeSelector(): String = popularAnimeSelector()
|
||||
override fun searchAnimeSelector(): String = "div#dle-content"
|
||||
|
||||
override fun animeDetailsParse(document: Document): SAnime {
|
||||
val anime = SAnime.create()
|
||||
|
Reference in New Issue
Block a user