Update VideoDownloadManager.kt

This commit is contained in:
Arjix 2021-09-01 20:16:40 +03:00 committed by GitHub
parent 620c11d68f
commit 0b170b5493
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -1062,6 +1062,7 @@ object VideoDownloadManager {
}
val m3u8Helper = M3u8Helper()
logcatPrint("initialised the HLS downloader.")
val m3u8 = M3u8Helper.M3u8Stream(link.url, when (link.quality) {
-2 -> 360
@ -1071,7 +1072,6 @@ object VideoDownloadManager {
else -> null
}, mapOf("referer" to link.referer))
val tsIterator = m3u8Helper.hlsYield(listOf(m3u8))
logcatPrint("initialised the HLS downloader.")
val relativePath = (Environment.DIRECTORY_DOWNLOADS + '/' + folder + '/').replace('/', File.separatorChar)
val displayName = "$name.ts"
@ -1186,12 +1186,23 @@ object VideoDownloadManager {
createNotificationCallback.invoke(CreateNotificationMetadata(type, bytesDownloaded, (bytesDownloaded/tsProgress)*totalTs))
}
if (firstTs.errored) {
isFailed = true
fileStream.close()
deleteFile()
updateNotification()
return ERROR_CONNECTION_ERROR
fun stopIfError(ts: M3u8Helper.HlsDownloadData): Int? {
if (ts.errored || ts.bytes.isEmpty()) {
val error: Int
error = if (!ts.errored) {
logcatPrint("Error: No stream was found.")
ERROR_UNKNOWN
} else {
logcatPrint("Error: Failed to fetch data.")
ERROR_CONNECTION_ERROR
}
isFailed = true
fileStream.close()
deleteFile()
updateNotification()
return error
}
return null
}
val notificationCoroutine = main {
@ -1238,6 +1249,13 @@ object VideoDownloadManager {
notificationCoroutine.cancel()
}
stopIfError(firstTs).let {
if (it != null) {
closeAll()
return it
}
}
if (parentId != null)
downloadEvent += downloadEventListener
@ -1251,19 +1269,17 @@ object VideoDownloadManager {
closeAll()
return SUCCESS_STOPPED
}
if (ts.errored) {
isFailed = true
fileStream.close()
deleteFile()
updateNotification()
closeAll()
return ERROR_CONNECTION_ERROR
stopIfError(ts).let {
if (it != null) {
closeAll()
return it
}
}
fileStream.write(ts.bytes)
++tsProgress
tsProgress = ts.currentIndex.toLong()
bytesDownloaded += ts.bytes.size.toLong()
logcatPrint("Download progress $tsProgress/$totalTs")
logcatPrint("Download progress ${((tsProgress.toFloat()/totalTs.toFloat())*100).roundToInt()}%")
}
isDone = true
fileStream.close()