mirror of
https://github.com/recloudstream/cloudstream-extensions-multilingual.git
synced 2024-08-15 03:15:14 +00:00
the goal is to speed up the getMainPage
This commit is contained in:
parent
a92a735d39
commit
e24f323f96
1 changed files with 97 additions and 96 deletions
|
@ -65,23 +65,47 @@ data class Channel(
|
||||||
var id: String?,
|
var id: String?,
|
||||||
var tv_genre_id: String?,
|
var tv_genre_id: String?,
|
||||||
var ch_id: String?,
|
var ch_id: String?,
|
||||||
) {
|
)
|
||||||
fun toSearchResponseHomePage(
|
|
||||||
provider: MacIPTVProvider,
|
fun toSearchResponseHomePage(
|
||||||
): SearchResponse {
|
channels: List<Channel>,
|
||||||
val media = this
|
provider: MacIPTVProvider, GenreId: String
|
||||||
|
): List<SearchResponse> {
|
||||||
|
val groupChannel = ArrayList<String>()
|
||||||
|
var b_new: String
|
||||||
|
var newgroupChannel: Boolean
|
||||||
|
val home = channels.mapNotNull { media ->
|
||||||
val groupName = cleanTitle(media.title).replace(provider.rgxcodeCountry, "").trim()
|
val groupName = cleanTitle(media.title).replace(provider.rgxcodeCountry, "").trim()
|
||||||
return LiveSearchResponse(
|
|
||||||
|
val rgxcodeCountry = provider.rgxcodeCountry
|
||||||
|
val b = cleanTitle(media.title).replace(rgxcodeCountry, "").trim()
|
||||||
|
b_new = b.take(6)
|
||||||
|
newgroupChannel = true
|
||||||
|
for (nameChannel in groupChannel) {
|
||||||
|
if (nameChannel.contains(b_new) && media.tv_genre_id == GenreId) {
|
||||||
|
newgroupChannel = false
|
||||||
|
break
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (newgroupChannel && media.tv_genre_id == GenreId) {
|
||||||
|
groupChannel.add(b_new)
|
||||||
|
|
||||||
|
LiveSearchResponse(
|
||||||
groupName,
|
groupName,
|
||||||
"$provider.mainUrl/-${media.id}-",
|
"$provider.mainUrl/-${media.id}-",
|
||||||
provider.name,
|
provider.name,
|
||||||
TvType.Live,
|
TvType.Live,
|
||||||
media.url_image,
|
media.url_image,
|
||||||
)
|
)
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
} else {
|
||||||
|
null
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return home
|
||||||
|
}
|
||||||
|
|
||||||
class MacIPTVProvider(override var lang: String) : MainAPI() {
|
class MacIPTVProvider(override var lang: String) : MainAPI() {
|
||||||
private val defaulmac_adresse =
|
private val defaulmac_adresse =
|
||||||
"mac=00:1A:79:aa:53:65"
|
"mac=00:1A:79:aa:53:65"
|
||||||
|
@ -97,6 +121,17 @@ class MacIPTVProvider(override var lang: String) : MainAPI() {
|
||||||
private var firstInitDone = false
|
private var firstInitDone = false
|
||||||
private var key: String? = ""
|
private var key: String? = ""
|
||||||
|
|
||||||
|
companion object {
|
||||||
|
var companionName: String? = null
|
||||||
|
var loginMac: String? = null
|
||||||
|
var overrideUrl: String? = null
|
||||||
|
fun List<Channel>.toHomePageList(name: String, provider: MacIPTVProvider, GenreId: String) =
|
||||||
|
HomePageList(
|
||||||
|
name, toSearchResponseHomePage(this, provider, GenreId),
|
||||||
|
isHorizontalImages = true
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
private fun accountInfoNotGood(url: String, mac: String?): Boolean {
|
private fun accountInfoNotGood(url: String, mac: String?): Boolean {
|
||||||
return url.uppercase().trim() == "NONE" || url.isBlank() || mac?.uppercase()
|
return url.uppercase().trim() == "NONE" || url.isBlank() || mac?.uppercase()
|
||||||
?.trim() == "NONE" || mac.isNullOrBlank()
|
?.trim() == "NONE" || mac.isNullOrBlank()
|
||||||
|
@ -154,6 +189,7 @@ class MacIPTVProvider(override var lang: String) : MainAPI() {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
private fun List<Channel>.sortByname(query: String?): List<Channel> {
|
private fun List<Channel>.sortByname(query: String?): List<Channel> {
|
||||||
return if (query == null) {
|
return if (query == null) {
|
||||||
// Return list to base state if no query
|
// Return list to base state if no query
|
||||||
|
@ -483,6 +519,8 @@ class MacIPTVProvider(override var lang: String) : MainAPI() {
|
||||||
|
|
||||||
val rgxcodeCountry = findKeyWord(codeCountry)
|
val rgxcodeCountry = findKeyWord(codeCountry)
|
||||||
override suspend fun getMainPage(page: Int, request: MainPageRequest): HomePageResponse {
|
override suspend fun getMainPage(page: Int, request: MainPageRequest): HomePageResponse {
|
||||||
|
var arrayHomepage = mutableListOf<HomePageList>()
|
||||||
|
if (page == 1) {
|
||||||
val headerIPTV = getAuthHeader()
|
val headerIPTV = getAuthHeader()
|
||||||
val url_info =
|
val url_info =
|
||||||
"$mainUrl/portal.php?type=account_info&action=get_main_info&JsHttpRequest=1-xml"
|
"$mainUrl/portal.php?type=account_info&action=get_main_info&JsHttpRequest=1-xml"
|
||||||
|
@ -523,13 +561,15 @@ class MacIPTVProvider(override var lang: String) : MainAPI() {
|
||||||
////////////////////////// GET ALL CHANNELS
|
////////////////////////// GET ALL CHANNELS
|
||||||
val responseAllchannelstoJSON = responseAllchannels!!.parsed<Root>()
|
val responseAllchannelstoJSON = responseAllchannels!!.parsed<Root>()
|
||||||
val AllchannelstoJSON = responseAllchannelstoJSON.js!!.data.sortByTitleNumber()
|
val AllchannelstoJSON = responseAllchannelstoJSON.js!!.data.sortByTitleNumber()
|
||||||
|
arrayHomepage = HomeResponse(
|
||||||
return HomePageResponse(
|
|
||||||
HomeResponse(
|
|
||||||
responseGetGenretoJSON,
|
responseGetGenretoJSON,
|
||||||
AllchannelstoJSON,
|
AllchannelstoJSON,
|
||||||
expiration,
|
expiration,
|
||||||
).getHomePageLists(this), false
|
).getHomePageLists(this)
|
||||||
|
}
|
||||||
|
|
||||||
|
return HomePageResponse(
|
||||||
|
arrayHomepage, false
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -642,8 +682,6 @@ class MacIPTVProvider(override var lang: String) : MainAPI() {
|
||||||
provider
|
provider
|
||||||
)
|
)
|
||||||
) {
|
) {
|
||||||
|
|
||||||
|
|
||||||
flag = getFlag(categoryTitle)
|
flag = getFlag(categoryTitle)
|
||||||
val nameGenre = if (firstCat) {
|
val nameGenre = if (firstCat) {
|
||||||
firstCat = false
|
firstCat = false
|
||||||
|
@ -656,9 +694,6 @@ class MacIPTVProvider(override var lang: String) : MainAPI() {
|
||||||
arrayHomepage.add(
|
arrayHomepage.add(
|
||||||
arraychannel.toHomePageList(nameGenre, provider, idGenre)
|
arraychannel.toHomePageList(nameGenre, provider, idGenre)
|
||||||
)
|
)
|
||||||
if (provider.groupMedia.isNotEmpty()) {
|
|
||||||
provider.groupMedia.clear()
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -666,38 +701,4 @@ class MacIPTVProvider(override var lang: String) : MainAPI() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
var groupMedia = mutableListOf<String>()
|
|
||||||
|
|
||||||
companion object {
|
|
||||||
var companionName: String? = null
|
|
||||||
var loginMac: String? = null
|
|
||||||
var overrideUrl: String? = null
|
|
||||||
fun List<Channel>.toHomePageList(name: String, provider: MacIPTVProvider, GenreId: String) =
|
|
||||||
HomePageList(
|
|
||||||
name, this.mapNotNull {
|
|
||||||
|
|
||||||
var b_new: String
|
|
||||||
var newgroupMedia: Boolean
|
|
||||||
val rgxcodeCountry = provider.rgxcodeCountry
|
|
||||||
val media = it
|
|
||||||
val b = cleanTitle(media.title).replace(rgxcodeCountry, "").trim()
|
|
||||||
b_new = b.take(6)
|
|
||||||
newgroupMedia = true
|
|
||||||
for (nameMedia in provider.groupMedia) {
|
|
||||||
if (nameMedia.contains(b_new) && media.tv_genre_id == GenreId) {
|
|
||||||
newgroupMedia = false
|
|
||||||
break
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (newgroupMedia && media.tv_genre_id == GenreId) { //
|
|
||||||
provider.groupMedia.add(b_new)
|
|
||||||
it.toSearchResponseHomePage(provider)
|
|
||||||
} else {
|
|
||||||
null
|
|
||||||
}
|
|
||||||
},
|
|
||||||
isHorizontalImages = true
|
|
||||||
)
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
}
|
Loading…
Add table
Add a link
Reference in a new issue