From 4f36332f4f91f99c1d242489c5512e8b4ad248c0 Mon Sep 17 00:00:00 2001 From: Zaw <42999156+ImZaw@users.noreply.github.com> Date: Sat, 26 Nov 2022 18:58:18 +0300 Subject: [PATCH] moving nine to multi --- NineGoalProvider/build.gradle.kts | 12 -- NineGoalProvider/src/main/AndroidManifest.xml | 2 - .../main/kotlin/com/ninegoal/9GoalPlugin.kt | 12 -- .../main/kotlin/com/ninegoal/9GoalProvider.kt | 135 ------------------ 4 files changed, 161 deletions(-) delete mode 100644 NineGoalProvider/build.gradle.kts delete mode 100644 NineGoalProvider/src/main/AndroidManifest.xml delete mode 100644 NineGoalProvider/src/main/kotlin/com/ninegoal/9GoalPlugin.kt delete mode 100644 NineGoalProvider/src/main/kotlin/com/ninegoal/9GoalProvider.kt diff --git a/NineGoalProvider/build.gradle.kts b/NineGoalProvider/build.gradle.kts deleted file mode 100644 index fe7c8d0..0000000 --- a/NineGoalProvider/build.gradle.kts +++ /dev/null @@ -1,12 +0,0 @@ -version = 1 - -cloudstream { - description = "" - authors = listOf( "ImZaw" ) - - status = 1 - - tvTypes = listOf( "Live" ) - - iconUrl = "https://www.google.com/s2/favicons?domain=9goaltv.to&sz=%size%" -} \ No newline at end of file diff --git a/NineGoalProvider/src/main/AndroidManifest.xml b/NineGoalProvider/src/main/AndroidManifest.xml deleted file mode 100644 index 263556b..0000000 --- a/NineGoalProvider/src/main/AndroidManifest.xml +++ /dev/null @@ -1,2 +0,0 @@ - - \ No newline at end of file diff --git a/NineGoalProvider/src/main/kotlin/com/ninegoal/9GoalPlugin.kt b/NineGoalProvider/src/main/kotlin/com/ninegoal/9GoalPlugin.kt deleted file mode 100644 index c9a5e9e..0000000 --- a/NineGoalProvider/src/main/kotlin/com/ninegoal/9GoalPlugin.kt +++ /dev/null @@ -1,12 +0,0 @@ -package com.ninegoal - -import com.lagradost.cloudstream3.plugins.CloudstreamPlugin -import com.lagradost.cloudstream3.plugins.Plugin -import android.content.Context - -@CloudstreamPlugin -class NineGoalPlugin: Plugin() { - override fun load(context: Context) { - registerMainAPI(NineGoal()) - } -} \ No newline at end of file diff --git a/NineGoalProvider/src/main/kotlin/com/ninegoal/9GoalProvider.kt b/NineGoalProvider/src/main/kotlin/com/ninegoal/9GoalProvider.kt deleted file mode 100644 index f31a2f3..0000000 --- a/NineGoalProvider/src/main/kotlin/com/ninegoal/9GoalProvider.kt +++ /dev/null @@ -1,135 +0,0 @@ -package com.ninegoal - -import com.lagradost.cloudstream3.* -import com.lagradost.cloudstream3.utils.ExtractorLink -import com.fasterxml.jackson.annotation.JsonProperty -import com.lagradost.cloudstream3.utils.AppUtils.parseJson -import com.lagradost.cloudstream3.utils.Qualities -import java.util.* - -data class Data ( - @JsonProperty("id" ) var id : String? = null, - @JsonProperty("name" ) var name : String? = null, - @JsonProperty("slug" ) var slug : String? = null, - @JsonProperty("home" ) var home : Home? = Home(), - @JsonProperty("away" ) var away : Away? = Away(), - @JsonProperty("scores" ) var scores : Scores? = Scores(), - @JsonProperty("is_live" ) var isLive : Boolean? = null -) -data class Home ( - @JsonProperty("model_id" ) var modelId : String? = null, - @JsonProperty("name" ) var name : String? = null, - @JsonProperty("slug" ) var slug : String? = null, - @JsonProperty("logo" ) var logo : String? = null -) -data class Away ( - @JsonProperty("model_id" ) var modelId : String? = null, - @JsonProperty("name" ) var name : String? = null, - @JsonProperty("slug" ) var slug : String? = null, - @JsonProperty("logo" ) var logo : String? = null -) -data class Scores ( - @JsonProperty("home" ) var home : Int? = null, - @JsonProperty("away" ) var away : Int? = null -) -data class matchesJSON ( - @JsonProperty("data" ) var data : ArrayList = arrayListOf() -) -data class oneMatch ( - @JsonProperty("data" ) var data : Data? = Data() -) - - -data class PlayUrls ( - @JsonProperty("name" ) var name : String? = null, - @JsonProperty("cdn" ) var cdn : String? = null, - @JsonProperty("slug" ) var slug : String? = null, - @JsonProperty("url" ) var url : String? = null, - @JsonProperty("role" ) var role : String? = null -) -data class sourceData ( - @JsonProperty("id" ) var id : String? = null, - @JsonProperty("name" ) var name : String? = null, - @JsonProperty("slug" ) var slug : String? = null, - @JsonProperty("has_lineup" ) var hasLineup : Boolean? = null, - @JsonProperty("has_tracker" ) var hasTracker : Boolean? = null, - @JsonProperty("play_urls" ) var playUrls : ArrayList = arrayListOf() -) -data class sourcesJSON ( - @JsonProperty("data" ) var data : sourceData? = sourceData() -) -class NineGoal : MainAPI() { - override var mainUrl = "https://9goaltv.to" - override var name = "9Goal" - override var lang = "en" - override val hasDownloadSupport = false - override val hasMainPage = true - override val supportedTypes = setOf( - TvType.Live - ) - - private fun String.getDomainFromUrl(): String? { - return Regex("""^(?:https?:\/\/)?(?:[^@\n]+@)?(?:www\.)?([^:\/\n\?\=]+)""").find(this)?.groupValues?.firstOrNull() - } - - override suspend fun getMainPage(page: Int, request : MainPageRequest): HomePageResponse { - val doc = app.get(mainUrl).document - val apiUrl = doc.select("head > script").first()?.html()?.substringAfter("window.api_base_url = \"")?.substringBefore("\";") - val matchesData = parseJson(app.get("$apiUrl/v1/match/featured").text) - val liveHomePageList = matchesData.data.filter { it.isLive == true }.map { - LiveSearchResponse( - it.name.toString(), - apiUrl + "/v1/match/" + it.id, - this@NineGoal.name, - TvType.Live, - "https://img.zr5.repl.co/vs?title=${it.name}&home=${it.home?.logo}&away=${it.away?.logo}", - ) - } - val featuredHomePageList = matchesData.data.filter { it.isLive == false }.map { - LiveSearchResponse( - it.name.toString(), - apiUrl + "/v1/match/" + it.id, - this@NineGoal.name, - TvType.Live, - "https://img.zr5.repl.co/vs?title=${it.name}&home=${it.home?.logo}&away=${it.away?.logo}", - ) - } - return HomePageResponse( - arrayListOf( - HomePageList("Live", liveHomePageList, isHorizontalImages = true), - HomePageList("Featured", featuredHomePageList, isHorizontalImages = true) - ) - ) - } - - override suspend fun load(url: String): LoadResponse { - val json = parseJson(app.get(url).text).data - return LiveStreamLoadResponse( - json?.name.toString(), - url, - this.name, - "$url/stream", - ) - } - override suspend fun loadLinks( - data: String, - isCasting: Boolean, - subtitleCallback: (SubtitleFile) -> Unit, - callback: (ExtractorLink) -> Unit - ): Boolean { - val sourcesData = parseJson(app.get(data).text).data - sourcesData?.playUrls?.apmap { - callback.invoke( - ExtractorLink( - this.name, - "${this.name} ${it.name} - ${sourcesData.name}", - it.url.toString(), - fixUrl(it.url?.getDomainFromUrl().toString()), - Qualities.Unknown.value, - isM3u8 = true, - ) - ) - } - return true - } -}