fix: some anilist markdown
This commit is contained in:
parent
eb5e2623a0
commit
1028ac66cb
6 changed files with 119 additions and 71 deletions
101
app/src/main/java/ani/dantotsu/util/AniMarkdown.kt
Normal file
101
app/src/main/java/ani/dantotsu/util/AniMarkdown.kt
Normal file
|
@ -0,0 +1,101 @@
|
|||
package ani.dantotsu.util
|
||||
|
||||
import ani.dantotsu.util.ColorEditor.Companion.toCssColor
|
||||
|
||||
class AniMarkdown { //istg anilist has the worst api
|
||||
companion object {
|
||||
private fun convertNestedImageToHtml(markdown: String): String {
|
||||
val regex = """\[\!\[(.*?)\]\((.*?)\)\]\((.*?)\)""".toRegex()
|
||||
return regex.replace(markdown) { matchResult ->
|
||||
val altText = matchResult.groupValues[1]
|
||||
val imageUrl = matchResult.groupValues[2]
|
||||
val linkUrl = matchResult.groupValues[3]
|
||||
"""<a href="$linkUrl"><img src="$imageUrl" alt="$altText"></a>"""
|
||||
}
|
||||
}
|
||||
|
||||
private fun convertImageToHtml(markdown: String): String {
|
||||
val regex = """\!\[(.*?)\]\((.*?)\)""".toRegex()
|
||||
return regex.replace(markdown) { matchResult ->
|
||||
val altText = matchResult.groupValues[1]
|
||||
val imageUrl = matchResult.groupValues[2]
|
||||
"""<img src="$imageUrl" alt="$altText">"""
|
||||
}
|
||||
}
|
||||
|
||||
private fun convertLinkToHtml(markdown: String): String {
|
||||
val regex = """\[(.*?)\]\((.*?)\)""".toRegex()
|
||||
return regex.replace(markdown) { matchResult ->
|
||||
val linkText = matchResult.groupValues[1]
|
||||
val linkUrl = matchResult.groupValues[2]
|
||||
"""<a href="$linkUrl">$linkText</a>"""
|
||||
}
|
||||
}
|
||||
|
||||
private fun replaceLeftovers(html: String): String {
|
||||
return html.replace(" ", " ")
|
||||
.replace("&", "&")
|
||||
.replace("<", "<")
|
||||
.replace(">", ">")
|
||||
.replace(""", "\"")
|
||||
.replace("'", "'")
|
||||
.replace("<pre>", "")
|
||||
.replace("`", "")
|
||||
.replace("~", "")
|
||||
.replace(">\n<", "><")
|
||||
.replace("\n", "<br>")
|
||||
}
|
||||
|
||||
private fun underlineToHtml(html: String): String {
|
||||
return html.replace("(?s)___(.*?)___".toRegex(), "<br><em><strong>$1</strong></em><br>")
|
||||
.replace("(?s)__(.*?)__".toRegex(), "<br><strong>$1</strong><br>")
|
||||
.replace("(?s)[\\s]+_([^_]+)_[\\s]+".toRegex(), "<em>$1</em>")
|
||||
}
|
||||
|
||||
fun getBasicAniHTML(html: String): String {
|
||||
val step0 = convertNestedImageToHtml(html)
|
||||
val step1 = convertImageToHtml(step0)
|
||||
val step2 = convertLinkToHtml(step1)
|
||||
val step3 = replaceLeftovers(step2)
|
||||
return underlineToHtml(step3)
|
||||
}
|
||||
|
||||
fun getFullAniHTML(html: String, backGroundColor: Int, textColor: Int): String {
|
||||
val basicHtml = getBasicAniHTML(html)
|
||||
|
||||
|
||||
return """
|
||||
<html>
|
||||
<head>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0, charset=UTF-8">
|
||||
<style>
|
||||
body {
|
||||
background-color: ${backGroundColor.toCssColor()};
|
||||
color: ${textColor.toCssColor()};
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
max-width: 100%;
|
||||
overflow-x: hidden; /* Prevent horizontal scrolling */
|
||||
}
|
||||
img {
|
||||
max-width: 100%;
|
||||
height: auto; /* Maintain aspect ratio */
|
||||
}
|
||||
video {
|
||||
max-width: 100%;
|
||||
height: auto; /* Maintain aspect ratio */
|
||||
}
|
||||
a {
|
||||
color: ${textColor.toCssColor()};
|
||||
}
|
||||
/* Add responsive design elements for other content as needed */
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
$basicHtml
|
||||
</body>
|
||||
|
||||
""".trimIndent()
|
||||
}
|
||||
}
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue