forked from recloudstream/cloudstream
update votes to sha256 and add github link
This commit is contained in:
parent
37c9be96bb
commit
8172696d1a
4 changed files with 42 additions and 21 deletions
|
@ -20,47 +20,45 @@ object VotingApi { // please do not cheat the votes lol
|
||||||
|
|
||||||
private fun transformUrl(url: String): String = // dont touch or all votes get reset
|
private fun transformUrl(url: String): String = // dont touch or all votes get reset
|
||||||
MessageDigest
|
MessageDigest
|
||||||
.getInstance("SHA-1")
|
.getInstance("SHA-256")
|
||||||
.digest("${url}#funny-salt".toByteArray())
|
.digest("${url}#funny-salt".toByteArray())
|
||||||
.fold("") { str, it -> str + "%02x".format(it) }
|
.fold("") { str, it -> str + "%02x".format(it) }
|
||||||
|
|
||||||
suspend fun SitePlugin.getVotes(): Int {
|
suspend fun SitePlugin.getVotes(): Int {
|
||||||
if (repositoryUrl == null) return 0
|
return getVotes(url)
|
||||||
return getVotes(repositoryUrl, url)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
suspend fun SitePlugin.vote(requestType: VoteType): Int {
|
suspend fun SitePlugin.vote(requestType: VoteType): Int {
|
||||||
if (repositoryUrl == null) return 0
|
return vote(url, requestType)
|
||||||
return vote(repositoryUrl, url, requestType)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
fun SitePlugin.getVoteType(): VoteType {
|
fun SitePlugin.getVoteType(): VoteType {
|
||||||
if (repositoryUrl == null) return VoteType.NONE
|
if (repositoryUrl == null) return VoteType.NONE
|
||||||
return getVoteType(repositoryUrl, url)
|
return getVoteType(url)
|
||||||
}
|
}
|
||||||
|
|
||||||
suspend fun getVotes(repositoryUrl: String, pluginUrl: String): Int {
|
suspend fun getVotes(pluginUrl: String): Int {
|
||||||
val url = "${apiDomain}/get/cs3-votes-${transformUrl(repositoryUrl)}/${transformUrl(pluginUrl)}"
|
val url = "${apiDomain}/get/cs3-votes/${transformUrl(pluginUrl)}"
|
||||||
Log.d(LOGKEY, "Requesting: $url")
|
Log.d(LOGKEY, "Requesting: $url")
|
||||||
return app.get(url).parsedSafe<Result>()?.value ?: (0.also {
|
return app.get(url).parsedSafe<Result>()?.value ?: (0.also {
|
||||||
ioSafe {
|
ioSafe {
|
||||||
createBucket(repositoryUrl, pluginUrl)
|
createBucket(pluginUrl)
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
fun getVoteType(repositoryUrl: String, pluginUrl: String): VoteType {
|
fun getVoteType(pluginUrl: String): VoteType {
|
||||||
return getKey("cs3-votes-${transformUrl(repositoryUrl)}/${transformUrl(pluginUrl)}") ?: VoteType.NONE
|
return getKey("cs3-votes/${transformUrl(pluginUrl)}") ?: VoteType.NONE
|
||||||
}
|
}
|
||||||
|
|
||||||
private suspend fun createBucket(repositoryUrl: String, pluginUrl: String) {
|
private suspend fun createBucket(pluginUrl: String) {
|
||||||
val url = "${apiDomain}/create?namespace=cs3-votes-${transformUrl(repositoryUrl)}&key=${transformUrl(pluginUrl)}&value=0&update_lowerbound=-2&update_upperbound=2&enable_reset=0"
|
val url = "${apiDomain}/create?namespace=cs3-votes&key=${transformUrl(pluginUrl)}&value=0&update_lowerbound=-2&update_upperbound=2&enable_reset=0"
|
||||||
Log.d(LOGKEY, "Requesting: $url")
|
Log.d(LOGKEY, "Requesting: $url")
|
||||||
app.get(url)
|
app.get(url)
|
||||||
}
|
}
|
||||||
|
|
||||||
suspend fun vote(repositoryUrl: String, pluginUrl: String, requestType: VoteType): Int {
|
suspend fun vote(pluginUrl: String, requestType: VoteType): Int {
|
||||||
val savedType: VoteType = getKey("cs3-votes-${transformUrl(repositoryUrl)}/${transformUrl(pluginUrl)}") ?: VoteType.NONE
|
val savedType: VoteType = getKey("cs3-votes/${transformUrl(pluginUrl)}") ?: VoteType.NONE
|
||||||
var newType: VoteType = requestType
|
var newType: VoteType = requestType
|
||||||
var changeValue = 0
|
var changeValue = 0
|
||||||
if (requestType == savedType) {
|
if (requestType == savedType) {
|
||||||
|
@ -71,11 +69,11 @@ object VotingApi { // please do not cheat the votes lol
|
||||||
} else if (savedType != requestType) {
|
} else if (savedType != requestType) {
|
||||||
changeValue = -savedType.value + requestType.value
|
changeValue = -savedType.value + requestType.value
|
||||||
}
|
}
|
||||||
val url = "${apiDomain}/update/cs3-votes-${transformUrl(repositoryUrl)}/${transformUrl(pluginUrl)}?amount=${changeValue}"
|
val url = "${apiDomain}/update/cs3-votes/${transformUrl(pluginUrl)}?amount=${changeValue}"
|
||||||
Log.d(LOGKEY, "Requesting: $url")
|
Log.d(LOGKEY, "Requesting: $url")
|
||||||
val res = app.get(url).parsedSafe<Result>()?.value
|
val res = app.get(url).parsedSafe<Result>()?.value
|
||||||
if (res != null) {
|
if (res != null) {
|
||||||
setKey("cs3-votes-${transformUrl(repositoryUrl)}/${transformUrl(pluginUrl)}", newType)
|
setKey("cs3-votes/${transformUrl(pluginUrl)}", newType)
|
||||||
}
|
}
|
||||||
return res ?: 0
|
return res ?: 0
|
||||||
}
|
}
|
||||||
|
|
|
@ -135,7 +135,7 @@ class PluginAdapter(
|
||||||
val metadata = data.plugin.second
|
val metadata = data.plugin.second
|
||||||
val disabled = metadata.status == PROVIDER_STATUS_DOWN
|
val disabled = metadata.status == PROVIDER_STATUS_DOWN
|
||||||
val alpha = if (disabled) 0.6f else 1f
|
val alpha = if (disabled) 0.6f else 1f
|
||||||
val isLocal = data.plugin.second.repositoryUrl == null
|
val isLocal = !data.plugin.second.url.startsWith("http")
|
||||||
itemView.main_text?.alpha = alpha
|
itemView.main_text?.alpha = alpha
|
||||||
itemView.sub_text?.alpha = alpha
|
itemView.sub_text?.alpha = alpha
|
||||||
|
|
||||||
|
@ -216,12 +216,18 @@ class PluginAdapter(
|
||||||
itemView.lang_icon.text = fromTwoLettersToLanguage(metadata.language)
|
itemView.lang_icon.text = fromTwoLettersToLanguage(metadata.language)
|
||||||
}
|
}
|
||||||
|
|
||||||
ioSafe {
|
if (isLocal) {
|
||||||
metadata.getVotes().main {
|
itemView.ext_votes?.isVisible = false
|
||||||
itemView.ext_votes?.setText(txt(R.string.votes_format, prettyCount(it)))
|
} else {
|
||||||
|
itemView.ext_votes?.isVisible = true
|
||||||
|
ioSafe {
|
||||||
|
metadata.getVotes().main {
|
||||||
|
itemView.ext_votes?.setText(txt(R.string.votes_format, prettyCount(it)))
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
if (metadata.fileSize != null) {
|
if (metadata.fileSize != null) {
|
||||||
itemView.ext_filesize?.isVisible = true
|
itemView.ext_filesize?.isVisible = true
|
||||||
itemView.ext_filesize?.text = formatShortFileSize(itemView.context, metadata.fileSize)
|
itemView.ext_filesize?.text = formatShortFileSize(itemView.context, metadata.fileSize)
|
||||||
|
|
|
@ -18,6 +18,7 @@ import com.lagradost.cloudstream3.plugins.VotingApi.vote
|
||||||
import com.lagradost.cloudstream3.utils.Coroutines.ioSafe
|
import com.lagradost.cloudstream3.utils.Coroutines.ioSafe
|
||||||
import com.lagradost.cloudstream3.utils.Coroutines.main
|
import com.lagradost.cloudstream3.utils.Coroutines.main
|
||||||
import com.lagradost.cloudstream3.utils.UIHelper.colorFromAttribute
|
import com.lagradost.cloudstream3.utils.UIHelper.colorFromAttribute
|
||||||
|
import com.lagradost.cloudstream3.AcraApplication.Companion.openBrowser
|
||||||
|
|
||||||
|
|
||||||
class PluginDetailsFragment(val data: PluginViewData) : BottomSheetDialogFragment() {
|
class PluginDetailsFragment(val data: PluginViewData) : BottomSheetDialogFragment() {
|
||||||
|
@ -68,6 +69,13 @@ class PluginDetailsFragment(val data: PluginViewData) : BottomSheetDialogFragmen
|
||||||
plugin_status?.text = resources.getStringArray(R.array.extension_statuses)[metadata.status]
|
plugin_status?.text = resources.getStringArray(R.array.extension_statuses)[metadata.status]
|
||||||
plugin_types?.text = if ((metadata.tvTypes == null) || metadata.tvTypes.isEmpty()) getString(R.string.no_data) else metadata.tvTypes.joinToString(", ")
|
plugin_types?.text = if ((metadata.tvTypes == null) || metadata.tvTypes.isEmpty()) getString(R.string.no_data) else metadata.tvTypes.joinToString(", ")
|
||||||
|
|
||||||
|
github_btn.setOnClickListener {
|
||||||
|
if (metadata.repositoryUrl != null) {
|
||||||
|
openBrowser(metadata.repositoryUrl)
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
upvote.setOnClickListener {
|
upvote.setOnClickListener {
|
||||||
ioSafe {
|
ioSafe {
|
||||||
metadata.vote(VotingApi.VoteType.UPVOTE).main {
|
metadata.vote(VotingApi.VoteType.UPVOTE).main {
|
||||||
|
|
|
@ -34,6 +34,7 @@
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_gravity="center_vertical"
|
android:layout_gravity="center_vertical"
|
||||||
|
android:layout_weight="1"
|
||||||
android:gravity="center_vertical"
|
android:gravity="center_vertical"
|
||||||
android:paddingStart="10dp"
|
android:paddingStart="10dp"
|
||||||
android:paddingEnd="10dp"
|
android:paddingEnd="10dp"
|
||||||
|
@ -41,6 +42,14 @@
|
||||||
android:textSize="20sp"
|
android:textSize="20sp"
|
||||||
android:textStyle="normal"
|
android:textStyle="normal"
|
||||||
tools:text="Hello world" />
|
tools:text="Hello world" />
|
||||||
|
|
||||||
|
<ImageView
|
||||||
|
android:id="@+id/github_btn"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_gravity="center_vertical|end"
|
||||||
|
android:background="?attr/selectableItemBackgroundBorderless"
|
||||||
|
android:src="@drawable/ic_github_logo" />
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
|
|
||||||
<LinearLayout
|
<LinearLayout
|
||||||
|
|
Loading…
Reference in a new issue