diff --git a/MaciptvProvider/src/main/kotlin/com/lagradost/MacIPTVProvider.kt b/MaciptvProvider/src/main/kotlin/com/lagradost/MacIPTVProvider.kt index 0377d65..3903744 100644 --- a/MaciptvProvider/src/main/kotlin/com/lagradost/MacIPTVProvider.kt +++ b/MaciptvProvider/src/main/kotlin/com/lagradost/MacIPTVProvider.kt @@ -12,17 +12,17 @@ import me.xdrop.fuzzywuzzy.FuzzySearch class MacIPTVProvider(override var lang: String) : MainAPI() { private val defaulmac_adresse = - "mac=00:1a:79:ae:2a:30" + "mac=00:1A:79:aa:53:65" private val defaultmainUrl = - "http://ultra-box.club/c/" - var defaultname = "BoxIPTV-MatrixOTT |${lang.uppercase()}|" + "http://ky-iptv.com:25461/portalstb" + var defaultname = "ky-iptv |${lang.uppercase()}|" override var name = "Box Iptv |${lang.uppercase()}|" override val hasQuickSearch = false override val hasMainPage = true override val supportedTypes = setOf(TvType.Live) // live - private var init = false + private var firstInitDone = false private var key: String? = "" companion object { @@ -31,53 +31,61 @@ class MacIPTVProvider(override var lang: String) : MainAPI() { var overrideUrl: String? = null } + private fun accountInfoNotGood(url: String, mac: String?): Boolean { + return url.uppercase().trim() == "NONE" || url.isBlank() || mac?.uppercase() + ?.trim() == "NONE" || mac.isNullOrBlank() + } + private suspend fun getAuthHeader(): Map { mainUrl = overrideUrl.toString() - val main = mainUrl.uppercase().trim() - val localCredentials = loginMac - val mac = localCredentials?.uppercase()?.trim() - - if (main == "NONE" || main.isBlank() || mac == "NONE" || mac.isNullOrBlank()) { - mainUrl = defaultmainUrl - name = defaultname - - if (!init) { - val url_key = "$mainUrl/portal.php?type=stb&action=handshake&JsHttpRequest=1-xml" - val reponseGetkey = app.get( - url_key, headers = mapOf( - "Cookie" to defaulmac_adresse, - "User-Agent" to "Mozilla/5.0 (QtEmbedded; U; Linux; C) AppleWebKit/533.3 (KHTML, like Gecko) MAG200 stbapp ver: 2 rev: 250 Safari/533.3", - ) - ) - val keyJson = reponseGetkey.parsed() - key = keyJson.js?.token - } - init = true - return mapOf( - "Cookie" to defaulmac_adresse, - "User-Agent" to "Mozilla/5.0 (QtEmbedded; U; Linux; C) AppleWebKit/533.3 (KHTML, like Gecko) MAG200 stbapp ver: 2 rev: 250 Safari/533.3", - "Authorization" to "Bearer $key", - ) - } name = (companionName ?: name) + " |${lang.uppercase()}|" - if (!init) { - val url_key = "$mainUrl/portal.php?type=stb&action=handshake&JsHttpRequest=1-xml" - val reponseGetkey = app.get( - url_key, headers = mapOf( + val localCredentials = loginMac + when (true) { + accountInfoNotGood(mainUrl, localCredentials) -> { + mainUrl = defaultmainUrl + name = defaultname + if (!firstInitDone) { + val url_key = + "$mainUrl/portal.php?type=stb&action=handshake&JsHttpRequest=1-xml" + val reponseGetkey = app.get( + url_key, headers = mapOf( + "Cookie" to defaulmac_adresse, + "User-Agent" to "Mozilla/5.0 (QtEmbedded; U; Linux; C) AppleWebKit/533.3 (KHTML, like Gecko) MAG200 stbapp ver: 2 rev: 250 Safari/533.3", + ) + ) + val keyJson = reponseGetkey.parsed() + key = keyJson.js?.token + } + firstInitDone = true + return mapOf( + "Cookie" to defaulmac_adresse, + "User-Agent" to "Mozilla/5.0 (QtEmbedded; U; Linux; C) AppleWebKit/533.3 (KHTML, like Gecko) MAG200 stbapp ver: 2 rev: 250 Safari/533.3", + "Authorization" to "Bearer $key", + ) + } + else -> { + if (!firstInitDone) { + val url_key = + "$mainUrl/portal.php?type=stb&action=handshake&JsHttpRequest=1-xml" + val reponseGetkey = app.get( + url_key, headers = mapOf( + "Cookie" to "mac=$localCredentials", + "User-Agent" to "Mozilla/5.0 (QtEmbedded; U; Linux; C) AppleWebKit/533.3 (KHTML, like Gecko) MAG200 stbapp ver: 2 rev: 250 Safari/533.3", + ) + ) + val keyJson = reponseGetkey.parsed() + key = keyJson.js?.token + } + firstInitDone = true + return mapOf( "Cookie" to "mac=$localCredentials", "User-Agent" to "Mozilla/5.0 (QtEmbedded; U; Linux; C) AppleWebKit/533.3 (KHTML, like Gecko) MAG200 stbapp ver: 2 rev: 250 Safari/533.3", + "Authorization" to "Bearer $key", ) - ) - val keyJson = reponseGetkey.parsed() - key = keyJson.js?.token + } } - init = true - return mapOf( - "Cookie" to "mac=$localCredentials", - "User-Agent" to "Mozilla/5.0 (QtEmbedded; U; Linux; C) AppleWebKit/533.3 (KHTML, like Gecko) MAG200 stbapp ver: 2 rev: 250 Safari/533.3", - "Authorization" to "Bearer $key", - ) + } @@ -169,18 +177,18 @@ class MacIPTVProvider(override var lang: String) : MainAPI() { override suspend fun load(url: String): LoadResponse { - var link = "" - var title = "" + var link = url + var title = "Your channel" var posterUrl = "" - var description = "" - val header = getAuthHeader() + var description = "The program for this channel was not found" val allresultshome: MutableList = mutableListOf() + val headerIPTV = getAuthHeader() for (media in arraymediaPlaylist) { val keyId = "/-${media.id}-" if (url.contains(keyId) || url == media.url) { val epg_url = - "$mainUrl/portal.php?type=itv&action=get_short_epg&ch_id=${media.ch_id}&size=10&JsHttpRequest=1-xml" // descriptif - val response = app.get(epg_url, headers = header) + "$mainUrl/portal.php?type=itv&action=get_short_epg&ch_id=${media.ch_id}&size=10&JsHttpRequest=1-xml" // plot + val response = app.get(epg_url, headers = headerIPTV) description = getEpg(response.text) link = media.url title = media.title @@ -284,8 +292,8 @@ class MacIPTVProvider(override var lang: String) : MainAPI() { var link: String var lien: String runBlocking { - val header = getAuthHeader() - val getTokenLink = app.get(TokenLink, headers = header).text + val headerIPTV = getAuthHeader() + val getTokenLink = app.get(TokenLink, headers = headerIPTV).text val regexGetLink = Regex("""(http.*)\"\},""") link = regexGetLink.find(getTokenLink)?.groupValues?.get(1).toString() .replace( @@ -323,11 +331,10 @@ class MacIPTVProvider(override var lang: String) : MainAPI() { subtitleCallback: (SubtitleFile) -> Unit, callback: (ExtractorLink) -> Unit, ): Boolean { - - val header = getAuthHeader() + val headerIPTV = getAuthHeader() val TokenLink = "$mainUrl/portal.php?type=itv&action=create_link&cmd=ffmpeg%20$data&series=&forced_storage=0&disable_ad=0&download=0&force_ch_link_check=0&JsHttpRequest=1-xml" - val getTokenLink = app.get(TokenLink, headers = header).text + val getTokenLink = app.get(TokenLink, headers = headerIPTV).text val regexGetLink = Regex("""(http.*)\"\},""") val link = regexGetLink.find(getTokenLink)?.groupValues?.get(1).toString().replace("""\""", "") @@ -354,7 +361,7 @@ class MacIPTVProvider(override var lang: String) : MainAPI() { lien = redirectlink } } - val isM3u8 = false// lien.contains("extension=ts") + val isM3u8 = false callback.invoke( ExtractorLink( name, @@ -590,10 +597,8 @@ class MacIPTVProvider(override var lang: String) : MainAPI() { val rgxcodeCountry = findKeyWord(codeCountry) val arrayHomepage = arrayListOf() override suspend fun getMainPage(page: Int, request: MainPageRequest): HomePageResponse { - - - if (!init) { - val header = getAuthHeader() + if (!firstInitDone) { + val headerIPTV = getAuthHeader() val url_info = "$mainUrl/portal.php?type=account_info&action=get_main_info&JsHttpRequest=1-xml" val urlGetGenre = @@ -609,7 +614,7 @@ class MacIPTVProvider(override var lang: String) : MainAPI() { urlGetGenre, urlGetallchannels ).apmap { url -> - val response = app.get(url, headers = header) + val response = app.get(url, headers = headerIPTV) when (true) { url.contains("action=get_main_info") -> { reponseGetInfo = response @@ -743,3 +748,4 @@ class MacIPTVProvider(override var lang: String) : MainAPI() { }) } } + diff --git a/MaciptvProvider/src/main/kotlin/com/lagradost/MacIptvAPI.kt b/MaciptvProvider/src/main/kotlin/com/lagradost/MacIptvAPI.kt index b995e62..fc0f897 100644 --- a/MaciptvProvider/src/main/kotlin/com/lagradost/MacIptvAPI.kt +++ b/MaciptvProvider/src/main/kotlin/com/lagradost/MacIptvAPI.kt @@ -3,7 +3,6 @@ package com.lagradost import com.lagradost.cloudstream3.AcraApplication.Companion.getKey import com.lagradost.cloudstream3.AcraApplication.Companion.setKey import com.lagradost.cloudstream3.R -import com.lagradost.cloudstream3.syncproviders.AccountManager import com.lagradost.cloudstream3.syncproviders.AuthAPI import com.lagradost.cloudstream3.syncproviders.InAppAuthAPI import com.lagradost.cloudstream3.syncproviders.InAppAuthAPIManager @@ -36,7 +35,7 @@ class MacIptvAPI(index: Int) : InAppAuthAPIManager(index) { setKey(accountId, IPTVBOX_USER_KEY, data) registerAccount() initialize() - AccountManager.inAppAuths + inAppAuths return true } diff --git a/MaciptvProvider/src/main/kotlin/com/lagradost/MacIptvSettingsFragment.kt b/MaciptvProvider/src/main/kotlin/com/lagradost/MacIptvSettingsFragment.kt index 98c0270..97df0e4 100644 --- a/MaciptvProvider/src/main/kotlin/com/lagradost/MacIptvSettingsFragment.kt +++ b/MaciptvProvider/src/main/kotlin/com/lagradost/MacIptvSettingsFragment.kt @@ -54,7 +54,7 @@ class MacIptvSettingsFragment(private val plugin: Plugin, val maciptvAPI: MacIpt val infoSubTextView = view.findView("info_sub_text") val infoImageView = view.findView("nginx_info_imageview") - infoTextView.text = getString("nginx_info_title") ?: "Nginx" + infoTextView.text = getString("nginx_info_title") ?: "MacIPTV" infoSubTextView.text = getString("nginx_info_summary") ?: "" infoImageView.setImageDrawable(getDrawable("nginx_question")) infoImageView.imageTintList =