mirror of
https://github.com/recloudstream/cloudstream-extensions-multilingual.git
synced 2024-08-15 03:15:14 +00:00
New dialog to add tags! Now it is possible to take into account content from other countries and other categories
This commit is contained in:
parent
59c56d6b82
commit
a4876050bc
11 changed files with 250 additions and 70 deletions
|
@ -58,6 +58,9 @@ class MacIPTVProvider(override var lang: String) : MainAPI() {
|
||||||
}
|
}
|
||||||
|
|
||||||
private suspend fun getAuthHeader() {
|
private suspend fun getAuthHeader() {
|
||||||
|
tags = tags ?: ""
|
||||||
|
if (tags?.uppercase()?.trim() == "NONE" || tags?.isBlank() == true) tags = lang
|
||||||
|
tags = tags?.uppercase()
|
||||||
oldAthMac = loginMac
|
oldAthMac = loginMac
|
||||||
oldAthUrl = overrideUrl
|
oldAthUrl = overrideUrl
|
||||||
mainUrl = overrideUrl.toString()
|
mainUrl = overrideUrl.toString()
|
||||||
|
@ -539,7 +542,8 @@ class MacIPTVProvider(override var lang: String) : MainAPI() {
|
||||||
if (idGenre!!.contains("""\d""".toRegex()) && (categoryTitle.uppercase()
|
if (idGenre!!.contains("""\d""".toRegex()) && (categoryTitle.uppercase()
|
||||||
.contains(rgxcodeCountry) ||
|
.contains(rgxcodeCountry) ||
|
||||||
categoryTitle.isContainsTargetCountry(provider)
|
categoryTitle.isContainsTargetCountry(provider)
|
||||||
)
|
) || categoryTitle.uppercase()
|
||||||
|
.contains(findKeyWord(tags.toString()))
|
||||||
) {
|
) {
|
||||||
val itr = channels.iterator()
|
val itr = channels.iterator()
|
||||||
while (itr.hasNext()) {
|
while (itr.hasNext()) {
|
||||||
|
@ -585,7 +589,8 @@ class MacIPTVProvider(override var lang: String) : MainAPI() {
|
||||||
if (categoryTitle.uppercase()
|
if (categoryTitle.uppercase()
|
||||||
.contains(rgxcodeCountry) || categoryTitle.isContainsTargetCountry(
|
.contains(rgxcodeCountry) || categoryTitle.isContainsTargetCountry(
|
||||||
provider
|
provider
|
||||||
)
|
) || categoryTitle.uppercase()
|
||||||
|
.contains(findKeyWord(tags.toString()))
|
||||||
) {
|
) {
|
||||||
flag = getFlag(categoryTitle)
|
flag = getFlag(categoryTitle)
|
||||||
val nameGenre = if (firstCat) {
|
val nameGenre = if (firstCat) {
|
||||||
|
@ -648,6 +653,7 @@ class MacIPTVProvider(override var lang: String) : MainAPI() {
|
||||||
var companionName: String? = null
|
var companionName: String? = null
|
||||||
var loginMac: String? = null
|
var loginMac: String? = null
|
||||||
var overrideUrl: String? = null
|
var overrideUrl: String? = null
|
||||||
|
var tags: String? = null
|
||||||
private var oldAthMac: String? = null
|
private var oldAthMac: String? = null
|
||||||
private var oldAthUrl: String? = null
|
private var oldAthUrl: String? = null
|
||||||
private var headerMac = mutableMapOf<String, String>()
|
private var headerMac = mutableMapOf<String, String>()
|
||||||
|
|
|
@ -13,6 +13,7 @@ import com.lagradost.cloudstream3.ui.settings.SettingsAccount
|
||||||
@CloudstreamPlugin
|
@CloudstreamPlugin
|
||||||
class MacIPTVProviderPlugin : Plugin() {
|
class MacIPTVProviderPlugin : Plugin() {
|
||||||
val iptvboxApi = MacIptvAPI(0)
|
val iptvboxApi = MacIptvAPI(0)
|
||||||
|
val tagsiptvboxApi = TagsMacIptvAPI(1)
|
||||||
|
|
||||||
override fun load(context: Context) {
|
override fun load(context: Context) {
|
||||||
// All providers should be added in this manner. Please don't edit the providers list directly.
|
// All providers should be added in this manner. Please don't edit the providers list directly.
|
||||||
|
@ -22,6 +23,7 @@ class MacIPTVProviderPlugin : Plugin() {
|
||||||
registerMainAPI(MacIPTVProvider("ar"))
|
registerMainAPI(MacIPTVProvider("ar"))
|
||||||
ioSafe {
|
ioSafe {
|
||||||
iptvboxApi.initialize()
|
iptvboxApi.initialize()
|
||||||
|
tagsiptvboxApi.initialize()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -29,7 +31,7 @@ class MacIPTVProviderPlugin : Plugin() {
|
||||||
this.openSettings = {
|
this.openSettings = {
|
||||||
val activity = it as? AppCompatActivity
|
val activity = it as? AppCompatActivity
|
||||||
if (activity != null) {
|
if (activity != null) {
|
||||||
val frag = MacIptvSettingsFragment(this, iptvboxApi)
|
val frag = MacIptvSettingsFragment(this, iptvboxApi,tagsiptvboxApi)
|
||||||
frag.show(activity.supportFragmentManager, iptvboxApi.name)
|
frag.show(activity.supportFragmentManager, iptvboxApi.name)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -12,14 +12,17 @@ import android.widget.TextView
|
||||||
import androidx.core.content.res.ResourcesCompat
|
import androidx.core.content.res.ResourcesCompat
|
||||||
import com.lagradost.cloudstream3.R
|
import com.lagradost.cloudstream3.R
|
||||||
import com.google.android.material.bottomsheet.BottomSheetDialogFragment
|
import com.google.android.material.bottomsheet.BottomSheetDialogFragment
|
||||||
import com.lagradost.cloudstream3.AcraApplication.Companion.openBrowser
|
|
||||||
import com.lagradost.cloudstream3.plugins.Plugin
|
import com.lagradost.cloudstream3.plugins.Plugin
|
||||||
import com.lagradost.cloudstream3.ui.settings.SettingsAccount.Companion.showLoginInfo
|
import com.lagradost.cloudstream3.ui.settings.SettingsAccount.Companion.showLoginInfo
|
||||||
import com.lagradost.cloudstream3.ui.settings.SettingsAccount.Companion.addAccount
|
import com.lagradost.cloudstream3.ui.settings.SettingsAccount.Companion.addAccount
|
||||||
import com.lagradost.cloudstream3.utils.UIHelper.colorFromAttribute
|
import com.lagradost.cloudstream3.utils.UIHelper.colorFromAttribute
|
||||||
|
|
||||||
|
|
||||||
class MacIptvSettingsFragment(private val plugin: Plugin, val maciptvAPI: MacIptvAPI) :
|
class MacIptvSettingsFragment(
|
||||||
|
private val plugin: Plugin,
|
||||||
|
val maciptvAPI: MacIptvAPI,
|
||||||
|
val tagsmaciptvAPI: TagsMacIptvAPI
|
||||||
|
) :
|
||||||
BottomSheetDialogFragment() {
|
BottomSheetDialogFragment() {
|
||||||
|
|
||||||
override fun onCreateView(
|
override fun onCreateView(
|
||||||
|
@ -27,7 +30,11 @@ class MacIptvSettingsFragment(private val plugin: Plugin, val maciptvAPI: MacIpt
|
||||||
savedInstanceState: Bundle?
|
savedInstanceState: Bundle?
|
||||||
): View? {
|
): View? {
|
||||||
// Inflate the layout for this fragment
|
// Inflate the layout for this fragment
|
||||||
val id = plugin.resources!!.getIdentifier("nginx_settings", "layout", BuildConfig.LIBRARY_PACKAGE_NAME)
|
val id = plugin.resources!!.getIdentifier(
|
||||||
|
"iptvbox_settings",
|
||||||
|
"layout",
|
||||||
|
BuildConfig.LIBRARY_PACKAGE_NAME
|
||||||
|
)
|
||||||
val layout = plugin.resources!!.getLayout(id)
|
val layout = plugin.resources!!.getLayout(id)
|
||||||
return inflater.inflate(layout, container, false)
|
return inflater.inflate(layout, container, false)
|
||||||
}
|
}
|
||||||
|
@ -38,46 +45,48 @@ class MacIptvSettingsFragment(private val plugin: Plugin, val maciptvAPI: MacIpt
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun getDrawable(name: String): Drawable? {
|
private fun getDrawable(name: String): Drawable? {
|
||||||
val id = plugin.resources!!.getIdentifier(name, "drawable", BuildConfig.LIBRARY_PACKAGE_NAME)
|
val id =
|
||||||
|
plugin.resources!!.getIdentifier(name, "drawable", BuildConfig.LIBRARY_PACKAGE_NAME)
|
||||||
return ResourcesCompat.getDrawable(plugin.resources!!, id, null)
|
return ResourcesCompat.getDrawable(plugin.resources!!, id, null)
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun getString(name: String): String? {
|
private fun getString(name: String): String? {
|
||||||
val id = plugin.resources!!.getIdentifier(name, "string", BuildConfig.LIBRARY_PACKAGE_NAME)
|
val id =
|
||||||
|
plugin.resources!!.getIdentifier(name, "string", BuildConfig.LIBRARY_PACKAGE_NAME)
|
||||||
return plugin.resources!!.getString(id)
|
return plugin.resources!!.getString(id)
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
|
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
|
||||||
super.onViewCreated(view, savedInstanceState)
|
super.onViewCreated(view, savedInstanceState)
|
||||||
val infoView = view.findView<LinearLayout>("nginx_info")
|
val infoView = view.findView<LinearLayout>("iptvbox_info")
|
||||||
val infoTextView = view.findView<TextView>("info_main_text")
|
val infoTextView = view.findView<TextView>("info_main_text")
|
||||||
val infoSubTextView = view.findView<TextView>("info_sub_text")
|
val infoSubTextView = view.findView<TextView>("info_sub_text")
|
||||||
val infoImageView = view.findView<ImageView>("nginx_info_imageview")
|
//val infoImageView = view.findView<ImageView>("iptvbox_info_imageview")
|
||||||
|
|
||||||
infoTextView.text = getString("nginx_info_title") ?: "MacIPTV"
|
infoTextView.text = getString("iptvbox_info_title") ?: "MacIPTV"
|
||||||
infoSubTextView.text = getString("nginx_info_summary") ?: ""
|
infoSubTextView.text = getString("iptvbox_info_summary") ?: ""
|
||||||
infoImageView.setImageDrawable(getDrawable("nginx_question"))
|
/* infoImageView.setImageDrawable(getDrawable("iptvbox_question"))
|
||||||
infoImageView.imageTintList =
|
infoImageView.imageTintList =
|
||||||
ColorStateList.valueOf(view.context.colorFromAttribute(R.attr.white))
|
ColorStateList.valueOf(view.context.colorFromAttribute(R.attr.white))*/
|
||||||
|
|
||||||
val loginView = view.findView<LinearLayout>("nginx_login")
|
val loginView = view.findView<LinearLayout>("iptvbox_login")
|
||||||
val loginTextView = view.findView<TextView>("main_text")
|
val loginTextView = view.findView<TextView>("main_text")
|
||||||
val loginImageView = view.findView<ImageView>("nginx_login_imageview")
|
val loginImageView = view.findView<ImageView>("iptvbox_login_imageview")
|
||||||
loginImageView.setImageDrawable(getDrawable("nginx"))
|
loginImageView.setImageDrawable(getDrawable("iptvbox"))
|
||||||
loginImageView.imageTintList =
|
loginImageView.imageTintList =
|
||||||
ColorStateList.valueOf(view.context.colorFromAttribute(R.attr.white))
|
ColorStateList.valueOf(view.context.colorFromAttribute(R.attr.white))
|
||||||
|
|
||||||
// object : View.OnClickListener is required to make it compile because otherwise it used invoke-customs
|
|
||||||
infoView.setOnClickListener(object : View.OnClickListener {
|
infoView.setOnClickListener(object : View.OnClickListener {
|
||||||
override fun onClick(v: View?) {
|
override fun onClick(v: View?) {
|
||||||
openBrowser(maciptvAPI.createAccountUrl)
|
println("It's OK")
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|
||||||
loginTextView.text = view.context.resources.getString(R.string.login_format).format(
|
loginTextView.text = view.context.resources.getString(R.string.login_format).format(
|
||||||
maciptvAPI.name,
|
maciptvAPI.name,
|
||||||
view.context.resources.getString(R.string.account))
|
view.context.resources.getString(R.string.account)
|
||||||
|
)
|
||||||
|
|
||||||
loginView.setOnClickListener(object : View.OnClickListener {
|
loginView.setOnClickListener(object : View.OnClickListener {
|
||||||
override fun onClick(v: View?) {
|
override fun onClick(v: View?) {
|
||||||
|
@ -89,5 +98,45 @@ class MacIptvSettingsFragment(private val plugin: Plugin, val maciptvAPI: MacIpt
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
|
val infoViewTags = view.findView<LinearLayout>("tags_info")
|
||||||
|
val infoTextViewTags = view.findView<TextView>("tagsinfo_main_text")
|
||||||
|
val infoSubTextViewTags = view.findView<TextView>("tags_sub_text")
|
||||||
|
|
||||||
|
infoTextViewTags.text = getString("tags_info_title") ?: "MacIPTV"
|
||||||
|
infoSubTextViewTags.text = getString("tags_info_summary") ?: ""
|
||||||
|
|
||||||
|
|
||||||
|
val loginViewTags = view.findView<LinearLayout>("tags_login")
|
||||||
|
val loginTextViewTags = view.findView<TextView>("tagsmain_text")
|
||||||
|
val loginImageViewTags = view.findView<ImageView>("tagsiptvbox_login_imageview")
|
||||||
|
|
||||||
|
loginImageViewTags.setImageDrawable(getDrawable("tagsiptvbox"))
|
||||||
|
loginImageViewTags.imageTintList =
|
||||||
|
ColorStateList.valueOf(view.context.colorFromAttribute(R.attr.white))
|
||||||
|
|
||||||
|
// object : View.OnClickListener is required to make it compile because otherwise it used invoke-customs
|
||||||
|
infoViewTags.setOnClickListener(object : View.OnClickListener {
|
||||||
|
override fun onClick(v: View?) {
|
||||||
|
println("It's OK")
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
|
||||||
|
loginTextViewTags.text = view.context.resources.getString(R.string.login_format).format(
|
||||||
|
tagsmaciptvAPI.name,
|
||||||
|
view.context.resources.getString(R.string.account)
|
||||||
|
)
|
||||||
|
|
||||||
|
loginViewTags.setOnClickListener(object : View.OnClickListener {
|
||||||
|
override fun onClick(v: View?) {
|
||||||
|
val info = tagsmaciptvAPI.loginInfo()
|
||||||
|
if (info?.accountIndex != null) {
|
||||||
|
showLoginInfo(activity, tagsmaciptvAPI, info)
|
||||||
|
} else {
|
||||||
|
addAccount(activity, tagsmaciptvAPI)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
})
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -0,0 +1,62 @@
|
||||||
|
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.AuthAPI
|
||||||
|
import com.lagradost.cloudstream3.syncproviders.InAppAuthAPI
|
||||||
|
import com.lagradost.cloudstream3.syncproviders.InAppAuthAPIManager
|
||||||
|
|
||||||
|
class TagsMacIptvAPI(index: Int) : InAppAuthAPIManager(index) {
|
||||||
|
override val name = "Tags"
|
||||||
|
override val idPrefix = "tagsiptvbox"
|
||||||
|
override val icon = R.drawable.ic_baseline_extension_24
|
||||||
|
override val requiresUsername = false
|
||||||
|
override val requiresPassword = false
|
||||||
|
override val requiresServer = true
|
||||||
|
override val createAccountUrl = ""
|
||||||
|
|
||||||
|
companion object {
|
||||||
|
const val IPTVBOX_USER_KEY1: String = "tagsiptvbox_user"
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun getLatestLoginData(): InAppAuthAPI.LoginData? {
|
||||||
|
return getKey(accountId, IPTVBOX_USER_KEY1)
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun loginInfo(): AuthAPI.LoginInfo? {
|
||||||
|
val data = getLatestLoginData() ?: return null
|
||||||
|
return AuthAPI.LoginInfo(
|
||||||
|
name = data.server?:"MyTags",
|
||||||
|
accountIndex = accountIndex
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
override suspend fun login(data: InAppAuthAPI.LoginData): Boolean {
|
||||||
|
if (data.server.isNullOrBlank()) return false // we require a tags
|
||||||
|
switchToNewAccount()
|
||||||
|
setKey(accountId, IPTVBOX_USER_KEY1, data)
|
||||||
|
registerAccount()
|
||||||
|
initialize()
|
||||||
|
inAppAuths
|
||||||
|
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun logOut() {
|
||||||
|
removeAccountKeys()
|
||||||
|
initializeData()
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun initializeData() {
|
||||||
|
val data = getLatestLoginData() ?: run {
|
||||||
|
MacIPTVProvider.tags = null
|
||||||
|
return
|
||||||
|
}
|
||||||
|
MacIPTVProvider.tags = data.server.toString()
|
||||||
|
}
|
||||||
|
|
||||||
|
override suspend fun initialize() {
|
||||||
|
initializeData()
|
||||||
|
}
|
||||||
|
}
|
15
MaciptvProvider/src/main/res/drawable/iptvbox.xml
Normal file
15
MaciptvProvider/src/main/res/drawable/iptvbox.xml
Normal file
|
@ -0,0 +1,15 @@
|
||||||
|
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
android:width="24dp"
|
||||||
|
android:height="24dp"
|
||||||
|
android:viewportWidth="283"
|
||||||
|
android:viewportHeight="283">
|
||||||
|
|
||||||
|
<group
|
||||||
|
android:translateX="50.270828"
|
||||||
|
android:translateY="-17.008934">
|
||||||
|
<path
|
||||||
|
android:fillColor="#000000"
|
||||||
|
android:strokeWidth="0.264583"
|
||||||
|
android:pathData="M -32.94062,275.849 c -2.14593,-0.29125 -5.46398,-1.24549 -7.149194,-2.05605 -4.700792,-2.26099 -7.998563,-6.13043 -9.588522,-11.25069 -0.420912,-1.35549 -0.457386,-6.69473 -0.532295,-77.91979 -0.05471,-52.02301 0.0082,-77.30017 0.196891,-79.07869 0.594706,-5.606087 2.120764,-8.235494 5.581914,-9.617678 1.104107,-0.440917 4.293305,-0.475924 54.707246,-0.600503 L 63.810213,95.193307 40.136014,67.030772 16.461815,38.868236 14.823182,38.533984 C 11.680469,37.892927 9.2333933,35.958124 7.7376879,32.931769 6.773697,30.981264 6.7468789,30.847858 6.7468789,28.002864 c 0,-2.736021 0.054033,-3.038194 0.8398933,-4.697035 1.0685541,-2.255575 2.8045518,-3.991572 5.0601268,-5.060128 1.582994,-0.749927 2.027963,-0.839892 4.154146,-0.839892 2.140469,0 2.555148,0.08524 4.101042,0.842958 0.945885,0.463627 2.03681,1.133577 2.424276,1.488777 2.97669,2.728804 4.259231,6.810785 3.361664,10.699261 L 26.388548,31.734213 48.7895,57.90751 c 20.77983,24.279174 22.465509,26.179131 23.29299,26.253911 0.87484,0.07906 1.298374,-0.37455 21.968613,-23.528462 19.466037,-21.80501 21.060117,-23.661105 20.861177,-24.289987 -0.44367,-1.40249 -0.21226,-5.093252 0.42067,-6.709333 0.83671,-2.136386 3.024,-4.436958 5.2695,-5.542417 1.59094,-0.783216 1.98083,-0.864456 4.14303,-0.863262 2.11454,0.0012 2.58308,0.09418 4.10736,0.815396 2.17842,1.030718 3.9678,2.813844 5.06956,5.051834 1.54593,3.140235 1.33897,7.740562 -0.48852,10.858946 -1.70485,2.909108 -4.84437,4.644703 -8.22333,4.54604 -1.62024,-0.04731 -2.03132,0.02832 -2.43119,0.447265 -0.59204,0.620289 -38.112691,50.095244 -38.112691,50.255624 0,0.06326 24.199451,0.146478 53.776561,0.184922 l 53.77656,0.0699 1.85208,0.621724 c 3.68184,1.235953 5.8886,2.598623 8.61541,5.319999 2.22241,2.21797 2.69826,2.86496 3.91401,5.32165 0.99123,2.003 1.53189,3.5206 1.90508,5.34738 0.51189,2.50576 0.51981,3.81652 0.44979,74.46162 -0.0687,69.25997 -0.0895,71.97436 -0.56459,73.63075 -2.32646,8.11051 -8.29739,13.84323 -16.09635,15.45414 -1.84564,0.38123 -12.50871,0.41713 -113.239792,0.38122 -61.161265,-0.0218 -111.559486,-0.0881 -111.996048,-0.14737 z M 107.9956,254.23651 c 6.13087,-1.55522 11.9502,-5.09267 17.5118,-10.64505 5.24006,-5.23138 8.86923,-11.04721 10.38543,-16.6429 0.47963,-1.77009 0.49988,-3.4422 0.49988,-41.26776 v -39.42291 l -0.82585,-2.30778 c -3.81921,-10.67248 -18.42577,-24.30148 -28.87702,-26.94438 -2.01403,-0.50931 -3.17076,-0.51802 -59.729632,-0.45027 l -57.675829,0.0691 -1.427202,0.60648 c -7.263106,3.08644 -14.023337,13.31594 -16.734647,25.32268 l -0.59747,2.64584 -0.09618,38.09999 c -0.0669,26.50198 -0.0066,39.13631 0.197956,41.5043 1.166598,13.50193 9.806113,27.62602 18.129074,29.63785 1.3595719,0.32863 9.8323237,0.38671 59.165901,0.4056 l 57.579089,0.022 z m 63.82259,-50.29434 c 6.27064,-1.76216 10.80588,-6.27861 12.75795,-12.70512 0.6508,-2.14252 0.72306,-2.77912 0.72084,-6.35 -0.002,-3.25213 -0.1068,-4.35094 -0.58026,-6.08541 -1.97597,-7.23862 -7.01395,-12.46686 -13.79589,-14.31688 -2.32839,-0.63516 -7.41724,-0.64813 -9.78958,-0.0249 -2.91414,0.7655 -6.30863,2.60883 -8.4428,4.58474 -3.18821,2.95179 -5.10341,6.26393 -6.14536,10.62776 -0.78861,3.30279 -0.60811,8.76413 0.39096,11.82933 2.14979,6.59562 7.58539,11.32305 14.74626,12.82507 1.79348,0.37619 8.31048,0.12899 10.13788,-0.38454 z m 1.20497,-54.87516 c 3.0533,-1.03769 5.04792,-2.21975 7.01911,-4.15969 3.84877,-3.78777 5.74165,-9.27276 5.33603,-15.46223 -0.32973,-5.03133 -2.12072,-9.44772 -5.16755,-12.74262 -2.24398,-2.42666 -4.89642,-4.15525 -7.87311,-5.13087 -2.20111,-0.72142 -2.59896,-0.76704 -6.57618,-0.75405 -3.85956,0.0126 -4.42072,0.0762 -6.35558,0.71998 -8.15543,2.71365 -12.82671,9.57683 -12.82671,18.84536 0,8.57904 4.04532,15.19043 11.11106,18.15914 3.00265,1.26158 4.72433,1.53952 8.99727,1.4525 3.51079,-0.0715 4.04861,-0.15025 6.33566,-0.92752 z" />
|
||||||
|
</group>
|
||||||
|
</vector>
|
|
@ -1,12 +0,0 @@
|
||||||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
|
||||||
android:name="vector"
|
|
||||||
android:width="24dp"
|
|
||||||
android:height="24dp"
|
|
||||||
android:viewportWidth="283"
|
|
||||||
android:viewportHeight="283">
|
|
||||||
<path
|
|
||||||
android:name="path"
|
|
||||||
android:pathData="M 253.41 62.61 L 154.22 5.34 C 150.42 3.146 146.108 1.991 141.72 1.991 C 137.332 1.991 133.02 3.146 129.22 5.34 L 30 62.61 C 26.202 64.807 23.049 67.966 20.858 71.768 C 18.668 75.57 17.516 79.882 17.52 84.27 L 17.52 198.8 C 17.516 203.188 18.668 207.5 20.858 211.302 C 23.049 215.104 26.202 218.263 30 220.46 L 129.19 277.72 C 132.99 279.914 137.302 281.069 141.69 281.069 C 146.078 281.069 150.39 279.914 154.19 277.72 L 253.38 220.46 C 257.183 218.266 260.343 215.109 262.539 211.307 C 264.735 207.505 265.891 203.191 265.89 198.8 L 265.89 84.27 C 265.894 79.882 264.742 75.57 262.552 71.768 C 260.361 67.966 257.208 64.807 253.41 62.61 Z M 203.28 185.33 Q 203.28 200.61 187.03 200.61 C 184.56 200.637 182.098 200.331 179.71 199.7 C 177.529 199.086 175.467 198.109 173.61 196.81 C 171.687 195.463 169.917 193.91 168.33 192.18 Q 165.9 189.52 163.45 186.76 L 106.86 119.16 L 106.86 187.16 Q 106.86 193.81 102.86 197.22 C 100.004 199.558 96.388 200.768 92.7 200.62 Q 86.3 200.62 82.44 197.18 Q 78.58 193.74 78.58 187.18 L 78.58 97.63 C 78.438 94.563 78.992 91.503 80.2 88.68 C 81.685 86.126 83.925 84.093 86.61 82.86 C 89.603 81.356 92.911 80.585 96.26 80.61 C 98.633 80.541 101.001 80.879 103.26 81.61 C 105.096 82.243 106.813 83.179 108.34 84.38 C 109.979 85.728 111.477 87.239 112.81 88.89 C 114.33 90.74 115.91 92.66 117.53 94.67 L 175.53 163.06 L 175.53 94.06 Q 175.53 87.34 179.24 83.97 Q 182.95 80.6 189.24 80.61 C 193.57 80.61 197 81.73 199.5 83.97 C 202 86.21 203.26 89.58 203.26 94.06 Z"
|
|
||||||
android:fillColor="#000"
|
|
||||||
android:strokeWidth="1" />
|
|
||||||
</vector>
|
|
|
@ -1,17 +0,0 @@
|
||||||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
|
||||||
android:name="vector"
|
|
||||||
android:width="35dp"
|
|
||||||
android:height="26dp"
|
|
||||||
android:viewportWidth="379"
|
|
||||||
android:viewportHeight="279">
|
|
||||||
<path
|
|
||||||
android:name="path"
|
|
||||||
android:pathData="M 235.89 60.62 L 136.7 3.35 C 132.9 1.156 128.588 0.001 124.2 0.001 C 119.812 0.001 115.5 1.156 111.7 3.35 L 12.48 60.62 C 8.682 62.817 5.529 65.976 3.338 69.778 C 1.148 73.58 -0.004 77.892 0 82.28 L 0 196.81 C -0.004 201.198 1.148 205.51 3.338 209.312 C 5.529 213.114 8.682 216.273 12.48 218.47 L 111.67 275.73 C 115.47 277.924 119.782 279.079 124.17 279.079 C 128.558 279.079 132.87 277.924 136.67 275.73 L 235.86 218.47 C 239.663 216.276 242.823 213.119 245.019 209.317 C 247.215 205.515 248.371 201.201 248.37 196.81 L 248.37 82.28 C 248.374 77.892 247.222 73.58 245.032 69.778 C 242.841 65.976 239.688 62.817 235.89 60.62 Z M 185.76 183.34 Q 185.76 198.62 169.51 198.62 C 167.04 198.647 164.578 198.341 162.19 197.71 C 160.009 197.096 157.947 196.119 156.09 194.82 C 154.167 193.473 152.397 191.92 150.81 190.19 Q 148.38 187.53 145.93 184.77 L 89.34 117.17 L 89.34 185.17 Q 89.34 191.82 85.34 195.23 C 82.484 197.568 78.868 198.778 75.18 198.63 Q 68.78 198.63 64.92 195.19 Q 61.06 191.75 61.06 185.19 L 61.06 95.64 C 60.918 92.573 61.472 89.513 62.68 86.69 C 64.165 84.136 66.405 82.103 69.09 80.87 C 72.083 79.366 75.391 78.595 78.74 78.62 C 81.113 78.551 83.481 78.889 85.74 79.62 C 87.576 80.253 89.293 81.189 90.82 82.39 C 92.459 83.738 93.957 85.249 95.29 86.9 C 96.81 88.75 98.39 90.67 100.01 92.68 L 158.01 161.07 L 158.01 92.07 Q 158.01 85.35 161.72 81.98 Q 165.43 78.61 171.72 78.62 C 176.05 78.62 179.48 79.74 181.98 81.98 C 184.48 84.22 185.74 87.59 185.74 92.07 Z"
|
|
||||||
android:fillColor="#000"
|
|
||||||
android:strokeWidth="1" />
|
|
||||||
<path
|
|
||||||
android:name="path_1"
|
|
||||||
android:pathData="M 312.84 143.37 C 320.84 128.98 336.13 120.49 345.04 107.75 C 354.48 94.4 349.18 69.45 322.48 69.45 C 304.98 69.45 296.39 82.7 292.77 93.67 L 265.94 82.39 C 273.29 60.39 293.27 41.39 322.37 41.39 C 346.69 41.39 363.37 52.47 371.85 66.34 C 379.1 78.25 383.34 100.51 372.16 117.07 C 359.74 135.39 347.83 140.98 341.41 152.79 C 338.83 157.55 337.79 160.65 337.79 175.98 L 307.87 175.98 C 307.77 167.9 306.53 154.75 312.84 143.37 Z M 343.17 217.37 C 343.175 222.063 341.584 226.62 338.661 230.291 C 335.737 233.962 331.651 236.533 327.077 237.579 C 322.502 238.625 317.705 238.086 313.477 236.05 C 309.249 234.015 305.835 230.601 303.8 226.373 C 301.764 222.145 301.225 217.348 302.271 212.773 C 303.317 208.199 305.888 204.113 309.559 201.189 C 313.23 198.266 317.787 196.675 322.48 196.68 C 327.963 196.698 333.221 198.888 337.097 202.767 C 340.972 206.646 343.157 211.907 343.17 217.39 Z"
|
|
||||||
android:fillColor="#ffffff"
|
|
||||||
android:strokeWidth="1" />
|
|
||||||
</vector>
|
|
15
MaciptvProvider/src/main/res/drawable/tagsiptvbox.xml
Normal file
15
MaciptvProvider/src/main/res/drawable/tagsiptvbox.xml
Normal file
|
@ -0,0 +1,15 @@
|
||||||
|
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
android:width="24dp"
|
||||||
|
android:height="24dp"
|
||||||
|
android:viewportWidth="259.29166"
|
||||||
|
android:viewportHeight="263.525">
|
||||||
|
|
||||||
|
<group
|
||||||
|
android:translateX="-34.773819"
|
||||||
|
android:translateY="-87.841675">
|
||||||
|
<path
|
||||||
|
android:fillColor="#000000"
|
||||||
|
android:strokeWidth="0.264583"
|
||||||
|
android:pathData="M 129.09777,350.80762 c -5.82169,-0.8432 -11.74457,-3.11995 -16.66874,-6.40743 -3.57082,-2.38396 -2.20333,-1.0593 -45.657858,-44.22803 -22.981999,-22.83085 -24.349671,-24.29586 -27.203694,-29.13993 -6.989233,-11.86265 -6.213846,-27.96429 1.933744,-40.15605 2.166266,-3.24152 3.021841,-4.16697 15.068333,-16.29909 6.140985,-6.18464 21.749827,-21.96042 34.686317,-35.05729 12.936488,-13.09688 29.064838,-29.36725 35.840768,-36.15639 11.00579,-11.02724 12.60767,-12.53118 15.01789,-14.09968 5.00499,-3.25711 9.55193,-4.9685 14.49991,-5.45754 1.45521,-0.14383 7.94412,-0.2282 14.41979,-0.18749 l 11.77396,0.074 0.14104,31.35312 c 0.15867,35.27405 -0.027,32.22688 2.25226,36.95436 2.24312,4.65242 5.80381,8.21558 10.53888,10.5462 3.44474,1.69551 5.94031,2.28119 9.82199,2.30508 10.52805,0.0648 19.16048,-6.39307 22.26225,-16.65425 0.9216,-3.04882 1.04191,-8.32801 0.26106,-11.45556 -1.76663,-7.07589 -6.90305,-13.10021 -13.51701,-15.85361 -1.07693,-0.44832 -2.0854,-0.81514 -2.24104,-0.81514 -0.19629,0 -0.28297,3.30862 -0.28297,10.80079 0,12.18801 -0.0176,12.32 -1.92802,14.49039 -2.91667,3.31351 -8.18365,3.38766 -11.0967,0.15623 -2.09108,-2.31962 -1.93256,0.46512 -1.85523,-32.59116 0.0456,-19.50977 0.16804,-30.30659 0.36143,-31.87959 1.71962,-13.98733 12.20679,-26.625608 25.76331,-31.047838 5.43253,-1.772127 5.3199,-1.763192 22.225,-1.763192 14.03062,0 15.54992,0.04285 17.72708,0.49997 16.20902,3.403265 28.20232,16.188 30.43243,32.44065 0.57853,4.21624 0.5682,39.52569 -0.0121,41.47989 -0.58243,1.96127 -1.85195,3.48259 -3.69057,4.42257 -1.31087,0.67017 -1.85657,0.79487 -3.44069,0.78622 -1.59912,-0.009 -2.10005,-0.13238 -3.32546,-0.82081 -0.79351,-0.44579 -1.82664,-1.30962 -2.29586,-1.91963 -1.68177,-2.18637 -1.66044,-1.8986 -1.66044,-22.40349 0,-15.84791 -0.0616,-18.90072 -0.41936,-20.78791 -1.74954,-9.22827 -9.078,-16.73373 -18.15646,-18.59498 -1.69599,-0.34771 -4.22601,-0.41811 -15.02626,-0.41811 -14.22461,0 -15.06774,0.0711 -19.05651,1.60708 -5.50889,2.12134 -10.85199,7.49794 -13.06634,13.14829 -0.6642,1.69484 -1.47923,4.92738 -1.47923,5.86688 0,0.54168 0.003,0.54176 25.20156,0.60923 l 25.20156,0.0675 0.0729,50.8 c 0.0466,32.45675 -0.0226,51.77135 -0.19161,53.49006 -0.53295,5.41924 -1.85624,10.14667 -4.13506,14.77244 -3.00932,6.1086 -5.65434,8.94113 -36.67762,39.27769 -17.2384,16.85683 -26.88494,26.18115 -41.48636,40.10063 -5.02047,4.786 -11.29504,10.77237 -13.94349,13.30306 -6.78748,6.4857 -8.88592,8.11047 -13.90759,10.76829 -3.32855,1.7617 -8.12254,3.37303 -11.7357,3.94454 -2.87413,0.45461 -8.64456,0.52024 -11.34552,0.12903 z" />
|
||||||
|
</group>
|
||||||
|
</vector>
|
|
@ -8,14 +8,14 @@
|
||||||
android:orientation="vertical">
|
android:orientation="vertical">
|
||||||
|
|
||||||
<LinearLayout
|
<LinearLayout
|
||||||
android:id="@+id/nginx_login"
|
android:id="@+id/iptvbox_login"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:orientation="horizontal"
|
android:orientation="horizontal"
|
||||||
android:padding="20dp">
|
android:padding="20dp">
|
||||||
|
|
||||||
<ImageView
|
<ImageView
|
||||||
android:id="@+id/nginx_login_imageview"
|
android:id="@+id/iptvbox_login_imageview"
|
||||||
android:layout_width="24dp"
|
android:layout_width="24dp"
|
||||||
android:layout_height="24dp"
|
android:layout_height="24dp"
|
||||||
android:layout_gravity="start|center_vertical"
|
android:layout_gravity="start|center_vertical"
|
||||||
|
@ -28,37 +28,26 @@
|
||||||
android:layout_weight="1"
|
android:layout_weight="1"
|
||||||
android:orientation="vertical">
|
android:orientation="vertical">
|
||||||
|
|
||||||
<!-- <LinearLayout-->
|
|
||||||
<!-- android:layout_width="match_parent"-->
|
|
||||||
<!-- android:layout_height="match_parent"-->
|
|
||||||
<!-- android:orientation="horizontal">-->
|
|
||||||
|
|
||||||
<TextView
|
<TextView
|
||||||
android:id="@+id/main_text"
|
android:id="@+id/main_text"
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:textSize="16sp" />
|
android:textSize="16sp" />
|
||||||
<!-- </LinearLayout>-->
|
|
||||||
|
|
||||||
<!-- <TextView-->
|
|
||||||
<!-- android:id="@+id/sub_text"-->
|
|
||||||
<!-- android:layout_width="wrap_content"-->
|
|
||||||
<!-- android:layout_height="wrap_content"-->
|
|
||||||
<!-- android:text="@string/nginx_info_summary"-->
|
|
||||||
<!-- android:textSize="12sp" />-->
|
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
|
|
||||||
|
|
||||||
<LinearLayout
|
<LinearLayout
|
||||||
android:id="@+id/nginx_info"
|
android:id="@+id/iptvbox_info"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:orientation="horizontal"
|
android:orientation="horizontal"
|
||||||
android:padding="20dp">
|
android:padding="20dp">
|
||||||
|
|
||||||
<ImageView
|
<ImageView
|
||||||
android:id="@+id/nginx_info_imageview"
|
android:id="@+id/iptvbox_info_imageview"
|
||||||
android:layout_width="24dp"
|
android:layout_width="24dp"
|
||||||
android:layout_height="24dp"
|
android:layout_height="24dp"
|
||||||
android:layout_gravity="start|center_vertical"
|
android:layout_gravity="start|center_vertical"
|
||||||
|
@ -90,6 +79,73 @@
|
||||||
android:textSize="12sp" />
|
android:textSize="12sp" />
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
|
<LinearLayout
|
||||||
|
android:id="@+id/tags_login"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:orientation="horizontal"
|
||||||
|
android:padding="20dp">
|
||||||
|
<ImageView
|
||||||
|
android:id="@+id/tagsiptvbox_login_imageview"
|
||||||
|
android:layout_width="24dp"
|
||||||
|
android:layout_height="24dp"
|
||||||
|
android:layout_gravity="start|center_vertical"
|
||||||
|
android:layout_marginEnd="20dp"
|
||||||
|
android:scaleType="centerInside" />
|
||||||
|
|
||||||
|
|
||||||
|
<LinearLayout
|
||||||
|
android:layout_width="0dp"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_weight="1"
|
||||||
|
android:orientation="vertical">
|
||||||
|
|
||||||
|
<!-- <LinearLayout-->
|
||||||
|
<!-- android:layout_width="match_parent"-->
|
||||||
|
<!-- android:layout_height="match_parent"-->
|
||||||
|
<!-- android:orientation="horizontal">-->
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:id="@+id/tagsmain_text"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:textSize="16sp" />
|
||||||
|
|
||||||
|
</LinearLayout>
|
||||||
|
</LinearLayout>
|
||||||
|
|
||||||
|
<LinearLayout
|
||||||
|
android:id="@+id/tags_info"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:orientation="horizontal"
|
||||||
|
android:padding="20dp">
|
||||||
|
|
||||||
|
|
||||||
|
<LinearLayout
|
||||||
|
android:layout_width="0dp"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_weight="1"
|
||||||
|
android:orientation="vertical">
|
||||||
|
|
||||||
|
<LinearLayout
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="match_parent"
|
||||||
|
android:orientation="horizontal">
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:id="@+id/tagsinfo_main_text"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:textSize="16sp" />
|
||||||
|
</LinearLayout>
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:id="@+id/tags_sub_text"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:textSize="12sp" />
|
||||||
|
</LinearLayout>
|
||||||
|
</LinearLayout>
|
||||||
|
|
||||||
</LinearLayout>
|
</LinearLayout>
|
|
@ -1,9 +1,11 @@
|
||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<resources>
|
<resources>
|
||||||
<string name="nginx_info_title">C\'est quoi Maciptv ?</string>
|
<string name="iptvbox_info_title">C\'est quoi Maciptv ?</string>
|
||||||
<string name="example_username">NomIPTV</string>
|
<string name="example_username">NomIPTV</string>
|
||||||
<string name="nginx_info_summary">Maciptv est un emulateur qui va vous permettre de profiter de vos comptes IPTV. Donner l\'url portail du fournisseur http:\/\/exemple.com\/c\/ et votre mac 00:1A:79:XX:XX:XX comme password123. Pour sélectionner/revenir au compte par défaut, créer un compte avec \'none\' à la place de \'127.0.0.1\' et pas besoin de renseigner les autres infos</string>
|
<string name="iptvbox_info_summary">Maciptv est un emulateur qui va vous permettre de profiter de vos comptes IPTV. Donner l\'url portail du fournisseur http:\/\/exemple.com\/c\/ et votre mac 00:1A:79:XX:XX:XX comme password123. Pour sélectionner/revenir au compte par défaut, créer un compte avec \'none\' à la place de \'127.0.0.1\' et pas besoin de renseigner les autres infos</string>
|
||||||
<string name="nginx_url_pref">Addresse du serveur IPTV</string>
|
<string name="iptvbox_url_pref">Addresse du serveur IPTV</string>
|
||||||
<string name="example_password">00:1A:79:XX:XX</string>
|
<string name="example_password">00:1A:79:XX:XX</string>
|
||||||
<string name="example_ip">http:\/\/exemple\-portal.com:8080\/c\/</string>
|
<string name="example_ip">http:\/\/exemple\-portal.com:8080\/c\/</string>
|
||||||
|
<string name="tags_info_title">Ajoutez d\'autres pays ou catégories</string>
|
||||||
|
<string name="tags_info_summary">Par défaut vous avez déja le contenu Arabe, Anglais et français. Dans la case \'127.0.0.1\', renseignez vos tags séparés par \| comme par exemple : Sport\|SportS\|vip\|canada\|ca\|brasil\|it\|italia\|france\|fr </string>
|
||||||
</resources>
|
</resources>
|
|
@ -1,8 +1,10 @@
|
||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<resources>
|
<resources>
|
||||||
<string name="nginx_info_title">What is Maciptv ?</string>
|
<string name="iptvbox_info_title">What is Maciptv ?</string>
|
||||||
<string name="example_password">00:1A:79:XX:XX</string>
|
<string name="example_password">00:1A:79:XX:XX</string>
|
||||||
<string name="example_ip">http:\/\/exemple\-portal.com:8080\/c\/</string>
|
<string name="example_ip">http:\/\/exemple\-portal.com:8080\/c\/</string>
|
||||||
<string name="example_username">MyCoolIPTVname</string>
|
<string name="example_username">MyCoolIPTVname</string>
|
||||||
<string name="nginx_info_summary">Maciptv is an extension that will allow you to enjoy your IPTV accounts. Give the provider\'s portal url http:\/\/exemple.com\/c\/ and your mac 00:1A:79:XX:XX as password123. To select/revert to the default account, create an account with \'none\' instead of \'127.0.0.1\' and no need to fill in the other info</string>
|
<string name="iptvbox_info_summary">Maciptv is an extension that will allow you to enjoy your IPTV accounts. Give the provider\'s portal url http:\/\/exemple.com\/c\/ and your mac 00:1A:79:XX:XX as password123. To select/revert to the default account, create an account with \'none\' instead of \'127.0.0.1\' and no need to fill in the other info</string>
|
||||||
|
<string name="tags_info_title">Add other countries or categories</string>
|
||||||
|
<string name="tags_info_summary">By default you already have Arabic, English and French content. Fill the box \'127.0.0.1\' with your tags separated by \|. For example if you want all the categories that contain the word \'sport\' or \'sports\' and you also want the content from Canada (CA) and Italia (IT) then you can write: sport\|sports\|canada\|ca\|italia\|it </string>
|
||||||
</resources>
|
</resources>
|
Loading…
Add table
Add a link
Reference in a new issue