diff --git a/.idea/assetWizardSettings.xml b/.idea/assetWizardSettings.xml index 617fae3e..a53c62e8 100644 --- a/.idea/assetWizardSettings.xml +++ b/.idea/assetWizardSettings.xml @@ -320,7 +320,7 @@ @@ -331,7 +331,7 @@ diff --git a/app/src/main/java/com/deniscerri/ytdlnis/database/models/DownloadItem.kt b/app/src/main/java/com/deniscerri/ytdlnis/database/models/DownloadItem.kt index 4764ecdb..073609b2 100644 --- a/app/src/main/java/com/deniscerri/ytdlnis/database/models/DownloadItem.kt +++ b/app/src/main/java/com/deniscerri/ytdlnis/database/models/DownloadItem.kt @@ -24,6 +24,9 @@ data class DownloadItem( val website: String, val downloadSize: String, val playlistTitle: String, + val embedSubs: Boolean, + val addChapters: Boolean, + val SaveThumb: Boolean, @ColumnInfo(defaultValue = "Queued") val status: String, val workID: Int diff --git a/app/src/main/java/com/deniscerri/ytdlnis/database/models/Format.kt b/app/src/main/java/com/deniscerri/ytdlnis/database/models/Format.kt index 2fecfc5c..5f53824d 100644 --- a/app/src/main/java/com/deniscerri/ytdlnis/database/models/Format.kt +++ b/app/src/main/java/com/deniscerri/ytdlnis/database/models/Format.kt @@ -2,14 +2,20 @@ package com.deniscerri.ytdlnis.database.models import androidx.room.Entity import androidx.room.PrimaryKey +import com.google.gson.annotations.SerializedName @Entity(tableName = "formats") data class Format( var itemId: Int, + @SerializedName(value = "format", alternate = ["type"]) val format: String, + @SerializedName(value = "format_id", alternate = ["itag"]) val format_id: String, + @SerializedName(value = "ext", alternate = ["container", ""]) val ext: String, + @SerializedName(value = "filesize", alternate = ["clen"]) val filesize: Long, + @SerializedName(value = "format_note", alternate = ["resolution", "audioQuality"]) val format_note: String ){ @PrimaryKey(autoGenerate = true) diff --git a/app/src/main/java/com/deniscerri/ytdlnis/database/repository/ResultRepository.kt b/app/src/main/java/com/deniscerri/ytdlnis/database/repository/ResultRepository.kt index 8ae0a35e..90229802 100644 --- a/app/src/main/java/com/deniscerri/ytdlnis/database/repository/ResultRepository.kt +++ b/app/src/main/java/com/deniscerri/ytdlnis/database/repository/ResultRepository.kt @@ -79,7 +79,7 @@ class ResultRepository(private val resultDao: ResultDao, private val formatDao: val tmpVids = tmp.videos val tmpToken = tmp.nextPageToken tmpVids.forEach { - val id = resultDao.insert(it!!.resultItem); + val id = resultDao.insert(it!!.resultItem) addFormats(it.formats,id) } if (tmpToken.isEmpty()) break @@ -94,7 +94,7 @@ class ResultRepository(private val resultDao: ResultDao, private val formatDao: if (resetResults) deleteAll() val items = infoUtil.getFromYTDL(inputQuery) items.forEach { - val id = resultDao.insert(it!!.resultItem); + val id = resultDao.insert(it!!.resultItem) addFormats(it.formats,id) } } catch (e: Exception) { @@ -104,7 +104,7 @@ class ResultRepository(private val resultDao: ResultDao, private val formatDao: private suspend fun addFormats(formats : ArrayList, id: Long){ formats.forEach { f -> - if (f.filesize == 0.toLong()) return@forEach + if (f.filesize == 0L) return@forEach f.itemId = id.toInt() formatDao.insert(f) } diff --git a/app/src/main/java/com/deniscerri/ytdlnis/service/InvidiousService.kt b/app/src/main/java/com/deniscerri/ytdlnis/service/api/InvidiousService.kt similarity index 96% rename from app/src/main/java/com/deniscerri/ytdlnis/service/InvidiousService.kt rename to app/src/main/java/com/deniscerri/ytdlnis/service/api/InvidiousService.kt index e8e82f32..bee05569 100644 --- a/app/src/main/java/com/deniscerri/ytdlnis/service/InvidiousService.kt +++ b/app/src/main/java/com/deniscerri/ytdlnis/service/api/InvidiousService.kt @@ -1,4 +1,4 @@ -package com.deniscerri.ytdlnis.service +package com.deniscerri.ytdlnis.service.api import com.deniscerri.ytdlnis.database.models.ResultItem import com.google.gson.JsonArray diff --git a/app/src/main/java/com/deniscerri/ytdlnis/service/YoutubeAPIService.kt b/app/src/main/java/com/deniscerri/ytdlnis/service/api/YoutubeAPIService.kt similarity index 98% rename from app/src/main/java/com/deniscerri/ytdlnis/service/YoutubeAPIService.kt rename to app/src/main/java/com/deniscerri/ytdlnis/service/api/YoutubeAPIService.kt index 1e05e0a4..ace5b13f 100644 --- a/app/src/main/java/com/deniscerri/ytdlnis/service/YoutubeAPIService.kt +++ b/app/src/main/java/com/deniscerri/ytdlnis/service/api/YoutubeAPIService.kt @@ -1,4 +1,4 @@ -package com.deniscerri.ytdlnis.service +package com.deniscerri.ytdlnis.service.api import com.google.gson.JsonArray import com.google.gson.JsonObject diff --git a/app/src/main/java/com/deniscerri/ytdlnis/util/InfoUtil.kt b/app/src/main/java/com/deniscerri/ytdlnis/util/InfoUtil.kt index d425b32d..d5a93c4d 100644 --- a/app/src/main/java/com/deniscerri/ytdlnis/util/InfoUtil.kt +++ b/app/src/main/java/com/deniscerri/ytdlnis/util/InfoUtil.kt @@ -288,6 +288,16 @@ class InfoUtil(context: Context) { val duration = formatIntegerDuration(obj.getInt("lengthSeconds")) val thumb = "https://i.ytimg.com/vi/$id/hqdefault.jpg" val url = "https://www.youtube.com/watch?v=$id" + val formats : ArrayList = ArrayList() + if (obj.has("adaptiveFormats")){ + val formatsInJSON = obj.getJSONArray("adaptiveFormats"); + for (f in 0 until formatsInJSON.length()){ + val format = formatsInJSON.getJSONObject(f) + if(!format.has("container")) continue + formats.add(Gson().fromJson(format.toString(), Format::class.java)) + } + } + video = ResultItemWithFormats( ResultItem( url, @@ -298,7 +308,7 @@ class InfoUtil(context: Context) { "youtube", "", ), - ArrayList() + formats ) } catch (e: Exception) { Log.e(TAG, e.toString()) @@ -606,7 +616,7 @@ class InfoUtil(context: Context) { companion object { private const val TAG = "API MANAGER" - private const val invidousURL = "https://invidious.baczek.me/api/vvvvvv/" + private const val invidousURL = "https://invidious.nerdvpn.de/api/v1/" private var countryCODE: String? = null } } \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_check.xml b/app/src/main/res/drawable/ic_check.xml new file mode 100644 index 00000000..8c2e797e --- /dev/null +++ b/app/src/main/res/drawable/ic_check.xml @@ -0,0 +1,5 @@ + + + diff --git a/app/src/main/res/drawable/ic_clock.xml b/app/src/main/res/drawable/ic_clock.xml new file mode 100644 index 00000000..8bbe4160 --- /dev/null +++ b/app/src/main/res/drawable/ic_clock.xml @@ -0,0 +1,6 @@ + + + + diff --git a/app/src/main/res/drawable/ic_edit.xml b/app/src/main/res/drawable/ic_edit.xml new file mode 100644 index 00000000..d52f8edc --- /dev/null +++ b/app/src/main/res/drawable/ic_edit.xml @@ -0,0 +1,5 @@ + + + diff --git a/app/src/main/res/drawable/ic_plus.xml b/app/src/main/res/drawable/ic_plus.xml new file mode 100644 index 00000000..c5720a0e --- /dev/null +++ b/app/src/main/res/drawable/ic_plus.xml @@ -0,0 +1,5 @@ + + + diff --git a/app/src/main/res/layout/home_download_audio_bottom_sheet.xml b/app/src/main/res/layout/home_download_audio_bottom_sheet.xml index aa4c1211..0547e925 100644 --- a/app/src/main/res/layout/home_download_audio_bottom_sheet.xml +++ b/app/src/main/res/layout/home_download_audio_bottom_sheet.xml @@ -14,30 +14,6 @@ android:orientation="vertical" > - - - - - - - - - - - -