From 010c91ce72309d62c103b81369ccc886bd032d9f Mon Sep 17 00:00:00 2001 From: i3po Date: Fri, 30 Aug 2024 21:15:43 +0300 Subject: [PATCH 1/3] deps upgrade && refactoring --- app/build.gradle | 14 +++++++------- .../com/myAllVideoBrowser/DLApplication.kt | 19 ++++++++++--------- versions.gradle | 2 +- 3 files changed, 18 insertions(+), 17 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index a76649d..4fcb463 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -119,7 +119,7 @@ dependencies { // optional - GCMNetworkManager support implementation('androidx.work:work-gcm:2.9.1') - implementation 'androidx.fragment:fragment-ktx:1.8.2' + implementation 'androidx.fragment:fragment-ktx:1.8.3' // optional - Test helpers androidTestImplementation('androidx.work:work-testing:2.9.1') @@ -128,8 +128,8 @@ dependencies { implementation 'androidx.legacy:legacy-support-v4:1.0.0' - implementation 'androidx.lifecycle:lifecycle-livedata-ktx:2.8.4' - implementation 'androidx.lifecycle:lifecycle-viewmodel-ktx:2.8.4' + implementation 'androidx.lifecycle:lifecycle-livedata-ktx:2.8.5' + implementation 'androidx.lifecycle:lifecycle-viewmodel-ktx:2.8.5' implementation('androidx.concurrent:concurrent-futures-ktx:1.2.0') @@ -148,7 +148,7 @@ dependencies { // Life cycle implementation deps.lifecycle.extensions - implementation 'androidx.lifecycle:lifecycle-common-java8:2.8.4' + implementation 'androidx.lifecycle:lifecycle-common-java8:2.8.5' testImplementation 'androidx.arch.core:core-testing:2.2.0' androidTestImplementation 'androidx.arch.core:core-testing:2.2.0' @@ -191,7 +191,7 @@ dependencies { // Because RxAndroid releases are few and far between, it is recommended you also // explicitly depend on RxJava's latest version for bug fixes and new features. // (see https://github.com/ReactiveX/RxJava/releases for latest 3.x.x version) - implementation 'io.reactivex.rxjava3:rxjava:3.1.8' + implementation 'io.reactivex.rxjava3:rxjava:3.1.9' implementation 'com.github.farimarwat.youtubedl-android:ffmpeg:1.0.22' implementation 'com.github.farimarwat.youtubedl-android:library:1.0.22' @@ -211,7 +211,7 @@ dependencies { implementation 'androidx.core:core-ktx:1.13.1' - implementation 'org.jetbrains.kotlinx:kotlinx-serialization-json:1.7.1' + implementation 'org.jetbrains.kotlinx:kotlinx-serialization-json:1.7.2' implementation 'org.jsoup:jsoup:1.18.1' @@ -221,7 +221,7 @@ dependencies { implementation 'commons-lang:commons-lang:2.6' - var media3_version = '1.4.0' + var media3_version = '1.4.1' // For media playback using ExoPlayer implementation "androidx.media3:media3-exoplayer:$media3_version" diff --git a/app/src/main/java/com/myAllVideoBrowser/DLApplication.kt b/app/src/main/java/com/myAllVideoBrowser/DLApplication.kt index 1d7996f..a752302 100644 --- a/app/src/main/java/com/myAllVideoBrowser/DLApplication.kt +++ b/app/src/main/java/com/myAllVideoBrowser/DLApplication.kt @@ -31,6 +31,9 @@ open class DLApplication : DaggerApplication() { @Inject lateinit var workerFactory: DaggerWorkerFactory + @Inject + lateinit var sharedPrefHelper: SharedPrefHelper + @Inject lateinit var fileUtil: FileUtil @@ -48,7 +51,7 @@ open class DLApplication : DaggerApplication() { ContextUtils.initApplicationContext(applicationContext) - initializeFileUtils(applicationContext) + initializeFileUtils() val file: File = fileUtil.folderDir val ctx = applicationContext @@ -73,15 +76,13 @@ open class DLApplication : DaggerApplication() { } } - private fun initializeFileUtils(applicationContext: Context?) { - if (applicationContext != null) { - val isExternal = SharedPrefHelper(applicationContext).getIsExternalUse() - val isAppDir = SharedPrefHelper(applicationContext).getIsAppDirUse() + private fun initializeFileUtils() { + val isExternal = sharedPrefHelper.getIsExternalUse() + val isAppDir = sharedPrefHelper.getIsAppDirUse() - FileUtil.IS_EXTERNAL_STORAGE_USE = isExternal - FileUtil.IS_APP_DATA_DIR_USE = isAppDir - FileUtil.INITIIALIZED = true - } + FileUtil.IS_EXTERNAL_STORAGE_USE = isExternal + FileUtil.IS_APP_DATA_DIR_USE = isAppDir + FileUtil.INITIIALIZED = true } private fun initializeYoutubeDl() { diff --git a/versions.gradle b/versions.gradle index 4f7b171..affc332 100644 --- a/versions.gradle +++ b/versions.gradle @@ -1,7 +1,7 @@ ext.deps = [:] def versions = [:] versions.gradle_plugin = '8.3.2' -versions.kotlin = '2.0.0' +versions.kotlin = '2.0.20' versions.arch_core = "1.1.1" versions.room = "2.4.3" versions.lifecycle = "1.1.1" From f15213f2094d870ec9d33dab735c8005a7c26d8c Mon Sep 17 00:00:00 2001 From: i3po Date: Wed, 25 Sep 2024 14:50:46 +0300 Subject: [PATCH 2/3] downloader live stream detection fix:) --- app/build.gradle | 9 ++++----- .../ui/main/home/browser/homeTab/BrowserHomeViewModel.kt | 4 +--- .../youtubedl_downloader/YoutubeDlDownloaderWorker.kt | 2 +- 3 files changed, 6 insertions(+), 9 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index 4fcb463..a9af728 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -128,9 +128,6 @@ dependencies { implementation 'androidx.legacy:legacy-support-v4:1.0.0' - implementation 'androidx.lifecycle:lifecycle-livedata-ktx:2.8.5' - implementation 'androidx.lifecycle:lifecycle-viewmodel-ktx:2.8.5' - implementation('androidx.concurrent:concurrent-futures-ktx:1.2.0') // Testing @@ -148,7 +145,9 @@ dependencies { // Life cycle implementation deps.lifecycle.extensions - implementation 'androidx.lifecycle:lifecycle-common-java8:2.8.5' + implementation 'androidx.lifecycle:lifecycle-common-java8:2.8.6' + implementation 'androidx.lifecycle:lifecycle-livedata-ktx:2.8.6' + implementation 'androidx.lifecycle:lifecycle-viewmodel-ktx:2.8.6' testImplementation 'androidx.arch.core:core-testing:2.2.0' androidTestImplementation 'androidx.arch.core:core-testing:2.2.0' @@ -211,7 +210,7 @@ dependencies { implementation 'androidx.core:core-ktx:1.13.1' - implementation 'org.jetbrains.kotlinx:kotlinx-serialization-json:1.7.2' + implementation 'org.jetbrains.kotlinx:kotlinx-serialization-json:1.7.3' implementation 'org.jsoup:jsoup:1.18.1' diff --git a/app/src/main/java/com/myAllVideoBrowser/ui/main/home/browser/homeTab/BrowserHomeViewModel.kt b/app/src/main/java/com/myAllVideoBrowser/ui/main/home/browser/homeTab/BrowserHomeViewModel.kt index 1a83dca..3ef4f89 100644 --- a/app/src/main/java/com/myAllVideoBrowser/ui/main/home/browser/homeTab/BrowserHomeViewModel.kt +++ b/app/src/main/java/com/myAllVideoBrowser/ui/main/home/browser/homeTab/BrowserHomeViewModel.kt @@ -1,6 +1,5 @@ package com.myAllVideoBrowser.ui.main.home.browser.homeTab -import android.annotation.SuppressLint import androidx.databinding.ObservableBoolean import androidx.databinding.ObservableField import androidx.lifecycle.viewModelScope @@ -86,10 +85,9 @@ class BrowserHomeViewModel @Inject constructor( }.onErrorReturn { emptyList() }.take(1).observeOn(baseSchedulers.single) - .subscribeOn(baseSchedulers.computation) // MAIN_TH + .subscribeOn(baseSchedulers.computation) } - @SuppressLint("CheckResult") private fun updateTopPages() { viewModelScope.launch(executorSingle) { val pages = try { diff --git a/app/src/main/java/com/myAllVideoBrowser/util/downloaders/youtubedl_downloader/YoutubeDlDownloaderWorker.kt b/app/src/main/java/com/myAllVideoBrowser/util/downloaders/youtubedl_downloader/YoutubeDlDownloaderWorker.kt index a61bec3..4de1340 100644 --- a/app/src/main/java/com/myAllVideoBrowser/util/downloaders/youtubedl_downloader/YoutubeDlDownloaderWorker.kt +++ b/app/src/main/java/com/myAllVideoBrowser/util/downloaders/youtubedl_downloader/YoutubeDlDownloaderWorker.kt @@ -292,7 +292,7 @@ class YoutubeDlDownloaderWorker(appContext: Context, workerParams: WorkerParamet if (line.contains("[download] Destination:")) { isDownloadJustStarted = true } - if (line.contains("[download] 0")) { + if (line.contains(Regex("""\[download] {3}\d+"""))) { isDownloadOk = true } From fa183fd2456237eb30adb96f3695ea4ee51c11de Mon Sep 17 00:00:00 2001 From: i3po Date: Sat, 26 Oct 2024 16:17:33 +0300 Subject: [PATCH 3/3] changed youtube dl library and small fixes --- app/build.gradle | 19 ++++++++----------- .../home/browser/webTab/WebTabFragment.kt | 4 +++- .../ui/main/progress/ProgressViewModel.kt | 3 +-- .../CustomFileDownloader.kt | 2 +- .../CustomRegularDownloader.kt | 2 +- .../CustomRegularDownloaderWorker.kt | 2 +- .../YoutubeDlDownloaderWorker.kt | 3 +-- 7 files changed, 16 insertions(+), 19 deletions(-) rename app/src/main/java/com/myAllVideoBrowser/util/downloaders/{custom_downloader_service => custom_downloader}/CustomFileDownloader.kt (99%) rename app/src/main/java/com/myAllVideoBrowser/util/downloaders/{custom_downloader_service => custom_downloader}/CustomRegularDownloader.kt (99%) rename app/src/main/java/com/myAllVideoBrowser/util/downloaders/{custom_downloader_service => custom_downloader}/CustomRegularDownloaderWorker.kt (99%) diff --git a/app/build.gradle b/app/build.gradle index a9af728..ef94c96 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -40,8 +40,8 @@ android { applicationId "com.myAllVideoBrowser" minSdkVersion build_versions.min_sdk targetSdkVersion build_versions.target_sdk - versionCode 2 - versionName "0.0.2" + versionCode 3 + versionName "0.0.3" testInstrumentationRunner "util.TestRunner" javaCompileOptions { annotationProcessorOptions { @@ -119,7 +119,7 @@ dependencies { // optional - GCMNetworkManager support implementation('androidx.work:work-gcm:2.9.1') - implementation 'androidx.fragment:fragment-ktx:1.8.3' + implementation 'androidx.fragment:fragment-ktx:1.8.4' // optional - Test helpers androidTestImplementation('androidx.work:work-testing:2.9.1') @@ -192,15 +192,12 @@ dependencies { // (see https://github.com/ReactiveX/RxJava/releases for latest 3.x.x version) implementation 'io.reactivex.rxjava3:rxjava:3.1.9' - implementation 'com.github.farimarwat.youtubedl-android:ffmpeg:1.0.22' - implementation 'com.github.farimarwat.youtubedl-android:library:1.0.22' - implementation 'com.github.farimarwat.youtubedl-android:common:1.0.22' +// implementation 'com.github.farimarwat.youtubedl-android:ffmpeg:1.0.22' +// implementation 'com.github.farimarwat.youtubedl-android:library:1.0.22' +// implementation 'com.github.farimarwat.youtubedl-android:common:1.0.22' -// implementation 'com.github.yausername.youtubedl-android:library:-SNAPSHOT' -// -// implementation 'com.github.yausername.youtubedl-android:ffmpeg:-SNAPSHOT' -// -// implementation 'com.github.yausername.youtubedl-android:aria2c:-SNAPSHOT' + implementation("io.github.junkfood02.youtubedl-android:library:0.17.1") + implementation("io.github.junkfood02.youtubedl-android:ffmpeg:0.17.1") implementation 'com.github.bumptech.glide:glide:4.16.0' diff --git a/app/src/main/java/com/myAllVideoBrowser/ui/main/home/browser/webTab/WebTabFragment.kt b/app/src/main/java/com/myAllVideoBrowser/ui/main/home/browser/webTab/WebTabFragment.kt index c0b274a..ab9f595 100644 --- a/app/src/main/java/com/myAllVideoBrowser/ui/main/home/browser/webTab/WebTabFragment.kt +++ b/app/src/main/java/com/myAllVideoBrowser/ui/main/home/browser/webTab/WebTabFragment.kt @@ -396,7 +396,9 @@ class WebTabFragment : BaseWebTabFragment() { webView?.setLayerType(View.LAYER_TYPE_HARDWARE, null) webView?.isScrollbarFadingEnabled = true - CookieManager.getInstance().setAcceptThirdPartyCookies(webView, true) + // TODO: turn on third-party from settings +// CookieManager.getInstance().setAcceptThirdPartyCookies(webView, true) + webSettings?.apply { mixedContentMode = WebSettings.MIXED_CONTENT_ALWAYS_ALLOW setSupportZoom(true) diff --git a/app/src/main/java/com/myAllVideoBrowser/ui/main/progress/ProgressViewModel.kt b/app/src/main/java/com/myAllVideoBrowser/ui/main/progress/ProgressViewModel.kt index d54d524..8a6734c 100644 --- a/app/src/main/java/com/myAllVideoBrowser/ui/main/progress/ProgressViewModel.kt +++ b/app/src/main/java/com/myAllVideoBrowser/ui/main/progress/ProgressViewModel.kt @@ -1,6 +1,5 @@ package com.myAllVideoBrowser.ui.main.progress -import android.net.Uri import androidx.annotation.VisibleForTesting import androidx.databinding.ObservableField import androidx.lifecycle.viewModelScope @@ -12,7 +11,7 @@ import com.myAllVideoBrowser.ui.main.base.BaseViewModel import com.myAllVideoBrowser.util.ContextUtils import com.myAllVideoBrowser.util.FileUtil import com.myAllVideoBrowser.util.downloaders.generic_downloader.models.VideoTaskState -import com.myAllVideoBrowser.util.downloaders.custom_downloader_service.CustomRegularDownloader +import com.myAllVideoBrowser.util.downloaders.custom_downloader.CustomRegularDownloader import com.myAllVideoBrowser.util.downloaders.youtubedl_downloader.YoutubeDlDownloader import io.reactivex.rxjava3.core.BackpressureStrategy import io.reactivex.rxjava3.core.Observable diff --git a/app/src/main/java/com/myAllVideoBrowser/util/downloaders/custom_downloader_service/CustomFileDownloader.kt b/app/src/main/java/com/myAllVideoBrowser/util/downloaders/custom_downloader/CustomFileDownloader.kt similarity index 99% rename from app/src/main/java/com/myAllVideoBrowser/util/downloaders/custom_downloader_service/CustomFileDownloader.kt rename to app/src/main/java/com/myAllVideoBrowser/util/downloaders/custom_downloader/CustomFileDownloader.kt index ff3578b..e22e648 100644 --- a/app/src/main/java/com/myAllVideoBrowser/util/downloaders/custom_downloader_service/CustomFileDownloader.kt +++ b/app/src/main/java/com/myAllVideoBrowser/util/downloaders/custom_downloader/CustomFileDownloader.kt @@ -1,4 +1,4 @@ -package com.myAllVideoBrowser.util.downloaders.custom_downloader_service +package com.myAllVideoBrowser.util.downloaders.custom_downloader import com.myAllVideoBrowser.util.AppLogger import okhttp3.Headers.Companion.toHeaders diff --git a/app/src/main/java/com/myAllVideoBrowser/util/downloaders/custom_downloader_service/CustomRegularDownloader.kt b/app/src/main/java/com/myAllVideoBrowser/util/downloaders/custom_downloader/CustomRegularDownloader.kt similarity index 99% rename from app/src/main/java/com/myAllVideoBrowser/util/downloaders/custom_downloader_service/CustomRegularDownloader.kt rename to app/src/main/java/com/myAllVideoBrowser/util/downloaders/custom_downloader/CustomRegularDownloader.kt index 2f4ff74..db589fb 100644 --- a/app/src/main/java/com/myAllVideoBrowser/util/downloaders/custom_downloader_service/CustomRegularDownloader.kt +++ b/app/src/main/java/com/myAllVideoBrowser/util/downloaders/custom_downloader/CustomRegularDownloader.kt @@ -1,4 +1,4 @@ -package com.myAllVideoBrowser.util.downloaders.custom_downloader_service +package com.myAllVideoBrowser.util.downloaders.custom_downloader import android.content.Context import androidx.work.* diff --git a/app/src/main/java/com/myAllVideoBrowser/util/downloaders/custom_downloader_service/CustomRegularDownloaderWorker.kt b/app/src/main/java/com/myAllVideoBrowser/util/downloaders/custom_downloader/CustomRegularDownloaderWorker.kt similarity index 99% rename from app/src/main/java/com/myAllVideoBrowser/util/downloaders/custom_downloader_service/CustomRegularDownloaderWorker.kt rename to app/src/main/java/com/myAllVideoBrowser/util/downloaders/custom_downloader/CustomRegularDownloaderWorker.kt index 04381bd..2053dd4 100644 --- a/app/src/main/java/com/myAllVideoBrowser/util/downloaders/custom_downloader_service/CustomRegularDownloaderWorker.kt +++ b/app/src/main/java/com/myAllVideoBrowser/util/downloaders/custom_downloader/CustomRegularDownloaderWorker.kt @@ -1,4 +1,4 @@ -package com.myAllVideoBrowser.util.downloaders.custom_downloader_service +package com.myAllVideoBrowser.util.downloaders.custom_downloader import android.annotation.SuppressLint import android.content.Context diff --git a/app/src/main/java/com/myAllVideoBrowser/util/downloaders/youtubedl_downloader/YoutubeDlDownloaderWorker.kt b/app/src/main/java/com/myAllVideoBrowser/util/downloaders/youtubedl_downloader/YoutubeDlDownloaderWorker.kt index 4de1340..19d9c67 100644 --- a/app/src/main/java/com/myAllVideoBrowser/util/downloaders/youtubedl_downloader/YoutubeDlDownloaderWorker.kt +++ b/app/src/main/java/com/myAllVideoBrowser/util/downloaders/youtubedl_downloader/YoutubeDlDownloaderWorker.kt @@ -288,7 +288,7 @@ class YoutubeDlDownloaderWorker(appContext: Context, workerParams: WorkerParamet } disposable = Observable.fromCallable { - YoutubeDL.getInstance().execute(request, taskId, { pr, _, line -> + YoutubeDL.getInstance().execute(request, taskId) { pr, _, line -> if (line.contains("[download] Destination:")) { isDownloadJustStarted = true } @@ -340,7 +340,6 @@ class YoutubeDlDownloaderWorker(appContext: Context, workerParams: WorkerParamet return@execute } } - }) { _, _ -> } }.doOnError { handleError(taskId, url, progressCached, it, tmpFile.name, name)