the goal is to speed up the getMainPage

This commit is contained in:
Eddy 2022-10-24 02:56:38 +02:00
parent a92a735d39
commit e24f323f96

View file

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