Skip to content

Commit d4d92f1

Browse files
committed
Implement metadata embedding settings
1 parent d700f21 commit d4d92f1

22 files changed

+146
-38
lines changed

build.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
rootProject.version = '1.5.15'
1+
rootProject.version = '1.5.16'
22

33
subprojects {
44
repositories {

core/src/main/java/net/brlns/gdownloader/filters/AbstractUrlFilter.java

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -128,9 +128,19 @@ public static List<AbstractUrlFilter> getDefaultUrlFilters() {
128128
@JsonProperty("AudioNamePattern")
129129
private String audioNamePattern = "";
130130

131+
@Deprecated
131132
@JsonProperty("EmbedThumbnailAndMetadata")
132133
private boolean embedThumbnailAndMetadata = false;
133134

135+
@JsonProperty("EmbedThumbnail")
136+
private boolean embedThumbnail = false;
137+
138+
@JsonProperty("EmbedSubtitles")
139+
private boolean embedSubtitles = false;
140+
141+
@JsonProperty("EmbedMetadata")
142+
private boolean embedMetadata = false;
143+
134144
@JsonProperty("CanTranscodeVideo")
135145
private boolean canTranscodeVideo = true;
136146

core/src/main/java/net/brlns/gdownloader/filters/BiliBiliFilter.java

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,9 @@ public BiliBiliFilter() {
3737
setUrlRegex("^(https?:\\/\\/)?(www\\.)?bilibili\\.com(\\/.*)?$");
3838
setVideoNamePattern("%(title).60s (%(uploader_id)s %(upload_date)s %(resolution)s).%(ext)s");
3939
setAudioNamePattern(getVideoNamePattern().replace("%(resolution)s", "%(audio_bitrate)s"));
40-
setEmbedThumbnailAndMetadata(false);
40+
setEmbedThumbnail(false);
41+
setEmbedSubtitles(false);
42+
setEmbedMetadata(false);
43+
4144
}
4245
}

core/src/main/java/net/brlns/gdownloader/filters/CrunchyrollFilter.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,9 @@ public CrunchyrollFilter() {
3636
setId(ID);
3737
setFilterName("Crunchyroll");
3838
setUrlRegex("^(https?:\\/\\/)?(www\\.)?crunchyroll\\.com(\\/.*)?$");
39-
setEmbedThumbnailAndMetadata(true);
39+
setEmbedThumbnail(true);
40+
setEmbedSubtitles(true);
41+
setEmbedMetadata(true);
4042
}
4143

4244
@JsonIgnore

core/src/main/java/net/brlns/gdownloader/filters/DailymotionFilter.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,8 @@ public DailymotionFilter() {
3535
setId(ID);
3636
setFilterName("Dailymotion");
3737
setUrlRegex("^(https?:\\/\\/)?(www\\.)?dailymotion\\.com(\\/.*)?$");
38-
setEmbedThumbnailAndMetadata(true);
38+
setEmbedThumbnail(true);
39+
setEmbedSubtitles(true);
40+
setEmbedMetadata(true);
3941
}
4042
}

core/src/main/java/net/brlns/gdownloader/filters/DropoutFilter.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,9 @@ public DropoutFilter() {
3636
setId(ID);
3737
setFilterName("Dropout");
3838
setUrlRegex("^(https?:\\/\\/)?(www\\.)?dropout\\.tv(\\/.*)?$");
39-
setEmbedThumbnailAndMetadata(false);
39+
setEmbedThumbnail(false);
40+
setEmbedSubtitles(false);
41+
setEmbedMetadata(false);
4042
}
4143

4244
@JsonIgnore

core/src/main/java/net/brlns/gdownloader/filters/FacebookFilter.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,9 @@ public FacebookFilter() {
4646
setUrlRegex("^(https?:\\/\\/)?(www\\.)?facebook\\.com(\\/.*)?$");
4747
setVideoNamePattern("%(title).60s (%(upload_date)s %(resolution)s).%(ext)s");
4848
setAudioNamePattern(getVideoNamePattern().replace("%(resolution)s", "%(audio_bitrate)s"));
49-
setEmbedThumbnailAndMetadata(true);
49+
setEmbedThumbnail(true);
50+
setEmbedSubtitles(true);
51+
setEmbedMetadata(true);
5052
}
5153

5254
@JsonIgnore

core/src/main/java/net/brlns/gdownloader/filters/GenericFilter.java

Lines changed: 40 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,9 @@ public GenericFilter() {
5555
setId(ID);
5656
setVideoNamePattern("%(title).60s (%(resolution)s).%(ext)s");
5757
setAudioNamePattern(getVideoNamePattern().replace("%(resolution)s", "%(audio_bitrate)s"));
58-
setEmbedThumbnailAndMetadata(false);
58+
setEmbedThumbnail(false);
59+
setEmbedSubtitles(false);
60+
setEmbedMetadata(false);
5961
}
6062

6163
@JsonIgnore
@@ -191,28 +193,47 @@ protected ProcessArguments buildArguments(AbstractDownloader downloader, Downloa
191193
videoContainer.getValue()// TODO: same as source will actually default to mp4
192194
);
193195

194-
if (isEmbedThumbnailAndMetadata()) {
195-
switch (quality.getVideoContainer()) {
196-
// aac, alac: not working
197-
// flv, avi, mov: cannot merge (unsupported codecs)
198-
case WEBM ->// WebM does not support thumbnail embedding
196+
switch (quality.getVideoContainer()) {
197+
// aac, alac: not working
198+
// flv, avi, mov: cannot merge (unsupported codecs)
199+
case WEBM -> {// WebM does not support thumbnail embedding
200+
if (isEmbedMetadata()) {
199201
arguments.add(
200202
"--embed-metadata",
201-
"--embed-chapters",
203+
"--embed-chapters"
204+
);
205+
}
206+
207+
if (isEmbedSubtitles()) {
208+
arguments.add(
202209
"--embed-subs",
203210
"--sub-langs",
204211
"all,-live_chat"
205212
);
206-
case MKV, MP4, MOV, DEFAULT ->
213+
}
214+
}
215+
case MKV, MP4, MOV, DEFAULT -> {
216+
if (isEmbedThumbnail()) {
207217
arguments.add(
208218
"--convert-thumbnails", "png",
209-
"--embed-thumbnail",
219+
"--embed-thumbnail"
220+
);
221+
}
222+
223+
if (isEmbedMetadata()) {
224+
arguments.add(
210225
"--embed-metadata",
211-
"--embed-chapters",
226+
"--embed-chapters"
227+
);
228+
}
229+
230+
if (isEmbedSubtitles()) {
231+
arguments.add(
212232
"--embed-subs",
213233
"--sub-langs",
214234
"all,-live_chat"
215235
);
236+
}
216237
}
217238
}
218239
// Transcoding is handled by our built-in ffmpeg transcoder.
@@ -240,13 +261,14 @@ protected ProcessArguments buildArguments(AbstractDownloader downloader, Downloa
240261
}
241262
}
242263

243-
if (isEmbedThumbnailAndMetadata()) {
244-
if (audioContainer != AudioContainerEnum.WAV
245-
&& audioContainer != AudioContainerEnum.AAC) {
246-
arguments.add(
247-
"--embed-thumbnail",
248-
"--embed-metadata"
249-
);
264+
if (audioContainer != AudioContainerEnum.WAV
265+
&& audioContainer != AudioContainerEnum.AAC) {
266+
if (isEmbedThumbnail()) {
267+
arguments.add("--embed-thumbnail");
268+
}
269+
270+
if (isEmbedMetadata()) {
271+
arguments.add("--embed-metadata");
250272
}
251273
}
252274
}
@@ -407,7 +429,7 @@ protected ProcessArguments buildArguments(AbstractDownloader downloader, Downloa
407429
Math.clamp(audioBitrate.getValue(), 8, 320) + "k"
408430
);
409431

410-
if (!isEmbedThumbnailAndMetadata()) {
432+
if (!isEmbedThumbnail()) {
411433
// SpotDL does not appear to support disabling metadata embedding.
412434
// This is the best we can do to respect user settings.
413435
arguments.add("--skip-album-art");

core/src/main/java/net/brlns/gdownloader/filters/ImgurFilter.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,8 @@ public ImgurFilter() {
3535
setId(ID);
3636
setFilterName("Imgur");
3737
setUrlRegex("^(https?:\\/\\/)?(www\\.)?imgur\\.com(\\/.*)?$");
38-
setEmbedThumbnailAndMetadata(false);
38+
setEmbedThumbnail(false);
39+
setEmbedSubtitles(false);
40+
setEmbedMetadata(false);
3941
}
4042
}

core/src/main/java/net/brlns/gdownloader/filters/PatreonFilter.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,8 @@ public PatreonFilter() {
3535
setId(ID);
3636
setFilterName("Patreon");
3737
setUrlRegex("^(https?:\\/\\/)?(www\\.)?patreon\\.com(\\/.*)?$");
38-
setEmbedThumbnailAndMetadata(false);
38+
setEmbedThumbnail(false);
39+
setEmbedSubtitles(false);
40+
setEmbedMetadata(false);
3941
}
4042
}

0 commit comments

Comments
 (0)