Skip to content

Commit 0593cfb

Browse files
authored
Add linting to library (#2301)
1 parent 0d77f7b commit 0593cfb

File tree

14 files changed

+73
-71
lines changed

14 files changed

+73
-71
lines changed

build.gradle.kts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
plugins {
22
alias(libs.plugins.android.application) apply false
3+
alias(libs.plugins.android.lint) apply false
34
alias(libs.plugins.android.multiplatform.library) apply false
45
alias(libs.plugins.buildkonfig) apply false // Universal build config
56
alias(libs.plugins.dokka) apply false

gradle/libs.versions.toml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -112,6 +112,7 @@ work-runtime-ktx = { module = "androidx.work:work-runtime-ktx", version.ref = "w
112112

113113
[plugins]
114114
android-application = { id = "com.android.application", version.ref = "androidGradlePlugin" }
115+
android-lint = { id = "com.android.lint", version.ref = "androidGradlePlugin" }
115116
android-multiplatform-library = { id = "com.android.kotlin.multiplatform.library", version.ref = "androidGradlePlugin" }
116117
buildkonfig = { id = "com.codingfeline.buildkonfig", version.ref = "buildkonfigGradlePlugin" }
117118
dokka = { id = "org.jetbrains.dokka", version.ref = "dokkaGradlePlugin" }

library/build.gradle.kts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ import org.jetbrains.kotlin.gradle.tasks.KotlinJvmCompile
77

88
plugins {
99
id("maven-publish") // Gradle core plugin
10+
alias(libs.plugins.android.lint)
1011
alias(libs.plugins.kotlin.multiplatform)
1112
alias(libs.plugins.android.multiplatform.library)
1213
alias(libs.plugins.buildkonfig)

library/lint.xml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<lint>
3+
<issue id="TrulyRandom">
4+
<ignore path="**/CryptoJS.class" />
5+
</issue>
6+
</lint>

library/src/commonMain/kotlin/com/lagradost/cloudstream3/MainAPI.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2502,7 +2502,7 @@ constructor(
25022502

25032503
fun Episode.addDate(date: String?, format: String = "yyyy-MM-dd") {
25042504
try {
2505-
this.date = SimpleDateFormat(format).parse(date ?: return)?.time
2505+
this.date = SimpleDateFormat(format, Locale.getDefault()).parse(date ?: return)?.time
25062506
} catch (e: Exception) {
25072507
logError(e)
25082508
}

library/src/commonMain/kotlin/com/lagradost/cloudstream3/extractors/ContentXExtractor.kt

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -17,12 +17,12 @@ open class ContentX : ExtractorApi() {
1717
val iSource = app.get(url, referer=extRef).text
1818
val iExtract = Regex("""window\.openPlayer\('([^']+)'""").find(iSource)!!.groups[1]?.value ?: throw ErrorLoadingException("iExtract is null")
1919

20-
val subUrls = mutableSetOf<String>()
20+
val subUrls = mutableSetOf<String>()
2121
Regex("""\"file\":\"([^\"]+)\",\"label\":\"([^\"]+)\"""").findAll(iSource).forEach {
2222
val (subUrl, subLang) = it.destructured
2323

24-
if (subUrl in subUrls) { return@forEach }
25-
subUrls.add(subUrl)
24+
if (subUrl in subUrls) { return@forEach }
25+
subUrls.add(subUrl)
2626

2727
subtitleCallback.invoke(
2828
newSubtitleFile(

library/src/commonMain/kotlin/com/lagradost/cloudstream3/extractors/DoodExtractor.kt

Lines changed: 13 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -77,7 +77,7 @@ open class DoodLaExtractor : ExtractorApi() {
7777
override var name = "DoodStream"
7878
override var mainUrl = "https://dood.la"
7979
override val requiresReferer = false
80-
80+
8181
private val alphabet = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"
8282

8383
override suspend fun getUrl(
@@ -87,18 +87,17 @@ open class DoodLaExtractor : ExtractorApi() {
8787
callback: (ExtractorLink) -> Unit
8888
) {
8989
val embedUrl = url.replace("/d/", "/e/")
90-
val req = app.get(embedUrl)
90+
val req = app.get(embedUrl)
9191
val host = getBaseUrl(req.url)
9292
val response0 = req.text
93-
val md5 = host + (Regex("/pass_md5/[^']*").find(response0)?.value ?: return)
93+
val md5 = host + (Regex("/pass_md5/[^']*").find(response0)?.value ?: return)
9494
val trueUrl = app.get(md5, referer = req.url).text + createHashTable() + "?token=" + md5.substringAfterLast("/")
95-
96-
val quality = Regex("\\d{3,4}p")
95+
val quality = Regex("\\d{3,4}p")
9796
.find(response0.substringAfter("<title>").substringBefore("</title>"))
9897
?.groupValues
9998
?.getOrNull(0)
100-
101-
callback.invoke(
99+
100+
callback.invoke(
102101
newExtractorLink(
103102
this.name,
104103
this.name,
@@ -108,19 +107,17 @@ open class DoodLaExtractor : ExtractorApi() {
108107
this.quality = getQualityFromName(quality)
109108
}
110109
)
111-
112110
}
113-
114-
private fun createHashTable(): String {
115-
return buildString {
116-
repeat(10) {
117-
append(alphabet.random())
111+
112+
private fun createHashTable(): String {
113+
return buildString {
114+
repeat(10) {
115+
append(alphabet.random())
116+
}
118117
}
119118
}
120-
}
121119

122-
123-
private fun getBaseUrl(url: String): String {
120+
private fun getBaseUrl(url: String): String {
124121
return URI(url).let {
125122
"${it.scheme}://${it.host}"
126123
}

library/src/commonMain/kotlin/com/lagradost/cloudstream3/extractors/Filegram.kt

Lines changed: 17 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -32,32 +32,29 @@ open class Filegram : ExtractorApi() {
3232
"Sec-Fetch-Site" to "same-site",
3333
"user-agent" to USER_AGENT,
3434
)
35-
35+
3636
val doc = app.get(getEmbedUrl(url), referer = referer).document
3737
val unpackedJs = unpackJs(doc).toString()
38-
val videoUrl = Regex("""file:\s*"([^"]+\.m3u8[^"]*)"""").find(unpackedJs)?.groupValues?.get(1)
38+
val videoUrl = Regex("""file:\s*"([^"]+\.m3u8[^"]*)"""").find(unpackedJs)?.groupValues?.get(1)
3939
if (videoUrl != null) {
4040
M3u8Helper.generateM3u8(
41-
this.name,
42-
fixUrl(videoUrl),
43-
"$mainUrl/",
44-
headers = header
45-
).forEach(callback)
41+
this.name,
42+
fixUrl(videoUrl),
43+
"$mainUrl/",
44+
headers = header
45+
).forEach(callback)
4646
}
4747
}
4848

49-
private fun unpackJs(script: Element): String? {
50-
return script.select("script").find { it.data().contains("eval(function(p,a,c,k,e,d)") }
51-
?.data()?.let { getAndUnpack(it) }
52-
}
53-
54-
private fun getEmbedUrl(url: String): String {
55-
return if (!url.contains("/embed-")) {
56-
val videoId = url.substringAfter("$mainUrl/")
57-
"$mainUrl/embed-$videoId"
58-
} else {
59-
url
60-
}
61-
}
49+
private fun unpackJs(script: Element): String? {
50+
return script.select("script").find { it.data().contains("eval(function(p,a,c,k,e,d)") }
51+
?.data()?.let { getAndUnpack(it) }
52+
}
6253

54+
private fun getEmbedUrl(url: String): String {
55+
return if (!url.contains("/embed-")) {
56+
val videoId = url.substringAfter("$mainUrl/")
57+
"$mainUrl/embed-$videoId"
58+
} else url
59+
}
6360
}

library/src/commonMain/kotlin/com/lagradost/cloudstream3/extractors/RapidVidExtractor.kt

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -15,12 +15,12 @@ open class RapidVid : ExtractorApi() {
1515
val extRef = referer ?: ""
1616
val videoReq = app.get(url, referer=extRef).text
1717

18-
val subUrls = mutableSetOf<String>()
18+
val subUrls = mutableSetOf<String>()
1919
Regex("""captions\",\"file\":\"([^\"]+)\",\"label\":\"([^\"]+)\"""").findAll(videoReq).forEach {
2020
val (subUrl, subLang) = it.destructured
2121

22-
if (subUrl in subUrls) { return@forEach }
23-
subUrls.add(subUrl)
22+
if (subUrl in subUrls) { return@forEach }
23+
subUrls.add(subUrl)
2424

2525
subtitleCallback.invoke(
2626
newSubtitleFile(

library/src/commonMain/kotlin/com/lagradost/cloudstream3/extractors/TRsTXExtractor.kt

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -29,29 +29,28 @@ open class TRsTX : ExtractorApi() {
2929
)
3030
}
3131

32-
val vidLinks = mutableSetOf<String>()
32+
val vidLinks = mutableSetOf<String>()
3333
val vidMap = mutableListOf<Map<String, String>>()
3434
for (item in postJson) {
3535
if (item.file == null || item.title == null) continue
3636

3737
val fileUrl = "${mainUrl}/playlist/" + item.file.substring(1) + ".txt"
3838
val videoData = app.post(fileUrl, referer=extRef).text
3939

40-
if (videoData in vidLinks) { continue }
41-
vidLinks.add(videoData)
40+
if (videoData in vidLinks) { continue }
41+
vidLinks.add(videoData)
4242

4343
vidMap.add(mapOf(
4444
"title" to item.title,
4545
"videoData" to videoData
4646
))
4747
}
4848

49-
5049
for (mapEntry in vidMap) {
5150
val title = mapEntry["title"] ?: continue
5251
val m3uLink = mapEntry["videoData"] ?: continue
5352

54-
callback.invoke(
53+
callback.invoke(
5554
newExtractorLink(
5655
source = this.name,
5756
name = "${this.name} - ${title}",

0 commit comments

Comments
 (0)