LibreTube/app/src/main/java/com/github/libretube/extensions/ToDownloadItems.kt

62 lines
1.8 KiB
Kotlin
Raw Normal View History

package com.github.libretube.extensions
import com.github.libretube.api.obj.Streams
import com.github.libretube.db.obj.DownloadItem
import com.github.libretube.enums.FileType
fun Streams.toDownloadItems(
videoId: String,
fileName: String,
videoFormat: String?,
videoQuality: String?,
audioFormat: String?,
audioQuality: String?,
subtitleCode: String?
): List<DownloadItem> {
val items = mutableListOf<DownloadItem>()
if (!videoQuality.isNullOrEmpty() && !videoFormat.isNullOrEmpty()) {
2023-01-26 23:55:23 +05:30
val stream = videoStreams.find { it.quality == videoQuality && it.format == videoFormat }
items.add(
DownloadItem(
type = FileType.VIDEO,
videoId = videoId,
2023-01-26 23:55:23 +05:30
fileName = stream.qualityString(fileName),
path = "",
url = stream?.url,
format = videoFormat,
quality = videoQuality
)
)
}
if (!audioQuality.isNullOrEmpty() && !audioFormat.isNullOrEmpty()) {
2023-01-26 23:55:23 +05:30
val stream = audioStreams.find { it.quality == audioQuality && it.format == audioFormat }
items.add(
DownloadItem(
type = FileType.AUDIO,
videoId = videoId,
2023-01-26 23:55:23 +05:30
fileName = stream.qualityString(fileName),
path = "",
url = stream?.url,
format = audioFormat,
quality = audioQuality
)
)
}
if (!subtitleCode.isNullOrEmpty()) {
items.add(
DownloadItem(
type = FileType.SUBTITLE,
videoId = videoId,
2023-01-26 23:55:23 +05:30
fileName = "${fileName}_$subtitleCode.srt",
path = "",
2023-01-26 23:55:23 +05:30
url = subtitles.find { it.code == subtitleCode }?.url
)
)
}
return items
}