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
- }
-}