fix: case for empty headers
This commit is contained in:
parent
4d28ae2e3e
commit
2f30bdb6a8
2 changed files with 18 additions and 16 deletions
|
@ -53,10 +53,10 @@ class DownloadsManager(private val context: Context) {
|
||||||
saveDownloads()
|
saveDownloads()
|
||||||
}
|
}
|
||||||
|
|
||||||
fun removeDownload(downloadedType: DownloadedType, onFinished: () -> Unit) {
|
fun removeDownload(downloadedType: DownloadedType, toast: Boolean = true, onFinished: () -> Unit) {
|
||||||
downloadsList.remove(downloadedType)
|
downloadsList.remove(downloadedType)
|
||||||
CoroutineScope(Dispatchers.IO).launch {
|
CoroutineScope(Dispatchers.IO).launch {
|
||||||
removeDirectory(downloadedType)
|
removeDirectory(downloadedType, toast)
|
||||||
withContext(Dispatchers.Main) {
|
withContext(Dispatchers.Main) {
|
||||||
onFinished()
|
onFinished()
|
||||||
}
|
}
|
||||||
|
@ -213,7 +213,7 @@ class DownloadsManager(private val context: Context) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun removeDirectory(downloadedType: DownloadedType) {
|
private fun removeDirectory(downloadedType: DownloadedType, toast: Boolean) {
|
||||||
val baseDirectory = getBaseDirectory(context, downloadedType.type)
|
val baseDirectory = getBaseDirectory(context, downloadedType.type)
|
||||||
val directory =
|
val directory =
|
||||||
baseDirectory?.findFolder(downloadedType.title)?.findFolder(downloadedType.chapter)
|
baseDirectory?.findFolder(downloadedType.title)?.findFolder(downloadedType.chapter)
|
||||||
|
@ -222,8 +222,7 @@ class DownloadsManager(private val context: Context) {
|
||||||
if (directory?.exists() == true) {
|
if (directory?.exists() == true) {
|
||||||
val deleted = directory.deleteRecursively(context, false)
|
val deleted = directory.deleteRecursively(context, false)
|
||||||
if (deleted) {
|
if (deleted) {
|
||||||
snackString("Successfully deleted")
|
if (toast) snackString("Successfully deleted")
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
snackString("Failed to delete directory")
|
snackString("Failed to delete directory")
|
||||||
}
|
}
|
||||||
|
|
|
@ -20,6 +20,7 @@ import androidx.media3.common.util.UnstableApi
|
||||||
import ani.dantotsu.FileUrl
|
import ani.dantotsu.FileUrl
|
||||||
import ani.dantotsu.R
|
import ani.dantotsu.R
|
||||||
import ani.dantotsu.connections.crashlytics.CrashlyticsInterface
|
import ani.dantotsu.connections.crashlytics.CrashlyticsInterface
|
||||||
|
import ani.dantotsu.defaultHeaders
|
||||||
import ani.dantotsu.download.DownloadedType
|
import ani.dantotsu.download.DownloadedType
|
||||||
import ani.dantotsu.download.DownloadsManager
|
import ani.dantotsu.download.DownloadsManager
|
||||||
import ani.dantotsu.download.DownloadsManager.Companion.getSubDirectory
|
import ani.dantotsu.download.DownloadsManager.Companion.getSubDirectory
|
||||||
|
@ -32,6 +33,7 @@ import ani.dantotsu.parsers.Subtitle
|
||||||
import ani.dantotsu.parsers.Video
|
import ani.dantotsu.parsers.Video
|
||||||
import ani.dantotsu.settings.saving.PrefManager
|
import ani.dantotsu.settings.saving.PrefManager
|
||||||
import ani.dantotsu.snackString
|
import ani.dantotsu.snackString
|
||||||
|
import ani.dantotsu.toast
|
||||||
import ani.dantotsu.util.Logger
|
import ani.dantotsu.util.Logger
|
||||||
import com.anggrayudi.storage.file.forceDelete
|
import com.anggrayudi.storage.file.forceDelete
|
||||||
import com.anggrayudi.storage.file.openOutputStream
|
import com.anggrayudi.storage.file.openOutputStream
|
||||||
|
@ -198,7 +200,6 @@ class AnimeDownloaderService : Service() {
|
||||||
@androidx.annotation.OptIn(UnstableApi::class)
|
@androidx.annotation.OptIn(UnstableApi::class)
|
||||||
suspend fun download(task: AnimeDownloadTask) {
|
suspend fun download(task: AnimeDownloadTask) {
|
||||||
try {
|
try {
|
||||||
//val downloadManager = Helper.downloadManager(this@AnimeDownloaderService)
|
|
||||||
withContext(Dispatchers.Main) {
|
withContext(Dispatchers.Main) {
|
||||||
val notifi = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) {
|
val notifi = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) {
|
||||||
ContextCompat.checkSelfPermission(
|
ContextCompat.checkSelfPermission(
|
||||||
|
@ -232,13 +233,17 @@ class AnimeDownloaderService : Service() {
|
||||||
this@AnimeDownloaderService,
|
this@AnimeDownloaderService,
|
||||||
outputFile.uri
|
outputFile.uri
|
||||||
)
|
)
|
||||||
val headersStringBuilder = StringBuilder().append(" ")
|
val headersStringBuilder = StringBuilder()
|
||||||
task.video.file.headers.forEach {
|
task.video.file.headers.forEach {
|
||||||
headersStringBuilder.append("\"${it.key}: ${it.value}\"\'\r\n\'")
|
headersStringBuilder.append("\"${it.key}: ${it.value}\"\'\r\n\'")
|
||||||
}
|
}
|
||||||
headersStringBuilder.append(" ")
|
if (!task.video.file.headers.containsKey("User-Agent")) { //headers should never be empty now
|
||||||
|
headersStringBuilder.append("\"").append("User-Agent: ")
|
||||||
|
.append(defaultHeaders["User-Agent"]).append("\"\'\r\n\'")
|
||||||
|
}
|
||||||
|
val probeRequest = "-headers $headersStringBuilder -i ${task.video.file.url} -show_entries format=duration -v quiet -of csv=\"p=0\""
|
||||||
FFprobeKit.executeAsync(
|
FFprobeKit.executeAsync(
|
||||||
"-headers $headersStringBuilder -i ${task.video.file.url} -show_entries format=duration -v quiet -of csv=\"p=0\"",
|
probeRequest,
|
||||||
{
|
{
|
||||||
Logger.log("FFprobeKit: $it")
|
Logger.log("FFprobeKit: $it")
|
||||||
}, {
|
}, {
|
||||||
|
@ -247,13 +252,10 @@ class AnimeDownloaderService : Service() {
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
var request = "-headers"
|
|
||||||
val headers = headersStringBuilder.toString()
|
val headers = headersStringBuilder.toString()
|
||||||
if (task.video.file.headers.isNotEmpty()) {
|
var request = "-headers $headers "
|
||||||
request += headers
|
|
||||||
}
|
|
||||||
request += "-i ${task.video.file.url} -c copy -bsf:a aac_adtstoasc -tls_verify 0 $path -v trace"
|
request += "-i ${task.video.file.url} -c copy -bsf:a aac_adtstoasc -tls_verify 0 $path -v trace"
|
||||||
println("Request: $request")
|
Logger.log("Request: $request")
|
||||||
val ffTask =
|
val ffTask =
|
||||||
FFmpegKit.executeAsync(request,
|
FFmpegKit.executeAsync(request,
|
||||||
{ session ->
|
{ session ->
|
||||||
|
@ -310,14 +312,15 @@ class AnimeDownloaderService : Service() {
|
||||||
} Download failed"
|
} Download failed"
|
||||||
)
|
)
|
||||||
notificationManager.notify(NOTIFICATION_ID, builder.build())
|
notificationManager.notify(NOTIFICATION_ID, builder.build())
|
||||||
snackString("${getTaskName(task.title, task.episode)} Download failed")
|
toast("${getTaskName(task.title, task.episode)} Download failed")
|
||||||
Logger.log("Download failed: ${ffTask.failStackTrace}")
|
Logger.log("Download failed: ${ffTask.failStackTrace}")
|
||||||
downloadsManager.removeDownload(
|
downloadsManager.removeDownload(
|
||||||
DownloadedType(
|
DownloadedType(
|
||||||
task.title,
|
task.title,
|
||||||
task.episode,
|
task.episode,
|
||||||
MediaType.ANIME,
|
MediaType.ANIME,
|
||||||
)
|
),
|
||||||
|
false
|
||||||
) {}
|
) {}
|
||||||
Injekt.get<CrashlyticsInterface>().logException(
|
Injekt.get<CrashlyticsInterface>().logException(
|
||||||
Exception(
|
Exception(
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue