From 7cfa82e0aa091ce6ab9823f20db4d1e13c9d72de Mon Sep 17 00:00:00 2001 From: deniscerri <64997243+deniscerri@users.noreply.github.com> Date: Sun, 30 Mar 2025 19:47:16 +0200 Subject: [PATCH] even more fixes --- .github/workflows/android.yml | 2 +- .../database/repository/ResultRepository.kt | 25 ++++++++++--------- .../database/viewmodel/ResultViewModel.kt | 2 +- .../ui/adapter/YoutubePlayerClientAdapter.kt | 1 + .../ui/downloadcard/DownloadAudioFragment.kt | 2 +- .../ui/downloadcard/DownloadVideoFragment.kt | 2 +- .../downloadcard/ResultCardDetailsDialog.kt | 5 ++++ .../more/settings/GeneralSettingsFragment.kt | 6 ++--- .../GenerateYoutubePoTokensFragment.kt | 4 +++ .../ytdl/util/extractors/YTDLPUtil.kt | 5 +++- .../main/res/layout/result_card_details.xml | 16 ++++++++++++ app/src/main/res/xml/general_preferences.xml | 4 +-- build.gradle | 4 +-- 13 files changed, 54 insertions(+), 24 deletions(-) diff --git a/.github/workflows/android.yml b/.github/workflows/android.yml index bbb33bd9..e2dbef47 100644 --- a/.github/workflows/android.yml +++ b/.github/workflows/android.yml @@ -28,7 +28,7 @@ jobs: - uses: gradle/gradle-build-action@v3 with: - gradle-version: 7.5 + gradle-version: 8.9 - name: Create base64 jks file run: echo "${{ secrets.BASE_64_SIGNING_KEY }}" > app/release_keystore.txt - name: Create jks file 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 8cb05867..dc63e117 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 @@ -57,7 +57,7 @@ class ResultRepository(private val resultDao: ResultDao, private val commandTemp suspend fun getHomeRecommendations(){ deleteAll() - val category = sharedPreferences.getString("home_recommendations", "") + val category = sharedPreferences.getString("recommendations_home", "") val items = when(category) { "newpipe" -> newPipeUtil.getTrending() "yt_api" -> youtubeApiUtil.getTrending() @@ -82,17 +82,18 @@ class ResultRepository(private val resultDao: ResultDao, private val commandTemp } fun getStreamingUrlAndChapters(url: String) : Pair, List?> { - val newPipeTrial = if (isUsingNewPipeExtractorDataFetching()) { - newPipeUtil.getStreamingUrlAndChapters(url) - }else { - Result.failure(Throwable()) - } - if (newPipeTrial.isFailure){ - val res = ytdlpUtil.getStreamingUrlAndChapters(url) - return res.getOrDefault(Pair(listOf(""), null)) - } - - return newPipeTrial.getOrNull()!! +// val newPipeTrial = if (isUsingNewPipeExtractorDataFetching()) { +// newPipeUtil.getStreamingUrlAndChapters(url) +// }else { +// Result.failure(Throwable()) +// } +// if (newPipeTrial.isFailure){ +// val res = ytdlpUtil.getStreamingUrlAndChapters(url) +// return res.getOrDefault(Pair(listOf(""), null)) +// } + + return ytdlpUtil.getStreamingUrlAndChapters(url) + .getOrDefault(Pair(listOf(""), null)) } suspend fun search(inputQuery: String, resetResults: Boolean, addToResults: Boolean) : ArrayList{ diff --git a/app/src/main/java/com/deniscerri/ytdl/database/viewmodel/ResultViewModel.kt b/app/src/main/java/com/deniscerri/ytdl/database/viewmodel/ResultViewModel.kt index c6a261ae..ad3bd482 100644 --- a/app/src/main/java/com/deniscerri/ytdl/database/viewmodel/ResultViewModel.kt +++ b/app/src/main/java/com/deniscerri/ytdl/database/viewmodel/ResultViewModel.kt @@ -124,7 +124,7 @@ class ResultViewModel(private val application: Application) : AndroidViewModel(a } } fun getHomeRecommendations() = viewModelScope.launch(Dispatchers.IO){ - val homeRecommendations = sharedPreferences.getString("home_recommendations", "") + val homeRecommendations = sharedPreferences.getString("recommendations_home", "") val customHomeRecommendations = sharedPreferences.getString("custom_home_recommendation_url", "") val emptyCustomRecommendations = customHomeRecommendations.isNullOrBlank() && homeRecommendations == "custom" diff --git a/app/src/main/java/com/deniscerri/ytdl/ui/adapter/YoutubePlayerClientAdapter.kt b/app/src/main/java/com/deniscerri/ytdl/ui/adapter/YoutubePlayerClientAdapter.kt index 38cb4d7d..35e8b56f 100644 --- a/app/src/main/java/com/deniscerri/ytdl/ui/adapter/YoutubePlayerClientAdapter.kt +++ b/app/src/main/java/com/deniscerri/ytdl/ui/adapter/YoutubePlayerClientAdapter.kt @@ -65,6 +65,7 @@ class YoutubePlayerClientAdapter(onItemClickListener: OnItemClickListener, activ title.text = item.playerClient val content = card.findViewById(R.id.content) + content.removeAllViews() val chips = mutableListOf() item.poTokens.forEach { val tmp = activity.layoutInflater.inflate(R.layout.textview_chip, content, false) as TextView diff --git a/app/src/main/java/com/deniscerri/ytdl/ui/downloadcard/DownloadAudioFragment.kt b/app/src/main/java/com/deniscerri/ytdl/ui/downloadcard/DownloadAudioFragment.kt index f94758b3..668957dc 100644 --- a/app/src/main/java/com/deniscerri/ytdl/ui/downloadcard/DownloadAudioFragment.kt +++ b/app/src/main/java/com/deniscerri/ytdl/ui/downloadcard/DownloadAudioFragment.kt @@ -275,7 +275,7 @@ class DownloadAudioFragment(private var resultItem: ResultItem? = null, private ) ) - if (currentDownloadItem == null || !containers.contains(downloadItem.container)){ + if (currentDownloadItem == null || !containers.contains(downloadItem.container.ifEmpty { getString(R.string.defaultValue) })){ downloadItem.container = if (containerPreference == getString(R.string.defaultValue)) "" else containerPreference!! } containerAutoCompleteTextView.setText(downloadItem.container.ifEmpty { getString(R.string.defaultValue) }, false) diff --git a/app/src/main/java/com/deniscerri/ytdl/ui/downloadcard/DownloadVideoFragment.kt b/app/src/main/java/com/deniscerri/ytdl/ui/downloadcard/DownloadVideoFragment.kt index 290695b7..f7a8d316 100644 --- a/app/src/main/java/com/deniscerri/ytdl/ui/downloadcard/DownloadVideoFragment.kt +++ b/app/src/main/java/com/deniscerri/ytdl/ui/downloadcard/DownloadVideoFragment.kt @@ -312,7 +312,7 @@ class DownloadVideoFragment(private var resultItem: ResultItem? = null, private containers ) ) - if (currentDownloadItem == null || !containers.contains(downloadItem.container)){ + if (currentDownloadItem == null || !containers.contains(downloadItem.container.ifEmpty { getString(R.string.defaultValue) })){ downloadItem.container = if (containerPreference == getString(R.string.defaultValue)) "" else containerPreference!! } containerAutoCompleteTextView!!.setText( diff --git a/app/src/main/java/com/deniscerri/ytdl/ui/downloadcard/ResultCardDetailsDialog.kt b/app/src/main/java/com/deniscerri/ytdl/ui/downloadcard/ResultCardDetailsDialog.kt index 7000ea70..d5d9518b 100644 --- a/app/src/main/java/com/deniscerri/ytdl/ui/downloadcard/ResultCardDetailsDialog.kt +++ b/app/src/main/java/com/deniscerri/ytdl/ui/downloadcard/ResultCardDetailsDialog.kt @@ -18,6 +18,7 @@ import android.view.View import android.view.ViewGroup import android.view.Window import android.widget.Button +import android.widget.ProgressBar import android.widget.TextView import androidx.core.os.bundleOf import androidx.core.view.isVisible @@ -271,6 +272,8 @@ class ResultCardDetailsDialog : BottomSheetDialogFragment(), GenericDownloadAdap val player = VideoPlayerUtil.buildPlayer(requireContext()) videoView.player = player + val loading = view.findViewById(R.id.loading) + lifecycleScope.launch { try { val data = withContext(Dispatchers.IO) { @@ -282,6 +285,7 @@ class ResultCardDetailsDialog : BottomSheetDialogFragment(), GenericDownloadAdap } if (data.first.isEmpty()) throw Exception("No Data found!") + loading.isVisible = false val urls = data.first if (urls.size == 2){ @@ -299,6 +303,7 @@ class ResultCardDetailsDialog : BottomSheetDialogFragment(), GenericDownloadAdap player.prepare() player.play() }catch (e: Exception){ + loading.isVisible = false e.printStackTrace() } } diff --git a/app/src/main/java/com/deniscerri/ytdl/ui/more/settings/GeneralSettingsFragment.kt b/app/src/main/java/com/deniscerri/ytdl/ui/more/settings/GeneralSettingsFragment.kt index 5d95a244..a6c1ca11 100644 --- a/app/src/main/java/com/deniscerri/ytdl/ui/more/settings/GeneralSettingsFragment.kt +++ b/app/src/main/java/com/deniscerri/ytdl/ui/more/settings/GeneralSettingsFragment.kt @@ -272,7 +272,7 @@ class GeneralSettingsFragment : BaseSettingsFragment() { } } - findPreference("home_recommendations")?.apply { + findPreference("recommendations_home")?.apply { val s = getString(R.string.video_recommendations_summary) summary = if (value.isNullOrBlank()) { s @@ -297,11 +297,11 @@ class GeneralSettingsFragment : BaseSettingsFragment() { findPreference("custom_home_recommendation_url")?.apply { title = "[${getString(R.string.video_recommendations)}] ${getString(R.string.custom)}" - isVisible = preferences.getString("home_recommendations", "") == "custom" + isVisible = preferences.getString("recommendations_home", "") == "custom" } findPreference("api_key")?.apply { - isVisible = preferences.getString("home_recommendations", "") == "yt_api" + isVisible = preferences.getString("recommendations_home", "") == "yt_api" val s = getString(R.string.api_key_summary) summary = if (text.isNullOrBlank()) { s diff --git a/app/src/main/java/com/deniscerri/ytdl/ui/more/settings/advanced/generateyoutubepotokens/GenerateYoutubePoTokensFragment.kt b/app/src/main/java/com/deniscerri/ytdl/ui/more/settings/advanced/generateyoutubepotokens/GenerateYoutubePoTokensFragment.kt index cb06d20d..3cd2a802 100644 --- a/app/src/main/java/com/deniscerri/ytdl/ui/more/settings/advanced/generateyoutubepotokens/GenerateYoutubePoTokensFragment.kt +++ b/app/src/main/java/com/deniscerri/ytdl/ui/more/settings/advanced/generateyoutubepotokens/GenerateYoutubePoTokensFragment.kt @@ -14,6 +14,7 @@ import android.widget.EditText import android.widget.TextView import androidx.activity.result.ActivityResultLauncher import androidx.activity.result.contract.ActivityResultContracts +import androidx.appcompat.widget.SwitchCompat import androidx.core.view.isVisible import androidx.core.widget.doOnTextChanged import androidx.fragment.app.Fragment @@ -88,6 +89,7 @@ class GenerateYoutubePoTokensFragment : Fragment() { val useVisitorData = requireView().findViewById(R.id.use_visitor_data) switch.isChecked = conf.enabled + switch.jumpDrawablesToCurrentState() useVisitorData.isEnabled = conf.enabled fun setValues(conf: YoutubeGeneratePoTokenItem) { @@ -175,6 +177,7 @@ class GenerateYoutubePoTokensFragment : Fragment() { useVisitorData?.apply { this.isChecked = conf.useVisitorData + useVisitorData.jumpDrawablesToCurrentState() setOnCheckedChangeListener { _, b -> configuration.remove(conf) conf.useVisitorData = b @@ -203,6 +206,7 @@ class GenerateYoutubePoTokensFragment : Fragment() { } regenerateBtn.setOnClickListener { + layout.dismiss() val intent = Intent(requireContext(), PoTokenWebViewLoginActivity::class.java) intent.putExtra("url", editText.text.toString()) webPoTokenResultLauncher.launch(intent) 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 569d3c0e..596d0b14 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 @@ -512,8 +512,9 @@ class YTDLPUtil(private val context: Context, private val commandTemplateDao: Co fun getStreamingUrlAndChapters(url: String) : Result, List?>> { try { val request = YoutubeDLRequest(url) - request.addOption("--get-url") + //request.addOption("--get-url") request.addOption("--print", "%(.{urls,chapters})s") + request.addOption("-S", "res:720,+proto:m3u8") request.applyDefaultOptionsForFetchingData(url) if (url.isYoutubeURL()) { request.setYoutubeExtractorArgs(url) @@ -709,6 +710,8 @@ class YTDLPUtil(private val context: Context, private val commandTemplateDao: Co } if (!sharedPreferences.getBoolean("mtime", false)){ request.addOption("--no-mtime") + }else{ + request.addOption("--mtime") } val sponsorBlockFilters : ArrayList = when(downloadItem.type) { diff --git a/app/src/main/res/layout/result_card_details.xml b/app/src/main/res/layout/result_card_details.xml index b2e3e9bd..8748253d 100644 --- a/app/src/main/res/layout/result_card_details.xml +++ b/app/src/main/res/layout/result_card_details.xml @@ -45,6 +45,22 @@ app:layout_constraintEnd_toEndOf="@+id/frame_layout" /> + + + diff --git a/build.gradle b/build.gradle index 52e7b442..e7eabba5 100644 --- a/build.gradle +++ b/build.gradle @@ -24,8 +24,8 @@ buildscript { coroutineVer = '1.7.3' retrofitVer = "2.9.0" kodeinVer = "7.16.0" - navVer = "2.8.3" - media3_version = "1.5.1" + navVer = "2.8.9" + media3_version = "1.6.0" agp_version = '8.1.0' agp_version1 = '7.4.2' roomVer = '2.5.2'