diff --git a/app/src/main/java/org/schabi/newpipe/download/DownloadDialog.java b/app/src/main/java/org/schabi/newpipe/download/DownloadDialog.java
index 0857fa339..891e1c30a 100644
--- a/app/src/main/java/org/schabi/newpipe/download/DownloadDialog.java
+++ b/app/src/main/java/org/schabi/newpipe/download/DownloadDialog.java
@@ -299,7 +299,7 @@ public class DownloadDialog extends DialogFragment
}
dialogBinding.fileName.setText(FilenameUtils.createFilename(getContext(),
- currentInfo.getName()));
+ getFileName()));
selectedAudioIndex = ListHelper.getDefaultAudioFormat(getContext(),
getWrappedAudioStreams().getStreamsList());
@@ -612,7 +612,7 @@ public class DownloadDialog extends DialogFragment
}
private void onItemSelectedSetFileName() {
- final String fileName = FilenameUtils.createFilename(getContext(), currentInfo.getName());
+ final String fileName = FilenameUtils.createFilename(getContext(), getFileName());
final String prevFileName = Optional.ofNullable(dialogBinding.fileName.getText())
.map(Object::toString)
.orElse("");
@@ -743,7 +743,24 @@ public class DownloadDialog extends DialogFragment
final String str = Objects.requireNonNull(dialogBinding.fileName.getText()).toString()
.trim();
- return FilenameUtils.createFilename(context, str.isEmpty() ? currentInfo.getName() : str);
+ return FilenameUtils.createFilename(context, str.isEmpty() ? getFileName() : str);
+ }
+
+ private String getFileName() {
+ final SharedPreferences sharedPreferences = PreferenceManager
+ .getDefaultSharedPreferences(context);
+
+ final boolean includeUploader = sharedPreferences.getBoolean(
+ context.getString(R.string.settings_file_name_include_uploader_key), false);
+
+ final String name = currentInfo.getName();
+ if (includeUploader) {
+ final String uploader = currentInfo.getUploaderName();
+ if (uploader != null && !uploader.isEmpty()) {
+ return name + " - " + uploader;
+ }
+ }
+ return name;
}
private void showFailedDialog(@StringRes final int msg) {
diff --git a/app/src/main/res/values-de/strings.xml b/app/src/main/res/values-de/strings.xml
index b99209f0f..dc1606ba6 100644
--- a/app/src/main/res/values-de/strings.xml
+++ b/app/src/main/res/values-de/strings.xml
@@ -118,6 +118,8 @@
Erlaubte Zeichen im Dateinamen
Ungültige Zeichen werden durch dieses Zeichen ersetzt
Ersetzungszeichen
+ Name des Uploaders an den Dateinamen anhängen
+ Uploader im Dateinamen
Buchstaben und Zahlen
Abonnieren
Abonniert
diff --git a/app/src/main/res/values/settings_keys.xml b/app/src/main/res/values/settings_keys.xml
index 352e4cec1..e97475911 100644
--- a/app/src/main/res/values/settings_keys.xml
+++ b/app/src/main/res/values/settings_keys.xml
@@ -432,6 +432,7 @@
file_rename_charset
file_replacement_character
_
+ file_include_uploader_name
CHARSET_LETTERS_AND_DIGITS
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index 147c88938..9e134a5bd 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -365,6 +365,8 @@
Allowed characters in filenames
Invalid characters are replaced with this value
Replacement character
+ Append uploader name to filename
+ Uploader in filename
Letters and digits
Most special characters
diff --git a/app/src/main/res/xml/download_settings.xml b/app/src/main/res/xml/download_settings.xml
index 27513d259..75278b4b2 100644
--- a/app/src/main/res/xml/download_settings.xml
+++ b/app/src/main/res/xml/download_settings.xml
@@ -53,6 +53,14 @@
app:singleLineTitle="false"
app:iconSpaceReserved="false" />
+
+