Improved visibility

This commit is contained in:
Mylloon 2021-09-03 00:58:58 +02:00
parent 4ad4ddc731
commit f2b8f571ff
2 changed files with 47 additions and 24 deletions

View file

@ -142,7 +142,7 @@ class MainActivity : AppCompatActivity() {
override fun onCreateViewHolder( override fun onCreateViewHolder(
parent: ViewGroup, parent: ViewGroup,
viewType: Int viewType: Int,
): ViewHolder { // add viewHolder to the main page ): ViewHolder { // add viewHolder to the main page
val itemView = LayoutInflater.from(parent.context) val itemView = LayoutInflater.from(parent.context)
.inflate(R.layout.list_item_view, parent, false) .inflate(R.layout.list_item_view, parent, false)
@ -252,7 +252,7 @@ class MainActivity : AppCompatActivity() {
password: String, password: String,
app: String, app: String,
captchaID: String? = null, captchaID: String? = null,
captchaResponse: String? = null captchaResponse: String? = null,
) { ) {
if (ContextCompat.checkSelfPermission(this@MainActivity, Manifest.permission.INTERNET) if (ContextCompat.checkSelfPermission(this@MainActivity, Manifest.permission.INTERNET)
!= PackageManager.PERMISSION_GRANTED != PackageManager.PERMISSION_GRANTED
@ -362,7 +362,8 @@ class MainActivity : AppCompatActivity() {
setContentView(R.layout.activity_app_list) // display list of app version page setContentView(R.layout.activity_app_list) // display list of app version page
if (!settingsButtonVisible) toggleSettingsButtonVisibility() // check if the settings button isn't already showed and show it if necessary if (!settingsButtonVisible) toggleSettingsButtonVisibility() // check if the settings button isn't already showed and show it if necessary
inAppList = true inAppList = true
class Adapter(private val values: List<String>) : RecyclerView.Adapter<Adapter.ViewHolder>() { class Adapter(private val values: List<String>) :
RecyclerView.Adapter<Adapter.ViewHolder>() {
override fun getItemCount() = values.size override fun getItemCount() = values.size
override fun onCreateViewHolder( override fun onCreateViewHolder(
@ -385,17 +386,22 @@ class MainActivity : AppCompatActivity() {
button = itemView?.findViewById(R.id.text_list_item_app_list) button = itemView?.findViewById(R.id.text_list_item_app_list)
button?.setOnClickListener { button?.setOnClickListener {
inAppList = false inAppList = false
appMobilismInfos = listInfos!![Regex("""\d+""").findAll(button?.text.toString()).map { it.groupValues[0] }.toList()[0].toInt() - 1] appMobilismInfos =
listInfos!![Regex("""\d+""").findAll(button?.text.toString())
.map { it.groupValues[0] }.toList()[0].toInt() - 1]
showAppInfoPage() showAppInfoPage()
} }
} }
} }
} }
val recyclerViewAppList: RecyclerView = findViewById(R.id.recyclerViewAppList) // get recyclerview
val recyclerViewAppList: RecyclerView =
findViewById(R.id.recyclerViewAppList) // get recyclerview
recyclerViewAppList.layoutManager = LinearLayoutManager(this) recyclerViewAppList.layoutManager = LinearLayoutManager(this)
val listInfosNames = mutableListOf<String>() val listInfosNames = mutableListOf<String>()
for (i in listInfos!!.indices) { // get all apps name for (i in listInfos!!.indices) { // get all apps name
val tmp = "${i + 1} - ${listInfos!![i]["title"]} (${listInfos!![i]["author"]})\n${listInfos!![i]["date"]}" val tmp =
"${i + 1} - ${listInfos!![i]["title"]} (${listInfos!![i]["author"]})\n${listInfos!![i]["date"]}"
listInfosNames += tmp listInfosNames += tmp
} }
recyclerViewAppList.adapter = Adapter(listInfosNames) recyclerViewAppList.adapter = Adapter(listInfosNames)
@ -414,7 +420,8 @@ class MainActivity : AppCompatActivity() {
infoApp = Scraper().parseInfos(link) infoApp = Scraper().parseInfos(link)
links = Scraper().parseDownloadLinks(infoApp["downloadLinks"]!!) links = Scraper().parseDownloadLinks(infoApp["downloadLinks"]!!)
} }
class Adapter(private val values: List<String>) : RecyclerView.Adapter<Adapter.ViewHolder>() { class Adapter(private val values: List<String>) :
RecyclerView.Adapter<Adapter.ViewHolder>() {
override fun getItemCount() = values.size override fun getItemCount() = values.size
override fun onCreateViewHolder( override fun onCreateViewHolder(
@ -440,7 +447,8 @@ class MainActivity : AppCompatActivity() {
startActivity( startActivity(
Intent( Intent(
Intent.ACTION_VIEW, Uri.parse( Intent.ACTION_VIEW, Uri.parse(
links[splitText[0]]!![splitText[1].replace("\\s".toRegex(), "").toInt() - 1] links[splitText[0]]!![splitText[1].replace("\\s".toRegex(),
"").toInt() - 1]
) )
) )
) )
@ -455,14 +463,16 @@ class MainActivity : AppCompatActivity() {
val listDownloads = mutableListOf<String>() val listDownloads = mutableListOf<String>()
for (arch in links.keys) { for (arch in links.keys) {
val recyclerViewAppDownloads: RecyclerView = findViewById(R.id.recyclerViewAppDownloads) // get recyclerview val recyclerViewAppDownloads: RecyclerView =
findViewById(R.id.recyclerViewAppDownloads) // get recyclerview
recyclerViewAppDownloads.layoutManager = LinearLayoutManager(this) recyclerViewAppDownloads.layoutManager = LinearLayoutManager(this)
for ((count, _) in links[arch]!!.withIndex()) { for ((count, _) in links[arch]!!.withIndex()) {
listDownloads += "$arch - ${count + 1}" listDownloads += "$arch - ${count + 1}"
} }
recyclerViewAppDownloads.adapter = Adapter(listDownloads) recyclerViewAppDownloads.adapter = Adapter(listDownloads)
} }
} else Toast.makeText(instance, "${getString(R.string.noURL)}...", Toast.LENGTH_SHORT).show() } else Toast.makeText(instance, "${getString(R.string.noURL)}...", Toast.LENGTH_SHORT)
.show()
} }
@SuppressLint("SetTextI18n") @SuppressLint("SetTextI18n")

View file

@ -11,7 +11,7 @@ class Scraper(
private var password: String? = null, // can be null if parsing a post private var password: String? = null, // can be null if parsing a post
private var app: String? = null, // can be null if parsing a post private var app: String? = null, // can be null if parsing a post
private var captchaID: String? = null, // can be null if no captcha private var captchaID: String? = null, // can be null if no captcha
private var captchaResponse: String? = null // can be null if no captcha private var captchaResponse: String? = null, // can be null if no captcha
) { ) {
private var url: String = "https://forum.mobilism.org" private var url: String = "https://forum.mobilism.org"
@ -181,25 +181,36 @@ class Scraper(
// elements["downloadLinks"] = null // elements["downloadLinks"] = null
// } // }
elements["changelogs"] = try { elements["changelogs"] = try {
var tmp = Regex("""What's New:</span> ?<br />(.*)<br /><br /><span style="c|font-weight: bold">T""").findAll(htmlPage) var tmp =
.map { it.groupValues[1] }.toList()[0] Regex("""What's New:</span> ?<br />(.*)<br /><br /><span style="c|font-weight: bold">T""").findAll(
if (tmp.length < 2) { // if result none, trying other method htmlPage)
tmp = Regex("""What's New:</span> ?<br />(.*)<br /><br /><span style="font-weight: bold">T""").findAll(htmlPage)
.map { it.groupValues[1] }.toList()[0] .map { it.groupValues[1] }.toList()[0]
if (tmp.length < 2) { // if result none, trying other method
tmp =
Regex("""What's New:</span> ?<br />(.*)<br /><br /><span style="font-weight: bold">T""").findAll(
htmlPage)
.map { it.groupValues[1] }.toList()[0]
} }
tmp.replace(Regex("""<br />\n?"""), "\n") // convert newline html to \n tmp.replace(Regex("""<br />\n?"""), "\n") // convert newline html to \n
} catch (e: Exception) { } catch (e: Exception) {
"No changelog found." "No changelog found."
} }
elements["downloadLinks"] = try { elements["downloadLinks"] = try {
htmlPage = htmlPage.replace(Regex("Download Instructions:</span>(.*?)?<br /><s"), "Download Instructions:</span><br /><s") htmlPage = htmlPage.replace(Regex("Download Instructions:</span>(.*?)?<br /><s"),
var tmp = Regex("""Download Instructions:</span> ?<br />(.*|[\s\S]*)<br /><br />Trouble downloading|</a></div>""").findAll(htmlPage) "Download Instructions:</span><br /><s")
.map { it.groupValues[1] }.toList()[0] var tmp =
if (tmp.length < 2) { // if result none, trying other method Regex("""Download Instructions:</span> ?<br />(.*|[\s\S]*)<br /><br />Trouble downloading|</a></div>""").findAll(
tmp = Regex("""Download Instructions:</span> ?<br />(.*|[\s\S]*)</a></div>""").findAll(htmlPage) htmlPage)
.map { it.groupValues[1] }.toList()[0] .map { it.groupValues[1] }.toList()[0]
if (tmp.length < 2) { // if result none, trying other method
tmp =
Regex("""Download Instructions:</span> ?<br />(.*|[\s\S]*)</a></div>""").findAll(
htmlPage)
.map { it.groupValues[1] }.toList()[0]
} }
tmp = tmp.replace(Regex("""\n|<a class="postlink" href="|\(Closed Filehost\) ?|<span style="font-weight: bold">|</span>|">(\S*)</a>"""), "") // remove html garbage tmp =
tmp.replace(Regex("""\n|<a class="postlink" href="|\(Closed Filehost\) ?|<span style="font-weight: bold">|</span>|">(\S*)</a>"""),
"") // remove html garbage
tmp = tmp.replace(Regex("""<br />\n?"""), "\n") // convert newline html to \n tmp = tmp.replace(Regex("""<br />\n?"""), "\n") // convert newline html to \n
tmp = tmp.replace(Regex("""Mirrors(?!:)|Mirror(?!s)(?!:)"""), "Mirror:") // add ":" tmp = tmp.replace(Regex("""Mirrors(?!:)|Mirror(?!s)(?!:)"""), "Mirror:") // add ":"
var finalTmp = "" var finalTmp = ""
@ -212,7 +223,7 @@ class Scraper(
} }
fun parseDownloadLinks(links: String): MutableMap<String, List<String>> { fun parseDownloadLinks(links: String): MutableMap<String, List<String>> {
val downloadLinks = links.split("\n").filter { it != ""} val downloadLinks = links.split("\n").filter { it != "" }
val categoryDL = mutableMapOf<String, List<String>>() val categoryDL = mutableMapOf<String, List<String>>()
var inCategory: String? = null var inCategory: String? = null
val noCategoryString = "No Category" val noCategoryString = "No Category"
@ -229,12 +240,14 @@ class Scraper(
tempCategoryDL.clear() tempCategoryDL.clear()
} }
var previous = "" var previous = ""
if (("Mirror" in downloadLink) and (inCategory != null)) previous = " of $inCategory" if (("Mirror" in downloadLink) and (inCategory != null)) previous =
" of $inCategory"
inCategory = "${downloadLink.replace(":", "")}$previous" // first category inCategory = "${downloadLink.replace(":", "")}$previous" // first category
} }
} }
if (tempCategoryDL.isNotEmpty()) categoryDL[inCategory!!] = tempCategoryDL if (tempCategoryDL.isNotEmpty()) categoryDL[inCategory!!] = tempCategoryDL
if (tempNoCategoryDL.isNotEmpty()) categoryDL[noCategoryString] = tempNoCategoryDL else categoryDL.remove(noCategoryString) if (tempNoCategoryDL.isNotEmpty()) categoryDL[noCategoryString] =
tempNoCategoryDL else categoryDL.remove(noCategoryString)
return categoryDL return categoryDL
} }