From 3d4e9b6df87cb2beb7c72b13ff77c88ede652622 Mon Sep 17 00:00:00 2001 From: deniscerri <64997243+deniscerri@users.noreply.github.com> Date: Sun, 27 Jul 2025 15:04:42 +0200 Subject: [PATCH] make youtube playlist fetch only through yt-dlp --- .../database/repository/ResultRepository.kt | 66 ++++++++++--------- .../java/com/deniscerri/ytdl/util/UiUtil.kt | 2 + .../util/extractors/newpipe/NewPipeUtil.kt | 4 +- 3 files changed, 37 insertions(+), 35 deletions(-) diff --git a/app/src/main/java/com/deniscerri/ytdl/database/repository/ResultRepository.kt b/app/src/main/java/com/deniscerri/ytdl/database/repository/ResultRepository.kt index 748cdf5e..cce30dcf 100644 --- a/app/src/main/java/com/deniscerri/ytdl/database/repository/ResultRepository.kt +++ b/app/src/main/java/com/deniscerri/ytdl/database/repository/ResultRepository.kt @@ -189,41 +189,43 @@ class ResultRepository(private val resultDao: ResultDao, private val commandTemp } private suspend fun getYoutubePlaylist(inputQuery: String, resetResults: Boolean, addToResults: Boolean) : List{ - val id = inputQuery.split("list=".toRegex()).dropLastWhile { it.isEmpty() }.toTypedArray()[1].split("&").first() - val playlistURL = "https://youtube.com/playlist?list=${id}" - if (resetResults) deleteAll() - val items = mutableListOf() - val ytExtractorResult = if (isUsingNewPipeExtractorDataFetching()){ - newPipeUtil.getPlaylistData(playlistURL) { - if (addToResults){ - runBlocking { - val ids = resultDao.insertMultiple(it) - ids.forEachIndexed { index, id -> - it[index].id = id - } - } - } - items.addAll(it) +// val id = inputQuery.split("list=".toRegex()).dropLastWhile { it.isEmpty() }.toTypedArray()[1].split("&").first() +// val playlistURL = "https://youtube.com/playlist?list=${id}" +// if (resetResults) deleteAll() +// val items = mutableListOf() +// val ytExtractorResult = if (isUsingNewPipeExtractorDataFetching()){ +// newPipeUtil.getPlaylistData(playlistURL) { +// if (addToResults){ +// runBlocking { +// val ids = resultDao.insertMultiple(it) +// ids.forEachIndexed { index, id -> +// it[index].id = id +// } +// } +// } +// items.addAll(it) +// } +// }else { +// Result.failure(Throwable()) +// } +// +// val response = if (ytExtractorResult.isSuccess){ +// ytExtractorResult.getOrElse { items } +// }else{ +// +// res +// } + + val res = ytdlpUtil.getFromYTDL(inputQuery) + if (addToResults) { + val ids = resultDao.insertMultiple(res) + ids.forEachIndexed { index, id -> + res[index].id = id } - }else { - Result.failure(Throwable()) } - val response = if (ytExtractorResult.isSuccess){ - ytExtractorResult.getOrElse { items } - }else{ - val res = ytdlpUtil.getFromYTDL(playlistURL) - if (addToResults) { - val ids = resultDao.insertMultiple(res) - ids.forEachIndexed { index, id -> - res[index].id = id - } - } - res - } - - itemCount.value = response.size - return response + itemCount.value = res.size + return res } private suspend fun getYoutubeChannel(url: String, resetResults: Boolean, addToResults: Boolean) : List{ diff --git a/app/src/main/java/com/deniscerri/ytdl/util/UiUtil.kt b/app/src/main/java/com/deniscerri/ytdl/util/UiUtil.kt index ab9a232d..fccb605c 100644 --- a/app/src/main/java/com/deniscerri/ytdl/util/UiUtil.kt +++ b/app/src/main/java/com/deniscerri/ytdl/util/UiUtil.kt @@ -2450,6 +2450,8 @@ object UiUtil { @SuppressLint("UnspecifiedRegisterReceiverFlag") fun showNewAppUpdateDialog(v: GithubRelease, context: Activity, preferences: SharedPreferences) { + if (context.isFinishing || context.isDestroyed) return + val downloadManager = context.getSystemService(Context.DOWNLOAD_SERVICE) as DownloadManager val skippedVersions = preferences.getString("skip_updates", "")?.split(",")?.distinct()?.toMutableList() ?: mutableListOf() diff --git a/app/src/main/java/com/deniscerri/ytdl/util/extractors/newpipe/NewPipeUtil.kt b/app/src/main/java/com/deniscerri/ytdl/util/extractors/newpipe/NewPipeUtil.kt index 9907f276..a43e6e4c 100644 --- a/app/src/main/java/com/deniscerri/ytdl/util/extractors/newpipe/NewPipeUtil.kt +++ b/app/src/main/java/com/deniscerri/ytdl/util/extractors/newpipe/NewPipeUtil.kt @@ -214,7 +214,7 @@ class NewPipeUtil(context: Context) { } } - suspend fun getPlaylistData(playlistURL: String, progress: (pagedResults: MutableList) -> Unit) : Result> { + fun getPlaylistData(playlistURL: String, progress: (pagedResults: MutableList) -> Unit) : Result> { try { val totalItems = mutableListOf() var nextPage : Page? = null @@ -235,8 +235,6 @@ class NewPipeUtil(context: Context) { tmp.items.toList() } - if (req.isEmpty()) return Result.failure(Throwable()) - for (element in req) { if (element is StreamInfoItem) { if (element.duration <= 0) continue