From ecf79fbff448ea042bb2f2a32c8bda06682cb801 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Denis=20=C3=87erri?=
<64997243+deniscerri@users.noreply.github.com>
Date: Tue, 18 Oct 2022 00:53:22 +0200
Subject: [PATCH] [beta] added functional download config cards
---
.idea/assetWizardSettings.xml | 4 +-
.idea/misc.xml | 1 +
.../deniscerri/ytdlnis/DownloaderService.java | 19 ++-
.../deniscerri/ytdlnis/database/Video.java | 39 ++++++
.../ytdlnis/page/DownloadsFragment.java | 16 ++-
.../deniscerri/ytdlnis/page/HomeFragment.java | 127 +++++++++++++++++-
.../page/settings/SettingsFragment.java | 21 +++
app/src/main/res/drawable/ic_card.xml | 5 +
.../home_download_audio_bottom_sheet.xml | 4 +-
.../home_download_video_bottom_sheet.xml | 10 +-
app/src/main/res/values/strings.xml | 2 +
app/src/main/res/xml/root_preferences.xml | 16 +++
12 files changed, 244 insertions(+), 20 deletions(-)
create mode 100644 app/src/main/res/drawable/ic_card.xml
diff --git a/.idea/assetWizardSettings.xml b/.idea/assetWizardSettings.xml
index 8b90c52d..12ee8e76 100644
--- a/.idea/assetWizardSettings.xml
+++ b/.idea/assetWizardSettings.xml
@@ -320,7 +320,7 @@
@@ -331,7 +331,7 @@
diff --git a/.idea/misc.xml b/.idea/misc.xml
index 787e42be..155a8652 100644
--- a/.idea/misc.xml
+++ b/.idea/misc.xml
@@ -41,6 +41,7 @@
+
diff --git a/app/src/main/java/com/deniscerri/ytdlnis/DownloaderService.java b/app/src/main/java/com/deniscerri/ytdlnis/DownloaderService.java
index 95873812..7f138102 100644
--- a/app/src/main/java/com/deniscerri/ytdlnis/DownloaderService.java
+++ b/app/src/main/java/com/deniscerri/ytdlnis/DownloaderService.java
@@ -337,6 +337,11 @@ public class DownloaderService extends Service {
request.addOption("--sponsorblock-remove", "all");
}
+ request.addOption("--replace-in-metadata", "title \"[ ]\" \""+video.getTitle()+"\"");
+ request.addOption("--parse-metadata", "meta_title:%(title)s");
+ request.addOption("--parse-metadata", "title:%(title)s");
+ request.addOption("--parse-metadata", "meta_artist:\""+video.getAuthor()+"\"");
+
} else if (type.equals("video")) {
boolean addChapters = sharedPreferences.getBoolean("add_chapters", false);
if(addChapters){
@@ -346,7 +351,13 @@ public class DownloaderService extends Service {
if(embedSubs){
request.addOption("--embed-subs", "");
}
- request.addOption("-f", "bestvideo+bestaudio/best");
+ String videoQuality = sharedPreferences.getString("video_quality", "");
+ String formatArgument = "bestvideo+bestaudio/best";
+ if (!videoQuality.isEmpty() && !videoQuality.equals("Best Quality")) {
+ formatArgument = "bestvideo[height<="+videoQuality.substring(0, videoQuality.length()-1)+"]+bestaudio/best";
+ }
+ Toast.makeText(context, formatArgument, Toast.LENGTH_LONG).show();
+ request.addOption("-f", formatArgument);
String format = sharedPreferences.getString("video_format", "");
request.addOption("--merge-output-format", format);
@@ -356,6 +367,10 @@ public class DownloaderService extends Service {
request.addOption("--embed-thumbnail");
}
}
+
+ request.addOption("--add-metadata");
+ request.addOption("--postprocessor-args", "-metadata title=\""+video.getTitle()+"\"");
+
}
request.addOption("-o", youtubeDLDir.getAbsolutePath() + "/%(title)s.%(ext)s");
@@ -386,7 +401,7 @@ public class DownloaderService extends Service {
if (BuildConfig.DEBUG) Log.e(TAG, getString(R.string.failed_download), e);
notificationUtil.updateDownloadNotification(NotificationUtil.DOWNLOAD_NOTIFICATION_ID,
getString(R.string.failed_download), 0, 0, downloadQueue.peek().getTitle());
-
+ downloadInfo.setDownloadType(type);
try{
for (Activity activity: activities.keySet()){
activity.runOnUiThread(() -> {
diff --git a/app/src/main/java/com/deniscerri/ytdlnis/database/Video.java b/app/src/main/java/com/deniscerri/ytdlnis/database/Video.java
index 46ecd276..3fdaf61f 100644
--- a/app/src/main/java/com/deniscerri/ytdlnis/database/Video.java
+++ b/app/src/main/java/com/deniscerri/ytdlnis/database/Video.java
@@ -22,6 +22,9 @@ public class Video implements Parcelable, Cloneable {
private boolean downloadingVideo;
private boolean queuedDownload;
private String playlistTitle;
+ private String audioFormat;
+ private String videoFormat;
+ private String videoQuality;
// RESULTS OBJECT
public Video(String videoId, String url, String title, String author, String duration, String thumb,
@@ -77,6 +80,9 @@ public class Video implements Parcelable, Cloneable {
downloadPath = in.readString();
website = in.readString();
playlistTitle = in.readString();
+ audioFormat = in.readString();
+ videoFormat = in.readString();
+ videoQuality = in.readString();
}
public static final Creator