1.8.0
This commit is contained in:
parent
80672a2556
commit
d1d9a341bd
13 changed files with 76 additions and 30 deletions
23
CHANGELOG.md
23
CHANGELOG.md
|
|
@ -1,5 +1,28 @@
|
|||
# YTDLnis Changelog
|
||||
|
||||
> # 1.8.0 (2024-10)
|
||||
|
||||
# Notice
|
||||
|
||||
This version has the updated python version 3.11. Due to yt-dlp's deprecation of python 3.8, this update had to be made, but at the same time support for Android 6 will be dropped. Android 6 users can still keep using the previous version until yt-dlp stops working in the future.
|
||||
|
||||
# What's Changed
|
||||
|
||||
- Re-added individual pause button for downloads
|
||||
- Added ability to set preferred command template
|
||||
- Added PO Token setting for youtube extractor arguments
|
||||
- Added customizable client for youtube extractor arguments
|
||||
- Added preference to add extra youtube extractor arguments
|
||||
- Added a header on cancelled/errored/scheduled/saved tabs to show the count and a dropdown menu to delete and copy urls instead of using the main queue screen menu
|
||||
- Fixed app not starting scheduled downloads with the resume button if there were no paused downloads, weird ik
|
||||
- Added Socket Timeout in Download Settings
|
||||
- Fixed app not adding extra commands in the very end of the command list
|
||||
- Fixed #580
|
||||
- Small fixes on the home screen channel tab filters
|
||||
- Fixed app crashing when pressing the thumbnail icon in the result card details. The icon is hidden if there is no thumbnail
|
||||
- Watch Videos playlist type link is supported for data fetching and downloading.
|
||||
- Added ability to parse the "artists" tag when fetching data for ytm
|
||||
|
||||
> # 1.7.9.2 (2024-09)
|
||||
|
||||
# What's Changed
|
||||
|
|
|
|||
|
|
@ -10,7 +10,7 @@
|
|||
</div>
|
||||
|
||||
<h3 align="center">
|
||||
YTDLnis Android 6.0 və yuxarı üçün yt-dlp istifadə edən pulsuz və açıq mənbəli video/səs yükləyicidir.
|
||||
YTDLnis Android 7.0 və yuxarı üçün yt-dlp istifadə edən pulsuz və açıq mənbəli video/səs yükləyicidir.
|
||||
</h3>
|
||||
|
||||
<div align="center">
|
||||
|
|
|
|||
|
|
@ -10,10 +10,10 @@
|
|||
</div>
|
||||
|
||||
<h3 align="center">
|
||||
YTDLnis es un descargador de audio/video gratuito y de código abierto que utiliza yt-dlp para Android 6.0 y superior.
|
||||
YTDLnis es un descargador de audio/video gratuito y de código abierto que utiliza yt-dlp para Android 7.0 y superior.
|
||||
</h3>
|
||||
<h4 align="center">
|
||||
[Creado por Denis Çerri. Actualmente mantenido por zaednasr]
|
||||
Creado por Denis Çerri
|
||||
</h4>
|
||||
|
||||
<div align="center">
|
||||
|
|
|
|||
|
|
@ -10,7 +10,7 @@
|
|||
</div>
|
||||
|
||||
<h3 align="center">
|
||||
YTDLnis adalah pengunduh video/audio sumber terbuka dan gratis yang menggunakan yt-dlp bagi Android 6.0 ke atas.
|
||||
YTDLnis adalah pengunduh video/audio sumber terbuka dan gratis yang menggunakan yt-dlp bagi Android 7.0 ke atas.
|
||||
</h3>
|
||||
|
||||
<div align="center">
|
||||
|
|
|
|||
|
|
@ -20,10 +20,10 @@
|
|||
</div>
|
||||
|
||||
<h3 align="center">
|
||||
YTDLnisは、Android 6.0以降に対応した、yt-dlpを使用した無料かつオープンソースのビデオ/オーディオダウンローダーです。
|
||||
YTDLnisは、Android 7.0以降に対応した、yt-dlpを使用した無料かつオープンソースのビデオ/オーディオダウンローダーです。
|
||||
</h3>
|
||||
<h4 align="center">
|
||||
[Denis Çerriによって作成されました。現在はzaednasrによってメンテナンスされています]
|
||||
Denis Çerriによって作成されました
|
||||
</h4>
|
||||
|
||||
<div align="center">
|
||||
|
|
|
|||
|
|
@ -10,7 +10,7 @@
|
|||
</div>
|
||||
|
||||
<h3 align="center">
|
||||
YTDLnis é um aplicativo gratuito e de código aberto para baixar vídeos/áudios usando yt-dlp disponível para o Android 6.0 e superior.
|
||||
YTDLnis é um aplicativo gratuito e de código aberto para baixar vídeos/áudios usando yt-dlp disponível para o Android 7.0 e superior.
|
||||
</h3>
|
||||
|
||||
<div align="center">
|
||||
|
|
|
|||
|
|
@ -10,7 +10,7 @@
|
|||
</div>
|
||||
|
||||
<h3 align="center">
|
||||
YTDLnis është një shkarkues video/audio falas dhe me burim të hapur duke përdorur yt-dlp për Android 6.0 dhe më lart.
|
||||
YTDLnis është një shkarkues video/audio falas dhe me burim të hapur duke përdorur yt-dlp për Android 7.0 dhe më lart.
|
||||
</h3>
|
||||
|
||||
<div align="center">
|
||||
|
|
|
|||
|
|
@ -20,10 +20,10 @@
|
|||
</div>
|
||||
|
||||
<h3 align="center">
|
||||
YTDLnis is a free and open source video/audio downloader using yt-dlp for Android 6.0 and above.
|
||||
YTDLnis is a free and open source video/audio downloader using yt-dlp for Android 7.0 and above.
|
||||
</h3>
|
||||
<h4 align="center">
|
||||
[Created by Denis Çerri. Currently being maintained by zaednasr]
|
||||
Created by Denis Çerri
|
||||
</h4>
|
||||
|
||||
<div align="center">
|
||||
|
|
|
|||
|
|
@ -9,9 +9,9 @@ plugins {
|
|||
|
||||
def properties = new Properties()
|
||||
def versionMajor = 1
|
||||
def versionMinor = 7
|
||||
def versionPatch = 9
|
||||
def versionBuild = 2 // bump for dogfood builds, public betas, etc.
|
||||
def versionMinor = 8
|
||||
def versionPatch = 0
|
||||
def versionBuild = 0 // bump for dogfood builds, public betas, etc.
|
||||
def isBeta = false
|
||||
|
||||
def versionExt = ""
|
||||
|
|
|
|||
|
|
@ -118,7 +118,7 @@ interface DownloadDao {
|
|||
@Query("SELECT * FROM downloads WHERE status='Scheduled' ORDER BY downloadStartTime, id")
|
||||
fun getScheduledDownloadsList() : List<DownloadItem>
|
||||
|
||||
@Query("SELECT id FROM downloads WHERE status='Queued' ORDER BY id")
|
||||
@Query("SELECT id FROM downloads WHERE status='Queued' ORDER BY downloadStartTime, id")
|
||||
fun getQueuedDownloadsListIDs() : List<Long>
|
||||
|
||||
@RewriteQueriesToDropUnusedColumns
|
||||
|
|
@ -289,8 +289,11 @@ interface DownloadDao {
|
|||
|
||||
resetScheduleTimeForItems(existingIDs)
|
||||
existingIDs.forEach { updateDownloadID(it, -it) }
|
||||
downloads.filter { !existingIDs.contains(it) }.reversed().forEach {
|
||||
updateDownloadID(it, it + existingIDs.size)
|
||||
downloads.filter { !existingIDs.contains(it) }.toMutableList().apply {
|
||||
this.reverse()
|
||||
this.forEach {
|
||||
updateDownloadID(it, it + existingIDs.size)
|
||||
}
|
||||
}
|
||||
|
||||
existingIDs.forEachIndexed { idx, it ->
|
||||
|
|
@ -305,8 +308,11 @@ interface DownloadDao {
|
|||
|
||||
resetScheduleTimeForItems(existingIDs)
|
||||
existingIDs.forEach { updateDownloadID(it, -it) }
|
||||
downloads.filter { !existingIDs.contains(it) }.reversed().forEach {
|
||||
updateDownloadID(it, it + existingIDs.size)
|
||||
downloads.filter { !existingIDs.contains(it) }.toMutableList().apply {
|
||||
this.reverse()
|
||||
this.forEach {
|
||||
updateDownloadID(it, it + existingIDs.size)
|
||||
}
|
||||
}
|
||||
|
||||
existingIDs.forEachIndexed { idx, it ->
|
||||
|
|
|
|||
|
|
@ -176,7 +176,7 @@ class DownloadViewModel(private val application: Application) : AndroidViewModel
|
|||
return@combine PausedAllDownloadsState.HIDDEN
|
||||
}else if (paused > 1 || (active == 0 && queued > 0) || (paused > 0 && active > 0)) {
|
||||
return@combine PausedAllDownloadsState.RESUME
|
||||
}else if (active > 1) {
|
||||
}else if (active > 1 || (active > 0 && queued > 0)) {
|
||||
return@combine PausedAllDownloadsState.PAUSE
|
||||
}else{
|
||||
return@combine PausedAllDownloadsState.HIDDEN
|
||||
|
|
@ -767,12 +767,14 @@ class DownloadViewModel(private val application: Application) : AndroidViewModel
|
|||
|
||||
//other ids that need to move around
|
||||
val takenPositions = mutableListOf<Long>()
|
||||
for (dID in downloads.filter { !ids.contains(it) && it < lastID }.reversed()){
|
||||
val newID = downloads.last { !newIDs.contains(it) && !takenPositions.contains(it) && it <= lastID }
|
||||
takenPositions.add(newID)
|
||||
dao.updateDownloadID(dID, newID)
|
||||
downloads.filter { !ids.contains(it) && it < lastID }.toMutableList().apply {
|
||||
this.reverse()
|
||||
this.forEach { dID ->
|
||||
val newID = downloads.last { !newIDs.contains(it) && !takenPositions.contains(it) && it <= lastID }
|
||||
takenPositions.add(newID)
|
||||
dao.updateDownloadID(dID, newID)
|
||||
}
|
||||
}
|
||||
|
||||
ids.forEachIndexed { idx, it ->
|
||||
dao.updateDownloadID(-it, newIDs[idx])
|
||||
}
|
||||
|
|
@ -782,7 +784,7 @@ class DownloadViewModel(private val application: Application) : AndroidViewModel
|
|||
suspend fun putAtBottomOfQueue(ids: List<Long>) = CoroutineScope(Dispatchers.IO).launch{
|
||||
val downloads = dao.getQueuedDownloadsListIDs()
|
||||
ids.forEach { dao.updateDownloadID(it, -it)}
|
||||
val newIDs = downloads.sortedByDescending { it }.take(ids.size)
|
||||
val newIDs = downloads.takeLast(ids.size)
|
||||
|
||||
//other ids that need to move around
|
||||
val takenPositions = mutableListOf<Long>()
|
||||
|
|
@ -792,8 +794,11 @@ class DownloadViewModel(private val application: Application) : AndroidViewModel
|
|||
dao.updateDownloadID(dID, newID)
|
||||
}
|
||||
|
||||
ids.reversed().forEachIndexed { idx, it ->
|
||||
dao.updateDownloadID(-it, newIDs[idx])
|
||||
ids.toMutableList().apply {
|
||||
this.reverse()
|
||||
this.forEachIndexed { idx, it ->
|
||||
dao.updateDownloadID(-it, newIDs[idx])
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -803,9 +808,12 @@ class DownloadViewModel(private val application: Application) : AndroidViewModel
|
|||
dao.updateDownloadID(current, -current)
|
||||
|
||||
if (current > id){
|
||||
for (dID in downloads.filter { it in id until current }.reversed()){
|
||||
val index = downloads.indexOf(dID)
|
||||
dao.updateDownloadID(dID, downloads[index + 1])
|
||||
downloads.filter { it in id until current }.toMutableList().apply {
|
||||
this.reverse()
|
||||
this.forEach { dID ->
|
||||
val index = downloads.indexOf(dID)
|
||||
dao.updateDownloadID(dID, downloads[index + 1])
|
||||
}
|
||||
}
|
||||
}else{
|
||||
for (dID in downloads.filter { it in (current + 1)..id }){
|
||||
|
|
|
|||
|
|
@ -151,6 +151,7 @@ class HistoryFragment : Fragment(), HistoryAdapter.OnItemClickListener{
|
|||
|
||||
historyViewModel = ViewModelProvider(this)[HistoryViewModel::class.java]
|
||||
historyViewModel.allItems.observe(viewLifecycleOwner) {
|
||||
allhistoryList = it
|
||||
if(it.isEmpty()){
|
||||
noResults!!.visibility = VISIBLE
|
||||
selectionChips!!.visibility = GONE
|
||||
|
|
|
|||
8
fastlane/metadata/android/en-US/changelogs/108000000.txt
Normal file
8
fastlane/metadata/android/en-US/changelogs/108000000.txt
Normal file
|
|
@ -0,0 +1,8 @@
|
|||
# What's Changed
|
||||
|
||||
- Update to Python 3.11, FFMpeg 7.0.1, Cryptodome-3.20.0, mutagen-1.47.0
|
||||
- Re-added individual pause button for downloads
|
||||
- Added ability to set preferred command template
|
||||
- Added youtube extractor argument preferences
|
||||
- Download Queue general fixes
|
||||
- Read the Github changelog for more info
|
||||
Loading…
Reference in a new issue