mirror of
https://github.com/recloudstream/cloudstream.git
synced 2024-08-15 01:53:11 +00:00
Make sure matching subtitles are also deleted
This commit is contained in:
parent
14c1a36f82
commit
20b2fcaedc
2 changed files with 49 additions and 5 deletions
|
@ -5,6 +5,7 @@ import com.lagradost.cloudstream3.R
|
||||||
import com.lagradost.cloudstream3.ui.player.PlayerSubtitleHelper.Companion.toSubtitleMimeType
|
import com.lagradost.cloudstream3.ui.player.PlayerSubtitleHelper.Companion.toSubtitleMimeType
|
||||||
import com.lagradost.cloudstream3.utils.ExtractorLink
|
import com.lagradost.cloudstream3.utils.ExtractorLink
|
||||||
import com.lagradost.cloudstream3.utils.VideoDownloadManager
|
import com.lagradost.cloudstream3.utils.VideoDownloadManager
|
||||||
|
import com.lagradost.cloudstream3.utils.VideoDownloadManager.cleanDisplayName
|
||||||
import kotlin.math.max
|
import kotlin.math.max
|
||||||
import kotlin.math.min
|
import kotlin.math.min
|
||||||
|
|
||||||
|
@ -49,10 +50,6 @@ 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,
|
||||||
type: LoadType,
|
type: LoadType,
|
||||||
|
|
|
@ -1760,7 +1760,54 @@ object VideoDownloadManager {
|
||||||
downloadProgressEvent.invoke(Triple(id, 0, 0))
|
downloadProgressEvent.invoke(Triple(id, 0, 0))
|
||||||
downloadStatusEvent.invoke(id to DownloadType.IsStopped)
|
downloadStatusEvent.invoke(id to DownloadType.IsStopped)
|
||||||
downloadDeleteEvent.invoke(id)
|
downloadDeleteEvent.invoke(id)
|
||||||
return info.toFile(context)?.delete() ?: false
|
|
||||||
|
val isFileDeleted = info.toFile(context)?.delete() ?: false
|
||||||
|
if (isFileDeleted) deleteSubtitles(context, info)
|
||||||
|
|
||||||
|
return isFileDeleted
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun deleteSubtitles(context: Context, info: DownloadedFileInfo): Boolean {
|
||||||
|
val relative = info.relativePath
|
||||||
|
val display = info.displayName
|
||||||
|
|
||||||
|
val cleanDisplay = cleanDisplayName(display)
|
||||||
|
|
||||||
|
val subtitleFiles = getFolder(context, relative, info.basePath)
|
||||||
|
?.mapNotNull { (name, uri) ->
|
||||||
|
if (listOf(
|
||||||
|
".vtt",
|
||||||
|
".srt",
|
||||||
|
".txt",
|
||||||
|
".ass",
|
||||||
|
".ttml",
|
||||||
|
".sbv",
|
||||||
|
".dfxp"
|
||||||
|
).none { name.contains(it, true) }
|
||||||
|
) return@mapNotNull null
|
||||||
|
|
||||||
|
if (name.equals(display, true)) return@mapNotNull null
|
||||||
|
|
||||||
|
val cleanName = cleanDisplayName(name)
|
||||||
|
|
||||||
|
if (!cleanName.startsWith(cleanDisplay, true)) return@mapNotNull null
|
||||||
|
|
||||||
|
SafeFile.fromUri(context, uri)
|
||||||
|
} ?: return false
|
||||||
|
|
||||||
|
var allDeleted = true
|
||||||
|
subtitleFiles.forEach { subtitleFile ->
|
||||||
|
if (!subtitleFile.delete()) {
|
||||||
|
Log.e("SubtitleDeletion", "Failed to delete subtitle file: ${subtitleFile.name()}")
|
||||||
|
allDeleted = false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return allDeleted
|
||||||
|
}
|
||||||
|
|
||||||
|
fun cleanDisplayName(name: String): String {
|
||||||
|
return name.substringBeforeLast('.').trim()
|
||||||
}
|
}
|
||||||
|
|
||||||
fun getDownloadResumePackage(context: Context, id: Int): DownloadResumePackage? {
|
fun getDownloadResumePackage(context: Context, id: Int): DownloadResumePackage? {
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue