From f303a4f8798e2a5447c27450c64f547d698d70ab Mon Sep 17 00:00:00 2001 From: deniscerri <64997243+deniscerri@users.noreply.github.com> Date: Wed, 12 Jul 2023 22:16:52 +0200 Subject: [PATCH] more stuff Quick download item log has no title now, maybe you can use "null" or the link? 'Cause it looks hilarious, LOL Fix search history not showing sometimes Add download type in logs fix video not showing in cut screen fixed xhamster not showing results --- app/build.gradle | 12 +- .../8.json | 33 +- .../com/deniscerri/ytdlnis/MainActivity.kt | 4 + .../ytdlnis/adapter/DownloadLogsAdapter.kt | 121 +++++++- .../ytdlnis/database/models/DownloadItem.kt | 2 + .../ytdlnis/database/models/LogItem.kt | 7 +- .../database/viewmodel/DownloadViewModel.kt | 4 +- .../com/deniscerri/ytdlnis/ui/BaseActivity.kt | 2 + .../com/deniscerri/ytdlnis/ui/HomeFragment.kt | 162 +++++----- .../downloadcard/CutVideoBottomSheetDialog.kt | 112 ++++--- .../ui/downloadcard/DownloadAudioFragment.kt | 53 +++- .../ui/downloadcard/DownloadVideoFragment.kt | 51 ++++ .../ytdlnis/ui/more/CookiesFragment.kt | 2 - .../more/downloadLogs/DownloadLogFragment.kt | 2 + .../downloadLogs/DownloadLogListFragment.kt | 177 ++++++++++- .../ui/more/settings/MainSettingsFragment.kt | 5 +- .../com/deniscerri/ytdlnis/util/InfoUtil.kt | 285 +++++++++++++++++- .../deniscerri/ytdlnis/work/DownloadWorker.kt | 253 ++-------------- .../ytdlnis/work/TerminalDownloadWorker.kt | 9 +- app/src/main/res/layout/cut_video_sheet.xml | 6 +- app/src/main/res/layout/download_log_item.xml | 36 --- .../layout/extra_commands_bottom_sheet.xml | 90 ++++++ .../main/res/layout/format_details_sheet.xml | 2 +- .../res/layout/fragment_download_audio.xml | 16 + .../res/layout/fragment_download_video.xml | 16 + app/src/main/res/layout/log_card.xml | 201 ++++++++++++ app/src/main/res/menu/logs_menu_context.xml | 23 ++ app/src/main/res/values-sq-rAL/strings.xml | 2 +- app/src/main/res/values/strings.xml | 3 + .../main/res/xml/processing_preferences.xml | 9 + app/src/main/res/xml/root_preferences.xml | 2 +- build.gradle | 2 +- 32 files changed, 1265 insertions(+), 439 deletions(-) delete mode 100644 app/src/main/res/layout/download_log_item.xml create mode 100644 app/src/main/res/layout/extra_commands_bottom_sheet.xml create mode 100644 app/src/main/res/layout/log_card.xml create mode 100644 app/src/main/res/menu/logs_menu_context.xml diff --git a/app/build.gradle b/app/build.gradle index 418ddf77..c9aaa2ae 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -192,8 +192,18 @@ dependencies { implementation "com.squareup.okhttp3:okhttp:5.0.0-alpha.10" implementation 'org.jetbrains.kotlinx:kotlinx-serialization-json:1.5.0' - implementation "com.google.android.exoplayer:exoplayer:2.18.7" implementation 'it.xabaras.android:recyclerview-swipedecorator:1.4' implementation "androidx.lifecycle:lifecycle-livedata-ktx:2.6.1" implementation "com.github.Irineu333:Highlight-KT:1.0.4" + + // For media playback using ExoPlayer + implementation("androidx.media3:media3-exoplayer:$media3_version") + // For DASH playback support with ExoPlayer + implementation("androidx.media3:media3-exoplayer-dash:$media3_version") + // For HLS playback support with ExoPlayer + implementation("androidx.media3:media3-exoplayer-hls:$media3_version") + implementation("androidx.media3:media3-ui:$media3_version") + // For RTSP playback support with ExoPlayer + implementation("androidx.media3:media3-exoplayer-rtsp:$media3_version") + implementation("androidx.media3:media3-datasource-cronet:$media3_version") } diff --git a/app/schemas/com.deniscerri.ytdlnis.database.DBManager/8.json b/app/schemas/com.deniscerri.ytdlnis.database.DBManager/8.json index 74d8248d..df2c826b 100644 --- a/app/schemas/com.deniscerri.ytdlnis.database.DBManager/8.json +++ b/app/schemas/com.deniscerri.ytdlnis.database.DBManager/8.json @@ -2,7 +2,7 @@ "formatVersion": 1, "database": { "version": 8, - "identityHash": "b21f2aa737d29eef2c1bf6418b314726", + "identityHash": "3d472df655311f8e531602dca2886c34", "entities": [ { "tableName": "results", @@ -180,7 +180,7 @@ }, { "tableName": "downloads", - "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`id` INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, `url` TEXT NOT NULL, `title` TEXT NOT NULL, `author` TEXT NOT NULL, `thumb` TEXT NOT NULL, `duration` TEXT NOT NULL, `type` TEXT NOT NULL, `format` TEXT NOT NULL, `container` TEXT NOT NULL DEFAULT 'Default', `downloadSections` TEXT NOT NULL DEFAULT '', `allFormats` TEXT NOT NULL, `downloadPath` TEXT NOT NULL, `website` TEXT NOT NULL, `downloadSize` TEXT NOT NULL, `playlistTitle` TEXT NOT NULL, `audioPreferences` TEXT NOT NULL, `videoPreferences` TEXT NOT NULL, `customFileNameTemplate` TEXT NOT NULL, `SaveThumb` INTEGER NOT NULL, `status` TEXT NOT NULL DEFAULT 'Queued', `downloadStartTime` INTEGER NOT NULL DEFAULT 0, `logID` INTEGER)", + "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`id` INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, `url` TEXT NOT NULL, `title` TEXT NOT NULL, `author` TEXT NOT NULL, `thumb` TEXT NOT NULL, `duration` TEXT NOT NULL, `type` TEXT NOT NULL, `format` TEXT NOT NULL, `container` TEXT NOT NULL DEFAULT 'Default', `downloadSections` TEXT NOT NULL DEFAULT '', `allFormats` TEXT NOT NULL, `downloadPath` TEXT NOT NULL, `website` TEXT NOT NULL, `downloadSize` TEXT NOT NULL, `playlistTitle` TEXT NOT NULL, `audioPreferences` TEXT NOT NULL, `videoPreferences` TEXT NOT NULL, `extraCommands` TEXT NOT NULL DEFAULT '', `customFileNameTemplate` TEXT NOT NULL, `SaveThumb` INTEGER NOT NULL, `status` TEXT NOT NULL DEFAULT 'Queued', `downloadStartTime` INTEGER NOT NULL DEFAULT 0, `logID` INTEGER)", "fields": [ { "fieldPath": "id", @@ -286,6 +286,13 @@ "affinity": "TEXT", "notNull": true }, + { + "fieldPath": "extraCommands", + "columnName": "extraCommands", + "affinity": "TEXT", + "notNull": true, + "defaultValue": "''" + }, { "fieldPath": "customFileNameTemplate", "columnName": "customFileNameTemplate", @@ -446,7 +453,7 @@ }, { "tableName": "logs", - "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`id` INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, `title` TEXT NOT NULL, `content` TEXT NOT NULL)", + "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`id` INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, `title` TEXT NOT NULL, `content` TEXT NOT NULL, `format` TEXT NOT NULL, `downloadType` TEXT NOT NULL, `downloadTime` INTEGER NOT NULL)", "fields": [ { "fieldPath": "id", @@ -465,6 +472,24 @@ "columnName": "content", "affinity": "TEXT", "notNull": true + }, + { + "fieldPath": "format", + "columnName": "format", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "downloadType", + "columnName": "downloadType", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "downloadTime", + "columnName": "downloadTime", + "affinity": "INTEGER", + "notNull": true } ], "primaryKey": { @@ -480,7 +505,7 @@ "views": [], "setupQueries": [ "CREATE TABLE IF NOT EXISTS room_master_table (id INTEGER PRIMARY KEY,identity_hash TEXT)", - "INSERT OR REPLACE INTO room_master_table (id,identity_hash) VALUES(42, 'b21f2aa737d29eef2c1bf6418b314726')" + "INSERT OR REPLACE INTO room_master_table (id,identity_hash) VALUES(42, '3d472df655311f8e531602dca2886c34')" ] } } \ No newline at end of file diff --git a/app/src/main/java/com/deniscerri/ytdlnis/MainActivity.kt b/app/src/main/java/com/deniscerri/ytdlnis/MainActivity.kt index 1c6f7ed6..773e8123 100644 --- a/app/src/main/java/com/deniscerri/ytdlnis/MainActivity.kt +++ b/app/src/main/java/com/deniscerri/ytdlnis/MainActivity.kt @@ -16,16 +16,20 @@ import android.os.Handler import android.provider.Settings import android.util.Log import android.view.View +import android.view.ViewGroup import android.view.WindowInsets import android.widget.CheckBox import android.widget.TextView import androidx.annotation.RequiresApi import androidx.constraintlayout.widget.ConstraintLayout import androidx.core.app.ActivityCompat +import androidx.core.view.ViewCompat +import androidx.core.view.WindowCompat import androidx.core.view.WindowInsetsCompat import androidx.core.view.forEach import androidx.core.view.isVisible import androidx.core.view.updateLayoutParams +import androidx.core.view.updatePadding import androidx.fragment.app.FragmentContainerView import androidx.lifecycle.ViewModelProvider import androidx.lifecycle.lifecycleScope diff --git a/app/src/main/java/com/deniscerri/ytdlnis/adapter/DownloadLogsAdapter.kt b/app/src/main/java/com/deniscerri/ytdlnis/adapter/DownloadLogsAdapter.kt index fea64407..6f1a6d89 100644 --- a/app/src/main/java/com/deniscerri/ytdlnis/adapter/DownloadLogsAdapter.kt +++ b/app/src/main/java/com/deniscerri/ytdlnis/adapter/DownloadLogsAdapter.kt @@ -1,6 +1,8 @@ package com.deniscerri.ytdlnis.adapter +import android.annotation.SuppressLint import android.app.Activity +import android.text.format.DateFormat import android.view.LayoutInflater import android.view.View import android.view.ViewGroup @@ -12,29 +14,38 @@ import androidx.recyclerview.widget.DiffUtil import androidx.recyclerview.widget.ListAdapter import androidx.recyclerview.widget.RecyclerView import com.deniscerri.ytdlnis.R +import com.deniscerri.ytdlnis.database.models.DownloadItem import com.deniscerri.ytdlnis.database.models.LogItem +import com.deniscerri.ytdlnis.database.viewmodel.DownloadViewModel +import com.deniscerri.ytdlnis.util.FileUtil +import com.google.android.material.button.MaterialButton +import com.google.android.material.card.MaterialCardView import java.io.File +import java.text.SimpleDateFormat +import java.util.Locale class DownloadLogsAdapter(onItemClickListener: OnItemClickListener, activity: Activity) : ListAdapter(AsyncDifferConfig.Builder(DIFF_CALLBACK).build()) { private val onItemClickListener: OnItemClickListener private val activity: Activity + private val checkedItems: ArrayList init { + checkedItems = ArrayList() this.onItemClickListener = onItemClickListener this.activity = activity } class ViewHolder(itemView: View, onItemClickListener: OnItemClickListener?) : RecyclerView.ViewHolder(itemView) { - val item: ConstraintLayout + val item: MaterialCardView init { - item = itemView.findViewById(R.id.download_log_item_constraint) + item = itemView.findViewById(R.id.log_card_view) } } override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder { val cardView = LayoutInflater.from(parent.context) - .inflate(R.layout.download_log_item, parent, false) + .inflate(R.layout.log_card, parent, false) return ViewHolder(cardView, onItemClickListener) } @@ -45,20 +56,112 @@ class DownloadLogsAdapter(onItemClickListener: OnItemClickListener, activity: Ac val title = card.findViewById(R.id.title) title.text = item?.title - val delete = card.findViewById