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