fixes
This commit is contained in:
parent
b02605f64f
commit
259b3b27dd
13 changed files with 82 additions and 63 deletions
|
|
@ -1,4 +1,3 @@
|
|||
|
||||
plugins {
|
||||
id 'com.android.application'
|
||||
id 'com.google.android.libraries.mapsplatform.secrets-gradle-plugin' version '2.0.1'
|
||||
|
|
@ -8,6 +7,10 @@ plugins {
|
|||
}
|
||||
|
||||
def properties = new Properties()
|
||||
def versionMajor = 1
|
||||
def versionMinor = 6
|
||||
def versionPatch = 3
|
||||
def versionBuild = 0 // bump for dogfood builds, public betas, etc.
|
||||
|
||||
android {
|
||||
namespace 'com.deniscerri.ytdlnis'
|
||||
|
|
@ -33,13 +36,10 @@ android {
|
|||
applicationId "com.deniscerri.ytdl"
|
||||
minSdk 23
|
||||
targetSdk 33
|
||||
versionCode project.versionCode
|
||||
versionName project.versionName
|
||||
versionCode versionMajor * 1000000 + versionMinor * 10000 + versionPatch * 100 + versionBuild
|
||||
versionName "${versionMajor}.${versionMinor}.${versionPatch}"
|
||||
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
|
||||
archivesBaseName = "YTDLnis-$versionName"
|
||||
ndk {
|
||||
abiFilters 'x86', 'x86_64', 'armeabi-v7a', 'arm64-v8a'
|
||||
}
|
||||
vectorDrawables {
|
||||
useSupportLibrary true
|
||||
}
|
||||
|
|
@ -66,7 +66,6 @@ android {
|
|||
|
||||
beta {
|
||||
minifyEnabled true
|
||||
versionNameSuffix "$project.betaVersionNameSuffix"
|
||||
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
|
||||
debuggable false
|
||||
signingConfig signingConfigs.debug
|
||||
|
|
@ -92,6 +91,17 @@ android {
|
|||
disable 'MissingTranslation'
|
||||
}
|
||||
|
||||
android.applicationVariants.all { variant ->
|
||||
variant.outputs.each { output ->
|
||||
def baseAbiVersionCode = project.abiCodes.get(output.getFilter(com.android.build.OutputFile.ABI))
|
||||
if (baseAbiVersionCode != null) {
|
||||
output.versionCodeOverride = (100 * project.android.defaultConfig.versionCode) + baseAbiVersionCode
|
||||
} else {
|
||||
output.versionCodeOverride = 100 * project.android.defaultConfig.versionCode
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
buildFeatures {
|
||||
viewBinding true
|
||||
compose true
|
||||
|
|
|
|||
|
|
@ -46,6 +46,7 @@ import com.google.android.material.dialog.MaterialAlertDialogBuilder
|
|||
import com.google.android.material.elevation.SurfaceColors
|
||||
import com.google.android.material.navigation.NavigationBarView
|
||||
import com.google.android.material.navigation.NavigationView
|
||||
import com.google.android.material.navigationrail.NavigationRailView
|
||||
import kotlinx.coroutines.Dispatchers
|
||||
import kotlinx.coroutines.launch
|
||||
import java.io.BufferedReader
|
||||
|
|
@ -221,7 +222,7 @@ class MainActivity : BaseActivity() {
|
|||
navigationView.animate()?.translationY(navigationView.height.toFloat())?.setDuration(300)?.withEndAction {
|
||||
navigationView.visibility = View.GONE
|
||||
}?.start()
|
||||
}else{
|
||||
}else if (navigationView is NavigationRailView){
|
||||
findViewById<FragmentContainerView>(R.id.frame_layout).updateLayoutParams {
|
||||
this.width = LayoutParams.MATCH_PARENT
|
||||
}
|
||||
|
|
@ -240,7 +241,7 @@ class MainActivity : BaseActivity() {
|
|||
navigationView.animate()?.translationY(0F)?.setDuration(300)?.withEndAction {
|
||||
navigationView.visibility = View.VISIBLE
|
||||
}?.start()
|
||||
}else{
|
||||
}else if (navigationView is NavigationRailView){
|
||||
findViewById<FragmentContainerView>(R.id.frame_layout).updateLayoutParams {
|
||||
this.width = 0
|
||||
}
|
||||
|
|
|
|||
|
|
@ -238,9 +238,22 @@ class DownloadViewModel(application: Application) : AndroidViewModel(application
|
|||
}
|
||||
|
||||
fun switchDownloadType(list: List<DownloadItem>, type: Type) : List<DownloadItem>{
|
||||
val updatedDownloadPath : String = when(type){
|
||||
Type.audio -> sharedPreferences.getString("music_path", FileUtil.getDefaultAudioPath())!!
|
||||
Type.video -> sharedPreferences.getString("video_path", FileUtil.getDefaultVideoPath())!!
|
||||
Type.command -> sharedPreferences.getString("command_path", FileUtil.getDefaultCommandPath())!!
|
||||
}
|
||||
|
||||
list.forEach {
|
||||
val format = getFormat(it.allFormats, type)
|
||||
it.format = format
|
||||
val currentDownloadPath = when(it.type){
|
||||
Type.audio -> sharedPreferences.getString("music_path", FileUtil.getDefaultAudioPath())
|
||||
Type.video -> sharedPreferences.getString("video_path", FileUtil.getDefaultVideoPath())
|
||||
Type.command -> sharedPreferences.getString("command_path", FileUtil.getDefaultCommandPath())
|
||||
}
|
||||
if (it.downloadPath == currentDownloadPath) it.downloadPath = updatedDownloadPath
|
||||
|
||||
it.type = type
|
||||
}
|
||||
return list
|
||||
|
|
|
|||
|
|
@ -33,14 +33,12 @@ import com.deniscerri.ytdlnis.database.viewmodel.ResultViewModel
|
|||
import com.deniscerri.ytdlnis.ui.BaseActivity
|
||||
import com.deniscerri.ytdlnis.ui.downloadcard.DownloadBottomSheetDialog
|
||||
import com.deniscerri.ytdlnis.ui.downloadcard.SelectPlaylistItemsBottomSheetDialog
|
||||
import com.deniscerri.ytdlnis.util.FileUtil
|
||||
import com.deniscerri.ytdlnis.util.ThemeUtil
|
||||
import com.google.android.material.bottomsheet.BottomSheetDialog
|
||||
import com.google.android.material.dialog.MaterialAlertDialogBuilder
|
||||
import kotlinx.coroutines.Dispatchers
|
||||
import kotlinx.coroutines.launch
|
||||
import kotlinx.coroutines.withContext
|
||||
import java.io.File
|
||||
import kotlin.properties.Delegates
|
||||
import kotlin.system.exitProcess
|
||||
|
||||
|
|
@ -117,31 +115,35 @@ class ShareActivity : BaseActivity() {
|
|||
this.finish()
|
||||
}
|
||||
|
||||
val inputQuery = intent.getStringExtra(Intent.EXTRA_TEXT)
|
||||
try {
|
||||
val result = resultViewModel.getItemByURL(inputQuery!!)
|
||||
loadingBottomSheet.dismiss()
|
||||
showDownloadSheet(result)
|
||||
}catch (e: Exception){
|
||||
resultViewModel.deleteAll()
|
||||
if (quickDownload && inputQuery!!.matches("(https?://(?:www\\.|(?!www))[a-zA-Z\\d][a-zA-Z\\d-]+[a-zA-Z\\d]\\.\\S{2,}|www\\.[a-zA-Z\\d][a-zA-Z\\d-]+[a-zA-Z\\d]\\.\\S{2,}|https?://(?:www\\.|(?!www))[a-zA-Z\\d]+\\.\\S{2,}|www\\.[a-zA-Z\\d]+\\.\\S{2,})".toRegex())){
|
||||
val result = downloadViewModel.createEmptyResultItem(inputQuery)
|
||||
val inputQuery = intent.getStringExtra(Intent.EXTRA_TEXT)!!
|
||||
lifecycleScope.launch {
|
||||
try {
|
||||
val result = withContext(Dispatchers.IO){
|
||||
resultViewModel.getItemByURL(inputQuery)
|
||||
}
|
||||
loadingBottomSheet.dismiss()
|
||||
showDownloadSheet(result)
|
||||
}else{
|
||||
lifecycleScope.launch {
|
||||
val res = withContext(Dispatchers.IO){
|
||||
resultViewModel.parseQuery(inputQuery!!, true)
|
||||
}
|
||||
if (res.isEmpty()) {
|
||||
Toast.makeText(this@ShareActivity, "No Results Found!", Toast.LENGTH_SHORT).show()
|
||||
exit()
|
||||
}else{
|
||||
loadingBottomSheet.dismiss()
|
||||
if (res.size == 1){
|
||||
showDownloadSheet(res[0]!!)
|
||||
}catch (e: Exception){
|
||||
resultViewModel.deleteAll()
|
||||
if (quickDownload && inputQuery.matches("(https?://(?:www\\.|(?!www))[a-zA-Z\\d][a-zA-Z\\d-]+[a-zA-Z\\d]\\.\\S{2,}|www\\.[a-zA-Z\\d][a-zA-Z\\d-]+[a-zA-Z\\d]\\.\\S{2,}|https?://(?:www\\.|(?!www))[a-zA-Z\\d]+\\.\\S{2,}|www\\.[a-zA-Z\\d]+\\.\\S{2,})".toRegex())){
|
||||
val result = downloadViewModel.createEmptyResultItem(inputQuery)
|
||||
loadingBottomSheet.dismiss()
|
||||
showDownloadSheet(result)
|
||||
}else{
|
||||
lifecycleScope.launch {
|
||||
val res = withContext(Dispatchers.IO){
|
||||
resultViewModel.parseQuery(inputQuery, true)
|
||||
}
|
||||
if (res.isEmpty()) {
|
||||
Toast.makeText(this@ShareActivity, "No Results Found!", Toast.LENGTH_SHORT).show()
|
||||
exit()
|
||||
}else{
|
||||
showSelectPlaylistItems(res.toList())
|
||||
loadingBottomSheet.dismiss()
|
||||
if (res.size == 1){
|
||||
showDownloadSheet(res[0]!!)
|
||||
}else{
|
||||
showSelectPlaylistItems(res.toList())
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -89,7 +89,6 @@ class HomeFragment : Fragment(), HomeAdapter.OnItemClickListener, OnClickListene
|
|||
private var selectedObjects: ArrayList<ResultItem>? = null
|
||||
private var quickLaunchSheet = false
|
||||
private var sharedPreferences: SharedPreferences? = null
|
||||
private var _binding : FragmentHomeBinding? = null
|
||||
private var actionMode: ActionMode? = null
|
||||
private var appBarLayout: AppBarLayout? = null
|
||||
private var materialToolbar: MaterialToolbar? = null
|
||||
|
|
@ -98,7 +97,6 @@ class HomeFragment : Fragment(), HomeAdapter.OnItemClickListener, OnClickListene
|
|||
inflater: LayoutInflater, container: ViewGroup?,
|
||||
savedInstanceState: Bundle?
|
||||
): View? {
|
||||
_binding = FragmentHomeBinding.inflate(inflater, container, false)
|
||||
fragmentView = inflater.inflate(R.layout.fragment_home, container, false)
|
||||
activity = getActivity()
|
||||
mainActivity = activity as MainActivity?
|
||||
|
|
|
|||
|
|
@ -9,7 +9,6 @@ import android.content.SharedPreferences
|
|||
import android.graphics.Canvas
|
||||
import android.graphics.Color
|
||||
import android.os.Bundle
|
||||
import android.provider.MediaStore.Video
|
||||
import android.text.format.DateFormat
|
||||
import android.util.DisplayMetrics
|
||||
import android.view.Gravity
|
||||
|
|
|
|||
|
|
@ -15,13 +15,10 @@ import com.google.gson.Gson
|
|||
import com.google.gson.reflect.TypeToken
|
||||
import com.yausername.youtubedl_android.YoutubeDL
|
||||
import com.yausername.youtubedl_android.YoutubeDLRequest
|
||||
import okhttp3.ResponseBody
|
||||
import org.json.JSONArray
|
||||
import org.json.JSONException
|
||||
import org.json.JSONObject
|
||||
import retrofit2.Call
|
||||
import retrofit2.Retrofit
|
||||
import retrofit2.http.GET
|
||||
import java.io.BufferedReader
|
||||
import java.io.File
|
||||
import java.io.InputStreamReader
|
||||
|
|
@ -346,7 +343,7 @@ class InfoUtil(private val context: Context) {
|
|||
"youtube",
|
||||
"",
|
||||
formats,
|
||||
if (obj.has("hls")) obj.getString("hls") else "",
|
||||
if (obj.has("hls") && obj.getString("hls") != "null") obj.getString("hls") else "",
|
||||
chapters
|
||||
)
|
||||
} catch (e: Exception) {
|
||||
|
|
@ -478,7 +475,7 @@ class InfoUtil(private val context: Context) {
|
|||
}
|
||||
|
||||
private fun getTrendingFromPiped(): ArrayList<ResultItem?> {
|
||||
val url = pipedURL + "/trending?region=" + countryCODE
|
||||
val url = "$pipedURL/trending?region=$countryCODE"
|
||||
val res = genericArrayRequest(url)
|
||||
try {
|
||||
for (i in 0 until res.length()) {
|
||||
|
|
@ -653,7 +650,7 @@ class InfoUtil(private val context: Context) {
|
|||
}else{
|
||||
urls.forEach {
|
||||
val id = getIDFromYoutubeURL(it)
|
||||
val res = genericRequest(pipedURL + "/streams/" + id)
|
||||
val res = genericRequest("$pipedURL/streams/$id")
|
||||
val vid = createVideoFromPipedJSON(res, id)
|
||||
progress(vid!!.formats)
|
||||
}
|
||||
|
|
|
|||
|
|
@ -28,7 +28,6 @@ import java.net.URL
|
|||
class UpdateUtil(var context: Context) {
|
||||
private val tag = "UpdateUtil"
|
||||
private val downloadManager: DownloadManager = context.getSystemService(Context.DOWNLOAD_SERVICE) as DownloadManager
|
||||
private val ytdlpNightly = "https://api.github.com/repos/yt-dlp/yt-dlp-nightly-builds/releases/latest"
|
||||
|
||||
fun updateApp(result: (result: String) -> Unit) {
|
||||
try {
|
||||
|
|
|
|||
|
|
@ -49,6 +49,7 @@
|
|||
android:layout_height="match_parent"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:labelVisibilityMode="selected"
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
app:layout_constraintHorizontal_bias="0.0"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
|
|
|
|||
|
|
@ -60,7 +60,7 @@
|
|||
<string name="log_downloads_summary">Krijo një skedar shënimesh për çdo shkarkim</string>
|
||||
<string name="embed_subs_summary">Shtoni titrat në video</string>
|
||||
<string name="embed_thumb">Vendos Imazh</string>
|
||||
<string name="embed_thumb_summary">Përdorni miniaturën si kopertinë</string>
|
||||
<string name="embed_thumb_summary">Përdorni thumbnailin si kopertinë</string>
|
||||
<string name="add_chapters">Kapituj në Video</string>
|
||||
<string name="add_chapters_summary">Shënoni segmentet e YouTube / SponsorBlock si kapituj për videon</string>
|
||||
<string name="save_thumb">Ruaj Thumbnail</string>
|
||||
|
|
@ -88,7 +88,7 @@
|
|||
<string name="remove_downloading">Hiq në shkarkim</string>
|
||||
<string name="delete_file_too">Fshije skedarin nga paisja</string>
|
||||
<string name="incognito_summary">Shkarko pa histori shkarkimi</string>
|
||||
<string name="configure_download">Konfiguro shkarkimin</string>
|
||||
<string name="configure_download">Konfiguro Shkarkimin</string>
|
||||
<string name="title">Titulli</string>
|
||||
<string name="author">Autori</string>
|
||||
<string name="download">Shkarko</string>
|
||||
|
|
@ -98,7 +98,7 @@
|
|||
<string name="show_download_card">Shfaq Opsionet e Shkarkimit</string>
|
||||
<string name="download_card_summary">Konfiguro përpara se sa ta shkarkosh</string>
|
||||
<string name="Open_File">Hap Skedarin</string>
|
||||
<string name="you_are_going_to_delete_multiple_items">Fshirja e shumë artikujve</string>
|
||||
<string name="you_are_going_to_delete_multiple_items">Fshi disa artikuj</string>
|
||||
<string name="delete_files_too">Fshi skedarët nga paisja</string>
|
||||
<string name="request_permission_desc">Ky aplikacion ka nevojë për lejen e Skedarëve për të ruajtur shkarkimet në paisje</string>
|
||||
<string name="exit_app">Dil</string>
|
||||
|
|
@ -112,7 +112,7 @@
|
|||
<string name="sponsorblock_fillers">Pjesë Shtesë</string>
|
||||
<string name="sponsorblock_reminders">Përkujtuesit e Abonimit</string>
|
||||
<string name="select_sponsorblock_filtering">Zgjidh Filtrimin e SponsorBlock</string>
|
||||
<string name="save_dir">Ruani në drejtori</string>
|
||||
<string name="save_dir">Ruaj në direktorinë</string>
|
||||
<string name="new_template">Model i ri</string>
|
||||
<string name="adjust_templates">Cakto Modelet</string>
|
||||
<string name="edit_selected">Redakto të zgjedhurin</string>
|
||||
|
|
@ -254,21 +254,21 @@
|
|||
<string name="search_history">Historia e Kërkimit</string>
|
||||
<string name="appearance">Pamja</string>
|
||||
<string name="backup_restore">Ruaj Dhe Rikthe</string>
|
||||
<string name="socks5_proxy_summary">Përdorni përfaqësuesin e specifikuar HTTP/HTTPS/SOCKS</string>
|
||||
<string name="socks5_proxy">URL e përfaqësuesit Socks5</string>
|
||||
<string name="socks5_proxy_summary">Përdorni proksin e specifikuar HTTP/HTTPS/SOCKS</string>
|
||||
<string name="socks5_proxy">URL e Proksit Socks5</string>
|
||||
<string name="search_suggestions_summary">Merr sugjerime kërkimi nga Google</string>
|
||||
<string name="search_suggestions">Sugjerimet e kërkimit</string>
|
||||
<string name="preferred_format_id_summary">Zgjidhni formatin me këtë ID në kartën e shkarkimit</string>
|
||||
<string name="misc">Të ndryshme</string>
|
||||
<string name="misc">Të Tjera</string>
|
||||
<string name="audio_only_item">Ky artikull përmban vetëm formate audio</string>
|
||||
<string name="locale">Lokal</string>
|
||||
<string name="general">Gjeneral</string>
|
||||
<string name="swipe_gestures">Gjestet e rrëshqitjes</string>
|
||||
<string name="swipe_gestures_summary">Rrëshqitni artikujt për veprime të caktuara</string>
|
||||
<string name="crop_thumb">Miniatura e Prirjes</string>
|
||||
<string name="crop_thumb_summary">Pritini miniaturën në një katror për shkarkime audio</string>
|
||||
<string name="crop_thumb">Preje Thumbnailin</string>
|
||||
<string name="crop_thumb_summary">Preje thumbnailin në formë katrore për shkarkimet audio</string>
|
||||
<string name="move_temporary_files">Zhvendos skedarët e përkohshëm</string>
|
||||
<string name="move_temporary_files_summary">Transferoni skedarët e memorizuar në dosjen e shkarkimeve</string>
|
||||
<string name="move_temporary_files_summary">Transfero skedarët e përkohshëm në dosjen e shkarkimeve</string>
|
||||
<string name="format_filtering_hint_2">Të gjithë artikujt duhet të jenë audio ose video për të përdorur këtë opsion</string>
|
||||
<string name="custom_audio_quality">Përdor cilësinë e personalizuar të audios</string>
|
||||
<string name="piped_instance">Instanca e PIPED</string>
|
||||
|
|
|
|||
|
|
@ -46,7 +46,7 @@
|
|||
|
||||
<SwitchPreferenceCompat
|
||||
android:widgetLayout="@layout/preferece_material_switch"
|
||||
app:defaultValue="true"
|
||||
app:defaultValue="false"
|
||||
android:icon="@drawable/ic_update_app"
|
||||
android:key="update_app"
|
||||
app:summary="@string/update_app_summary"
|
||||
|
|
|
|||
10
build.gradle
10
build.gradle
|
|
@ -2,16 +2,8 @@
|
|||
|
||||
|
||||
buildscript {
|
||||
|
||||
def versionMajor = 1
|
||||
def versionMinor = 6
|
||||
def versionPatch = 2
|
||||
def versionBuild = 1 // bump for dogfood builds, public betas, etc.
|
||||
|
||||
ext {
|
||||
versionCode = versionMajor * 100000 + versionMinor * 1000 + versionPatch * 100 + versionBuild
|
||||
versionName = "${versionMajor}.${versionMinor}.${versionPatch}"
|
||||
betaVersionNameSuffix = ".${versionBuild}-beta"
|
||||
abiCodes = ['armeabi-v7a': 1, 'x86': 2, 'x86_64': 3, 'arm64-v8a': 4]
|
||||
// dependency versions
|
||||
appCompatVer = '1.6.1'
|
||||
junitVer = '4.13.2'
|
||||
|
|
|
|||
7
fastlane/metadata/android/en-US/changelogs/10630.txt
Normal file
7
fastlane/metadata/android/en-US/changelogs/10630.txt
Normal file
|
|
@ -0,0 +1,7 @@
|
|||
Fixed txt file import not working
|
||||
added ability to select multiple audio streams for a single video
|
||||
make swipe gestures a preference
|
||||
crop thumb preference
|
||||
added support for multiple folders in a single download through filename templates
|
||||
added code syntax highlighter
|
||||
moved from invidious to piped for youtube queries
|
||||
Loading…
Reference in a new issue