mirror of
https://github.com/recloudstream/cloudstream.git
synced 2024-08-15 01:53:11 +00:00
fixed subs on downloads
This commit is contained in:
parent
ce1f48978b
commit
6089cbc484
3 changed files with 45 additions and 32 deletions
|
@ -233,7 +233,7 @@ dependencies {
|
||||||
// To fix SSL fuckery on android 9
|
// To fix SSL fuckery on android 9
|
||||||
implementation("org.conscrypt:conscrypt-android:2.2.1")
|
implementation("org.conscrypt:conscrypt-android:2.2.1")
|
||||||
// Util to skip the URI file fuckery 🙏
|
// Util to skip the URI file fuckery 🙏
|
||||||
implementation("com.github.LagradOst:SafeFile:0.0.3")
|
implementation("com.github.LagradOst:SafeFile:0.0.5")
|
||||||
|
|
||||||
// API because cba maintaining it myself
|
// API because cba maintaining it myself
|
||||||
implementation("com.uwetrottmann.tmdb2:tmdb-java:2.6.0")
|
implementation("com.uwetrottmann.tmdb2:tmdb-java:2.6.0")
|
||||||
|
|
|
@ -50,6 +50,10 @@ class DownloadFileGenerator(
|
||||||
return null
|
return null
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fun cleanDisplayName(name: String): String {
|
||||||
|
return name.substringBeforeLast('.').trim()
|
||||||
|
}
|
||||||
|
|
||||||
override suspend fun generateLinks(
|
override suspend fun generateLinks(
|
||||||
clearCache: Boolean,
|
clearCache: Boolean,
|
||||||
isCasting: Boolean,
|
isCasting: Boolean,
|
||||||
|
@ -58,39 +62,48 @@ class DownloadFileGenerator(
|
||||||
offset: Int,
|
offset: Int,
|
||||||
): Boolean {
|
): Boolean {
|
||||||
val meta = episodes[currentIndex + offset]
|
val meta = episodes[currentIndex + offset]
|
||||||
callback(Pair(null, meta))
|
callback(null to meta)
|
||||||
|
|
||||||
context?.let { ctx ->
|
val ctx = context ?: return true
|
||||||
val relative = meta.relativePath
|
val relative = meta.relativePath ?: return true
|
||||||
val display = meta.displayName
|
val display = meta.displayName ?: return true
|
||||||
|
|
||||||
if (display == null || relative == null) {
|
val cleanDisplay = cleanDisplayName(display)
|
||||||
return@let
|
|
||||||
|
VideoDownloadManager.getFolder(ctx, relative, meta.basePath)
|
||||||
|
?.forEach { (name, uri) ->
|
||||||
|
// only these files are allowed, so no videos as subtitles
|
||||||
|
if (listOf(
|
||||||
|
".vtt",
|
||||||
|
".srt",
|
||||||
|
".txt",
|
||||||
|
".ass",
|
||||||
|
".ttml",
|
||||||
|
".sbv",
|
||||||
|
".dfxp"
|
||||||
|
).none { name.contains(it, true) }
|
||||||
|
) return@forEach
|
||||||
|
|
||||||
|
// cant have the exact same file as a subtitle
|
||||||
|
if (name.equals(display, true)) return@forEach
|
||||||
|
|
||||||
|
val cleanName = cleanDisplayName(name)
|
||||||
|
|
||||||
|
// we only want files with the approx same name
|
||||||
|
if (!cleanName.startsWith(cleanDisplay, true)) return@forEach
|
||||||
|
|
||||||
|
val realName = cleanName.removePrefix(cleanDisplay)
|
||||||
|
|
||||||
|
subtitleCallback(
|
||||||
|
SubtitleData(
|
||||||
|
realName.ifBlank { ctx.getString(R.string.default_subtitles) },
|
||||||
|
uri.toString(),
|
||||||
|
SubtitleOrigin.DOWNLOADED_FILE,
|
||||||
|
name.toSubtitleMimeType(),
|
||||||
|
emptyMap()
|
||||||
|
)
|
||||||
|
)
|
||||||
}
|
}
|
||||||
VideoDownloadManager.getFolder(ctx, relative, meta.basePath)
|
|
||||||
?.forEach { file ->
|
|
||||||
val name = display.removeSuffix(".mp4")
|
|
||||||
if (file.first != meta.displayName && file.first.startsWith(name)) {
|
|
||||||
val realName = file.first.removePrefix(name)
|
|
||||||
.removeSuffix(".vtt")
|
|
||||||
.removeSuffix(".srt")
|
|
||||||
.removeSuffix(".txt")
|
|
||||||
.trim()
|
|
||||||
.removePrefix("(")
|
|
||||||
.removeSuffix(")")
|
|
||||||
|
|
||||||
subtitleCallback(
|
|
||||||
SubtitleData(
|
|
||||||
realName.ifBlank { ctx.getString(R.string.default_subtitles) },
|
|
||||||
file.second.toString(),
|
|
||||||
SubtitleOrigin.DOWNLOADED_FILE,
|
|
||||||
name.toSubtitleMimeType(),
|
|
||||||
emptyMap()
|
|
||||||
)
|
|
||||||
)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
|
|
|
@ -505,7 +505,7 @@ object VideoDownloadManager {
|
||||||
): List<Pair<String, Uri>>? {
|
): List<Pair<String, Uri>>? {
|
||||||
val base = basePathToFile(context, basePath)
|
val base = basePathToFile(context, basePath)
|
||||||
val folder = base?.gotoDirectory(relativePath, false) ?: return null
|
val folder = base?.gotoDirectory(relativePath, false) ?: return null
|
||||||
if (folder.isDirectory() != false) return null
|
//if (folder.isDirectory() != false) return null
|
||||||
|
|
||||||
return folder.listFiles()
|
return folder.listFiles()
|
||||||
?.mapNotNull { (it.name() ?: "") to (it.uri() ?: return@mapNotNull null) }
|
?.mapNotNull { (it.name() ?: "") to (it.uri() ?: return@mapNotNull null) }
|
||||||
|
|
Loading…
Reference in a new issue