From b16dde0b07cb865bf5d238de9ccdbb2acaddc448 Mon Sep 17 00:00:00 2001 From: Nite Date: Wed, 7 Oct 2020 17:52:16 +0200 Subject: [PATCH 1/2] Fixed Opus file handling Fixed file name generation in offline mode --- .../java/org/moire/ultrasonic/util/FileUtil.java | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/ultrasonic/src/main/java/org/moire/ultrasonic/util/FileUtil.java b/ultrasonic/src/main/java/org/moire/ultrasonic/util/FileUtil.java index da008be4..a3c23dde 100644 --- a/ultrasonic/src/main/java/org/moire/ultrasonic/util/FileUtil.java +++ b/ultrasonic/src/main/java/org/moire/ultrasonic/util/FileUtil.java @@ -51,7 +51,7 @@ public class FileUtil private static final String TAG = FileUtil.class.getSimpleName(); private static final String[] FILE_SYSTEM_UNSAFE = {"/", "\\", "..", ":", "\"", "?", "*", "<", ">", "|"}; private static final String[] FILE_SYSTEM_UNSAFE_DIR = {"\\", "..", ":", "\"", "?", "*", "<", ">", "|"}; - private static final List MUSIC_FILE_EXTENSIONS = Arrays.asList("mp3", "ogg", "aac", "flac", "m4a", "wav", "wma"); + private static final List MUSIC_FILE_EXTENSIONS = Arrays.asList("mp3", "ogg", "aac", "flac", "m4a", "wav", "wma", "opus"); private static final List VIDEO_FILE_EXTENSIONS = Arrays.asList("flv", "mp4", "m4v", "wmv", "avi", "mov", "mpg", "mkv"); private static final List PLAYLIST_FILE_EXTENSIONS = Collections.singletonList("m3u"); private static final Pattern TITLE_WITH_TRACK = Pattern.compile("^\\d\\d-.*"); @@ -60,10 +60,19 @@ public class FileUtil { File dir = getAlbumDirectory(context, song); + // If the song already exists, it isn't necessary to give it a name + if (!TextUtils.isEmpty(song.getPath())) + { + File songFile = new File(String.format("%s/%s", getMusicDirectory(context).getPath(), fileSystemSafeDir(song.getPath()))); + if (songFile.exists() && songFile.isFile()) return songFile; + } + + // Generate a file name for the song StringBuilder fileName = new StringBuilder(256); Integer track = song.getTrack(); - if (!TITLE_WITH_TRACK.matcher(song.getTitle()).matches()) {//check if filename already had track number + //check if filename already had track number + if (!TITLE_WITH_TRACK.matcher(song.getTitle()).matches()) { if (track != null) { if (track < 10) { fileName.append('0'); From 1f7167e016e1a5179f3cdd3dcaa8400465400079 Mon Sep 17 00:00:00 2001 From: Nite Date: Wed, 7 Oct 2020 20:52:58 +0200 Subject: [PATCH 2/2] Removed file existence check to improve performance --- .../src/main/java/org/moire/ultrasonic/util/FileUtil.java | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/ultrasonic/src/main/java/org/moire/ultrasonic/util/FileUtil.java b/ultrasonic/src/main/java/org/moire/ultrasonic/util/FileUtil.java index a3c23dde..2e6ab445 100644 --- a/ultrasonic/src/main/java/org/moire/ultrasonic/util/FileUtil.java +++ b/ultrasonic/src/main/java/org/moire/ultrasonic/util/FileUtil.java @@ -60,11 +60,10 @@ public class FileUtil { File dir = getAlbumDirectory(context, song); - // If the song already exists, it isn't necessary to give it a name - if (!TextUtils.isEmpty(song.getPath())) + // Do not generate new name for offline files. Offline files will have their Path as their Id. + if (!TextUtils.isEmpty(song.getId())) { - File songFile = new File(String.format("%s/%s", getMusicDirectory(context).getPath(), fileSystemSafeDir(song.getPath()))); - if (songFile.exists() && songFile.isFile()) return songFile; + if (song.getId().startsWith(dir.getAbsolutePath())) return new File(song.getId()); } // Generate a file name for the song