From ff30d5f2de9894c5fe125dcead675d649a9489a7 Mon Sep 17 00:00:00 2001 From: deniscerri <64997243+deniscerri@users.noreply.github.com> Date: Fri, 4 Sep 2026 21:30:57 +0200 Subject: [PATCH] add 3.14 python default github foss --- app/build.gradle | 6 +- .../java/com/deniscerri/ytdl/MainActivity.kt | 1 + .../ytdl/core/packages/PackageBase.kt | 7 ++- .../deniscerri/ytdl/core/packages/Python.kt | 4 +- .../database/viewmodel/HistoryViewModel.kt | 62 ++++++++----------- .../com/deniscerri/ytdl/ui/HomeFragment.kt | 2 +- .../settings/updating/PackagesFragment.kt | 4 +- 7 files changed, 40 insertions(+), 46 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index 5c37d3ee..776898a8 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -167,13 +167,15 @@ dependencies { implementation fileTree(dir: 'libs', include: ['*.jar']) coreLibraryDesugaring "com.android.tools:desugar_jdk_libs_nio:2.1.5" - githubImplementation "io.github.junkfood02.youtubedl-android:library:0.18.1" + githubImplementation "io.github.deniscerri:ytdlnis_packages.python:3.14.6" githubImplementation "io.github.junkfood02.youtubedl-android:aria2c:0.18.1" githubImplementation "io.github.junkfood02.youtubedl-android:ffmpeg:0.17.2" + //githubImplementation "io.github.deniscerri:ytdlnis_packages.deno:2.7.7" - fossImplementation "io.github.junkfood02.youtubedl-android:library:0.18.1" + fossImplementation "io.github.deniscerri:ytdlnis_packages.python:3.14.6" fossImplementation "io.github.junkfood02.youtubedl-android:aria2c:0.18.1" fossImplementation "io.github.junkfood02.youtubedl-android:ffmpeg:0.17.2" + //fossImplementation "io.github.deniscerri:ytdlnis_packages.deno:2.7.7" izzyImplementation "io.github.junkfood02.youtubedl-android:library:0.18.1" izzyImplementation "io.github.junkfood02.youtubedl-android:aria2c:0.18.1" diff --git a/app/src/main/java/com/deniscerri/ytdl/MainActivity.kt b/app/src/main/java/com/deniscerri/ytdl/MainActivity.kt index 960982cc..91b88b3c 100644 --- a/app/src/main/java/com/deniscerri/ytdl/MainActivity.kt +++ b/app/src/main/java/com/deniscerri/ytdl/MainActivity.kt @@ -580,6 +580,7 @@ class MainActivity : BaseActivity() { } val skipRemindingPackageUpdate = preferences.getStringSet("skip_reminding_package_update", setOf())!!.toMutableSet() + RuntimeManager.getInstance().assertInit() RuntimeManager.packages.forEach { pkg -> val instance = pkg.plugin.getInstance() if (instance.bundledVersion.isNullOrBlank() && instance.downloadedVersion.isNullOrBlank()) return@forEach diff --git a/app/src/main/java/com/deniscerri/ytdl/core/packages/PackageBase.kt b/app/src/main/java/com/deniscerri/ytdl/core/packages/PackageBase.kt index b951ce1c..964b8afa 100644 --- a/app/src/main/java/com/deniscerri/ytdl/core/packages/PackageBase.kt +++ b/app/src/main/java/com/deniscerri/ytdl/core/packages/PackageBase.kt @@ -285,11 +285,12 @@ abstract class PackageBase { it.assets = it.assets.filter { a -> a.name.contains(supportedArch) } it.downloadSize = it.assets.first().size it.isInstalled = downloadedVersion == "v${it.version}" - it.isBundled = bundledVersion == "v${it.version}" + it.isBundled = location.isBundled && bundledVersion == "v${it.version}" - val latestVersion = bundledVersion?.replace("v|.".toRegex(), "")?.toInt() - ?: downloadedVersion?.replace("v|.".toRegex(), "")?.toInt() ?: 0 + val bundledRaw = (bundledVersion ?: "0").ifEmpty{ "0" }.replace("[v.]".toRegex(), "").toInt() + val downloadedRaw = (downloadedVersion ?: "0").ifEmpty{ "0" }.replace("[v.]".toRegex(), "").toInt() + val latestVersion = bundledRaw.coerceAtLeast(downloadedRaw) it.oldVersion = latestVersion > it.version.replace(".", "").toInt() } diff --git a/app/src/main/java/com/deniscerri/ytdl/core/packages/Python.kt b/app/src/main/java/com/deniscerri/ytdl/core/packages/Python.kt index e23c59d2..468f62bd 100644 --- a/app/src/main/java/com/deniscerri/ytdl/core/packages/Python.kt +++ b/app/src/main/java/com/deniscerri/ytdl/core/packages/Python.kt @@ -1,10 +1,12 @@ package com.deniscerri.ytdl.core.packages +import com.deniscerri.ytdl.BuildConfig + object Python : PackageBase() { override val executableName: String get() = "python" override val packageFolderName: String get() = "python" override val bundledZipName: String get() = "libpython.zip.so" - override val bundledVersion: String get() = "v3.12.11" + override val bundledVersion: String get() = if (BuildConfig.FLAVOR == "izzy") "v3.12.11" else "v3.14.6" override val canUninstall: Boolean = false override val githubRepo: String get() = "deniscerri/ytdlnis-packages" override val githubPackageName: String get() = "python" diff --git a/app/src/main/java/com/deniscerri/ytdl/database/viewmodel/HistoryViewModel.kt b/app/src/main/java/com/deniscerri/ytdl/database/viewmodel/HistoryViewModel.kt index 7869ad9e..951ad949 100644 --- a/app/src/main/java/com/deniscerri/ytdl/database/viewmodel/HistoryViewModel.kt +++ b/app/src/main/java/com/deniscerri/ytdl/database/viewmodel/HistoryViewModel.kt @@ -73,50 +73,38 @@ class HistoryViewModel(application: Application) : AndroidViewModel(application) repository = HistoryRepository(dao) websites = repository.websites - val filters = listOf(dao.getAllHistory(), sortOrder, sortType, websiteFilter, statusFilter, queryFilter, typeFilter) - paginatedItems = combine(filters) { f -> - val sortOrder = f[1] as SORTING - val sortType = f[2] as HistorySortType - val website = f[3] as String - val status = f[4] as HistoryStatus - val query = f[5] as String - val type = f[6] as String - - var pager = Pager( + val filtersFlow = combine( + combine(sortOrder, sortType, websiteFilter, ::Triple), + combine(statusFilter, queryFilter, typeFilter, ::Triple) + ) { (order, sort, site), (status, query, type) -> + HistoryFilters( + sortOrder = order, + sortType = sort, + website = site, + status = status, + query = query, + type = type + ) + } + + paginatedItems = filtersFlow.flatMapLatest { f -> + Pager( config = PagingConfig(pageSize = 20, initialLoadSize = 20, prefetchDistance = 1), pagingSourceFactory = { - repository.getPaginatedSource(query, type, website, sortType, sortOrder) + repository.getPaginatedSource(f.query, f.type, f.website, f.sortType, f.sortOrder) } - ).flow - - when(status) { - HistoryStatus.DELETED -> { - pager = pager.map { - it.filter { it2 -> - it2.downloadPath.any { it3 -> - !FileUtil.exists(it3) - } - } + ).flow.map { pagingData -> + when (f.status) { + HistoryStatus.DELETED -> pagingData.filter { item -> + item.downloadPath.any { !FileUtil.exists(it) } } - } - HistoryStatus.NOT_DELETED -> { - pager = pager.map { - it.filter { it2 -> - it2.downloadPath.any { it3 -> - FileUtil.exists(it3) - } - } + HistoryStatus.NOT_DELETED -> pagingData.filter { item -> + item.downloadPath.any { FileUtil.exists(it) } } + else -> pagingData } - else -> {} } - - withContext(Dispatchers.IO) { - totalCount.value = repository.getFilteredIDs(query, type, website, sortType, sortOrder, status).count() - } - - pager - }.flatMapLatest { it } + } } fun setSorting(sort: HistorySortType){ 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 bb043332..11841d3a 100644 --- a/app/src/main/java/com/deniscerri/ytdl/ui/HomeFragment.kt +++ b/app/src/main/java/com/deniscerri/ytdl/ui/HomeFragment.kt @@ -346,7 +346,7 @@ class HomeFragment : Fragment(), HomeAdapter.OnItemClickListener, SearchSuggesti shimmerCards!!.stopShimmer() shimmerCards!!.visibility = GONE - showDownloadAllFab = totalCount > 1 && firstResult!!.playlistTitle.isNotEmpty() + showDownloadAllFab = totalCount > 1 && firstResult?.playlistTitle.orEmpty().isNotEmpty() downloadAllFab!!.isVisible = showDownloadAllFab } } diff --git a/app/src/main/java/com/deniscerri/ytdl/ui/more/settings/updating/PackagesFragment.kt b/app/src/main/java/com/deniscerri/ytdl/ui/more/settings/updating/PackagesFragment.kt index 04e0c581..079b4e78 100644 --- a/app/src/main/java/com/deniscerri/ytdl/ui/more/settings/updating/PackagesFragment.kt +++ b/app/src/main/java/com/deniscerri/ytdl/ui/more/settings/updating/PackagesFragment.kt @@ -115,10 +115,10 @@ class PackagesFragment : Fragment(), PackagesAdapter.OnItemClickListener, Packag lifecycleScope.launch { val instance = tmpItem!!.getInstance() instance.getReleases().apply { - this.onFailure { + this.onFailure { failure -> lifecycleScope.launch { withContext(Dispatchers.Main) { - Toast.makeText(requireContext(), it.message ?: getString(R.string.errored), Toast.LENGTH_SHORT).show() + Toast.makeText(requireContext(), failure.message ?: getString(R.string.errored), Toast.LENGTH_SHORT).show() } } }