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 { val items = mutableListOf() if (!videoQuality.isNullOrEmpty() && !videoFormat.isNullOrEmpty()) { val stream = videoStreams?.find { it.quality == videoQuality && it.format == videoFormat } items.add( DownloadItem( type = FileType.VIDEO, videoId = videoId, fileName = fileName + "." + stream?.mimeType?.split("/")?.last(), path = "", url = stream?.url, format = videoFormat, quality = videoQuality ) ) } if (!audioQuality.isNullOrEmpty() && !audioFormat.isNullOrEmpty()) { val stream = audioStreams?.find { it.quality == audioQuality && it.format == audioFormat } items.add( DownloadItem( type = FileType.AUDIO, videoId = videoId, fileName = fileName + "." + stream?.mimeType?.split("/")?.last(), path = "", url = stream?.url, format = audioFormat, quality = audioQuality ) ) } if (!subtitleCode.isNullOrEmpty()) { items.add( DownloadItem( type = FileType.SUBTITLE, videoId = videoId, fileName = "$fileName.srt", path = "", url = subtitles?.find { it.code == subtitleCode }?.url ) ) } return items }