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