diff --git a/MissAV/build.gradle.kts b/MissAV/build.gradle.kts index 8176cf60..85eeb493 100644 --- a/MissAV/build.gradle.kts +++ b/MissAV/build.gradle.kts @@ -1,4 +1,4 @@ -version = 8 +version = 9 cloudstream { authors = listOf("luck731") diff --git a/MissAV/src/main/kotlin/com/MissAV/MissAVProvider.kt b/MissAV/src/main/kotlin/com/MissAV/MissAVProvider.kt index 62d8fbcb..84ed8d46 100644 --- a/MissAV/src/main/kotlin/com/MissAV/MissAVProvider.kt +++ b/MissAV/src/main/kotlin/com/MissAV/MissAVProvider.kt @@ -13,6 +13,7 @@ class MissAVProvider : MainAPI() { override val hasChromecastSupport = true override val supportedTypes = setOf(TvType.NSFW) override val vpnStatus = VPNStatus.MightBeNeeded + val subtitleCatUrl = "https://www.subtitlecat.com" override val mainPage = mainPageOf( "/dm514/en/new" to "Recent Update", @@ -46,7 +47,7 @@ class MissAVProvider : MainAPI() { val searchResponse = mutableListOf() - for (i in 1..5) { + for (i in 1..7) { val document = app.get("$mainUrl/en/search/$query?page=$i").document //val document = app.get("${mainUrl}/page/$i/?s=$query").document @@ -82,7 +83,7 @@ class MissAVProvider : MainAPI() { override suspend fun load(url: String): LoadResponse { val document = app.get(url).document - val title = document.selectFirst("meta[property=og:title]")?.attr("content")?.trim().toString().replace("| PornHoarder.tv","") + val title = document.selectFirst("meta[property=og:title]")?.attr("content")?.trim().toString() val poster = fixUrlNull(document.selectFirst("[property='og:image']")?.attr("content")) val description = document.selectFirst("meta[property=og:description]")?.attr("content")?.trim() @@ -93,8 +94,11 @@ class MissAVProvider : MainAPI() { } override suspend fun loadLinks(data: String, isCasting: Boolean, subtitleCallback: (SubtitleFile) -> Unit, callback: (ExtractorLink) -> Unit): Boolean { - with(app.get(data)) { - getAndUnpack(this.text).let { unpackedText -> + + + val data = app.get(data) + val doc = data.document + getAndUnpack(data.text).let { unpackedText -> val linkList = unpackedText.split(";") val finalLink = "source='(.*)'".toRegex().find(linkList.first())?.groups?.get(1)?.value callback.invoke( @@ -109,7 +113,46 @@ class MissAVProvider : MainAPI() { } ) } - } + + try { + val title = doc.selectFirst("meta[property=og:title]")?.attr("content")?.trim().toString() + val javCode = "([a-zA-Z]+-\\d+)".toRegex().find(title)?.groups?.get(1)?.value + if(!javCode.isNullOrEmpty()) + { + val query = "$subtitleCatUrl/index.php?search=$javCode" + val subDoc = app.get(query, timeout = 15).document + val subList = subDoc.select("td a") + for(item in subList) + { + if(item.text().contains(javCode,ignoreCase = true)) + { + val fullUrl = "$subtitleCatUrl/${item.attr("href")}" + val pDoc = app.get(fullUrl, timeout = 10).document + val sList = pDoc.select(".col-md-6.col-lg-4") + for(item in sList) + { + try { + val language = item.select(".sub-single span:nth-child(2)").text() + val text = item.select(".sub-single span:nth-child(3) a") + if(text != null && text.size > 0 && text[0].text() == "Download") + { + val url = "$subtitleCatUrl${text[0].attr("href")}" + subtitleCallback.invoke( + SubtitleFile( + language.replace("\uD83D\uDC4D \uD83D\uDC4E",""), // Use label for the name + url // Use extracted URL + ) + ) + } + } catch (e: Exception) { } + } + + } + } + + } + } catch (e: Exception) { } + return true