From b0e6c0fa585ab99b879e23a2188df2c575d56385 Mon Sep 17 00:00:00 2001 From: k1rakishou Date: Thu, 2 May 2019 21:39:59 +0300 Subject: [PATCH] Add channel name and the current date to the downloaded file name --- .../newpipe/download/DownloadDialog.java | 46 +++++++++++++++++-- app/src/main/res/values/settings_keys.xml | 4 ++ app/src/main/res/values/strings.xml | 6 +++ app/src/main/res/xml/download_settings.xml | 9 ++++ 4 files changed, 60 insertions(+), 5 deletions(-) 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 ec6d42b29a2..c2b8f33c50a 100644 --- a/app/src/main/java/org/schabi/newpipe/download/DownloadDialog.java +++ b/app/src/main/java/org/schabi/newpipe/download/DownloadDialog.java @@ -43,7 +43,9 @@ import org.schabi.newpipe.util.StreamItemAdapter.StreamSizeWrapper; import org.schabi.newpipe.util.ThemeHelper; +import java.text.SimpleDateFormat; import java.util.ArrayList; +import java.util.Date; import java.util.List; import java.util.Locale; @@ -193,7 +195,8 @@ public View onCreateView(@NonNull LayoutInflater inflater, ViewGroup container, public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) { super.onViewCreated(view, savedInstanceState); nameEditText = view.findViewById(R.id.file_name); - nameEditText.setText(FilenameUtils.createFilename(getContext(), currentInfo.getName())); + + nameEditText.setText(createFilename()); selectedAudioIndex = ListHelper.getDefaultAudioFormat(getContext(), currentInfo.getAudioStreams()); selectedSubtitleIndex = getSubtitleIndexBy(subtitleStreamsAdapter.getAll()); @@ -268,10 +271,10 @@ public void onSaveInstanceState(Bundle outState) { Icepick.saveInstanceState(this, outState); } + /*////////////////////////////////////////////////////////////////////////// // Inits //////////////////////////////////////////////////////////////////////////*/ - private void initToolbar(Toolbar toolbar) { if (DEBUG) Log.d(TAG, "initToolbar() called with: toolbar = [" + toolbar + "]"); toolbar.setTitle(R.string.download_dialog_title); @@ -312,10 +315,10 @@ private void setupSubtitleSpinner() { setRadioButtonsState(true); } + /*////////////////////////////////////////////////////////////////////////// // Radio group Video&Audio options - Listener //////////////////////////////////////////////////////////////////////////*/ - @Override public void onCheckedChanged(RadioGroup group, @IdRes int checkedId) { if (DEBUG) @@ -338,10 +341,10 @@ public void onCheckedChanged(RadioGroup group, @IdRes int checkedId) { threadsSeekBar.setEnabled(flag); } + /*////////////////////////////////////////////////////////////////////////// // Streams Spinner Listener //////////////////////////////////////////////////////////////////////////*/ - @Override public void onItemSelected(AdapterView parent, View view, int position, long id) { if (DEBUG) @@ -363,10 +366,10 @@ public void onItemSelected(AdapterView parent, View view, int position, long public void onNothingSelected(AdapterView parent) { } + /*////////////////////////////////////////////////////////////////////////// // Utils //////////////////////////////////////////////////////////////////////////*/ - protected void setupDownloadOptions() { setRadioButtonsState(false); @@ -538,4 +541,37 @@ private void downloadSelected(Context context, Stream selectedStream, String loc getDialog().dismiss(); } + + private String createFilename() { + String defaultDownloadFilenameFormat = requireContext().getString( + R.string.download_filename_format_default_value); + + String currentDownloadFilenameFormat = PreferenceManager.getDefaultSharedPreferences(getContext()) + .getString( + requireContext().getString(R.string.download_filename_format_key), + defaultDownloadFilenameFormat); + + if (currentDownloadFilenameFormat == null) { + throw new NullPointerException("currentDownloadFilenameFormat is null"); + } + + SimpleDateFormat sdf = new SimpleDateFormat("yyyyMM", Locale.US); + String currentDate = sdf.format(new Date()); + + String secondParam = currentInfo.getName(); + String thirdParam = currentDate; + + if (!currentDownloadFilenameFormat.equals(defaultDownloadFilenameFormat)) { + secondParam = currentDate; + thirdParam = currentInfo.getName(); + } + + String filename = String.format( + "%s-%s-%s", + currentInfo.getUploaderName(), + secondParam, + thirdParam); + + return FilenameUtils.createFilename(getContext(), filename); + } } diff --git a/app/src/main/res/values/settings_keys.xml b/app/src/main/res/values/settings_keys.xml index 3861f53d59d..ba72ba2cc5c 100644 --- a/app/src/main/res/values/settings_keys.xml +++ b/app/src/main/res/values/settings_keys.xml @@ -919,4 +919,8 @@ @string/grid + + @string/download_filename_format_cnvtcd + @string/download_filename_format_cncdvt + diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 90554a04f89..b13ab45f499 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -603,4 +603,10 @@ Downloads that can not be paused will be restarted Close + download_filename_format + @string/download_filename_format_cnvtcd + ChannelName-VideoTitle-CurrentDate + ChannelName-CurrentDate-VideoTitle + Download filename format + Videos will have filename with this format \ No newline at end of file diff --git a/app/src/main/res/xml/download_settings.xml b/app/src/main/res/xml/download_settings.xml index be015018a95..7cfc8b9b812 100644 --- a/app/src/main/res/xml/download_settings.xml +++ b/app/src/main/res/xml/download_settings.xml @@ -34,6 +34,15 @@ android:summary="@string/settings_file_replacement_character_summary" android:title="@string/settings_file_replacement_character_title"/> + +