1
0
mirror of https://github.com/TeamNewPipe/NewPipe synced 2024-06-27 07:33:20 +00:00
NewPipe/app/src/main/java/org/schabi/newpipe/util/FilenameUtils.java
TiA4f8R 79e98db3bd
Apply the requested changes and little improvements
Apply the requested changes, use ShareUtils.shareText to share an stream in the play queue and optimize imports for Java files, using Android Studio functionality.

Apply the requested changes and do little improvements
Apply the requested changes, use ShareUtils.shareText to share an stream in the play queue and optimize imports for Java files, using Android Studio functionality.
2021-01-16 13:23:42 +01:00

70 lines
2.6 KiB
Java

package org.schabi.newpipe.util;
import android.content.Context;
import android.content.SharedPreferences;
import androidx.preference.PreferenceManager;
import org.schabi.newpipe.R;
import java.util.regex.Pattern;
public final class FilenameUtils {
private static final String CHARSET_MOST_SPECIAL = "[\\n\\r|?*<\":\\\\>/']+";
private static final String CHARSET_ONLY_LETTERS_AND_DIGITS = "[^\\w\\d]+";
private FilenameUtils() { }
/**
* #143 #44 #42 #22: make sure that the filename does not contain illegal chars.
*
* @param context the context to retrieve strings and preferences from
* @param title the title to create a filename from
* @return the filename
*/
public static String createFilename(final Context context, final String title) {
final SharedPreferences sharedPreferences = PreferenceManager
.getDefaultSharedPreferences(context);
final String charsetLd = context.getString(R.string.charset_letters_and_digits_value);
final String charsetMs = context.getString(R.string.charset_most_special_value);
final String defaultCharset = context.getString(R.string.default_file_charset_value);
final String replacementChar = sharedPreferences.getString(
context.getString(R.string.settings_file_replacement_character_key), "_");
String selectedCharset = sharedPreferences.getString(
context.getString(R.string.settings_file_charset_key), null);
final String charset;
if (selectedCharset == null || selectedCharset.isEmpty()) {
selectedCharset = defaultCharset;
}
if (selectedCharset.equals(charsetLd)) {
charset = CHARSET_ONLY_LETTERS_AND_DIGITS;
} else if (selectedCharset.equals(charsetMs)) {
charset = CHARSET_MOST_SPECIAL;
} else {
charset = selectedCharset; // Is the user using a custom charset?
}
final Pattern pattern = Pattern.compile(charset);
return createFilename(title, pattern, replacementChar);
}
/**
* Create a valid filename.
*
* @param title the title to create a filename from
* @param invalidCharacters patter matching invalid characters
* @param replacementChar the replacement
* @return the filename
*/
private static String createFilename(final String title, final Pattern invalidCharacters,
final String replacementChar) {
return title.replaceAll(invalidCharacters.pattern(), replacementChar);
}
}