From adec4485dec86febf29e1726b1896c11785caf45 Mon Sep 17 00:00:00 2001 From: deniscerri <64997243+deniscerri@users.noreply.github.com> Date: Wed, 17 Sep 2025 23:05:20 +0200 Subject: [PATCH] fix /releases playlists not downloading --- .../com/deniscerri/ytdl/ui/HomeFragment.kt | 2 +- .../com/deniscerri/ytdl/util/Extensions.kt | 23 ++++++++----------- .../ytdl/util/extractors/YTDLPUtil.kt | 7 +++++- 3 files changed, 16 insertions(+), 16 deletions(-) diff --git a/app/src/main/java/com/deniscerri/ytdl/ui/HomeFragment.kt b/app/src/main/java/com/deniscerri/ytdl/ui/HomeFragment.kt index b0ae23ce..7b3f5567 100644 --- a/app/src/main/java/com/deniscerri/ytdl/ui/HomeFragment.kt +++ b/app/src/main/java/com/deniscerri/ytdl/ui/HomeFragment.kt @@ -217,7 +217,7 @@ class HomeFragment : Fragment(), HomeAdapter.OnItemClickListener, SearchSuggesti resultViewModel.items.observe(requireActivity()) { updateMultiplePlaylistResults(it .filter { it2 -> it2.playlistTitle != "" && it2.playlistTitle != "YTDLNIS_SEARCH" } - .map { it.playlistTitle } + .map { it2 -> it2.playlistTitle } .distinct() ) } diff --git a/app/src/main/java/com/deniscerri/ytdl/util/Extensions.kt b/app/src/main/java/com/deniscerri/ytdl/util/Extensions.kt index 5f4b710e..6ce8fc5f 100644 --- a/app/src/main/java/com/deniscerri/ytdl/util/Extensions.kt +++ b/app/src/main/java/com/deniscerri/ytdl/util/Extensions.kt @@ -596,20 +596,15 @@ object Extensions { } } - fun String.getIDFromYoutubeURL() : String { - var el: Array = - this.split("/".toRegex()).dropLastWhile { it.isEmpty() } - .toTypedArray() - var query = el[el.size - 1] - if (query!!.contains("watch?v=")) { - query = query.substring(8) + fun String.getIDFromYoutubeURL() : String? { + val regex = Regex( + "(?:youtube\\.com/(?:[^/]+/.+/|(?:v|e(?:mbed)?)/|.*?[?&]v=)|youtu\\.be/)([^\"&?/\\s]{11})" + ) + val match = regex.find(this) + return if (match != null){ + match.groupValues[1] + }else { + null } - el = query.split("&".toRegex()).dropLastWhile { it.isEmpty() } - .toTypedArray() - query = el[0] - el = query!!.split("\\?".toRegex()).dropLastWhile { it.isEmpty() } - .toTypedArray() - query = el[0] - return query!! } } \ No newline at end of file diff --git a/app/src/main/java/com/deniscerri/ytdl/util/extractors/YTDLPUtil.kt b/app/src/main/java/com/deniscerri/ytdl/util/extractors/YTDLPUtil.kt index 9f89c5a8..3362ef3d 100644 --- a/app/src/main/java/com/deniscerri/ytdl/util/extractors/YTDLPUtil.kt +++ b/app/src/main/java/com/deniscerri/ytdl/util/extractors/YTDLPUtil.kt @@ -714,7 +714,12 @@ class YTDLPUtil(private val context: Context, private val commandTemplateDao: Co @SuppressLint("RestrictedApi") fun buildYoutubeDLRequest(downloadItem: DownloadItem) : YoutubeDLRequest { - val useItemURL = sharedPreferences.getBoolean("use_itemurl_instead_playlisturl", false) + var useItemURL = sharedPreferences.getBoolean("use_itemurl_instead_playlisturl", false) + // for /releases youtube channel playlists that have playlists inside of them, cant use indexing or match filter id, so download on its own + if (downloadItem.url.isYoutubeURL() && downloadItem.url.getIDFromYoutubeURL() == null) { + useItemURL = true + } + var isPlaylistItem = false val request = StringJoiner(" ")