From 1a61c7f8b6d5c1f3aaf98a541c8cc6e3a005d5ef Mon Sep 17 00:00:00 2001 From: Adrian Ulrich Date: Sun, 18 Feb 2018 10:59:57 +0100 Subject: [PATCH] relex genre parsing Allow genre tags with whitespaces (or enclosed in brackets) to be picked up by the genre translator. --- .../medialibrary/MediaMetadataExtractor.java | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/app/src/main/java/ch/blinkenlights/android/medialibrary/MediaMetadataExtractor.java b/app/src/main/java/ch/blinkenlights/android/medialibrary/MediaMetadataExtractor.java index d6a1a2ef..680ad7c4 100644 --- a/app/src/main/java/ch/blinkenlights/android/medialibrary/MediaMetadataExtractor.java +++ b/app/src/main/java/ch/blinkenlights/android/medialibrary/MediaMetadataExtractor.java @@ -12,7 +12,7 @@ * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License - * along with this program. If not, see . + * along with this program. If not, see . */ package ch.blinkenlights.android.medialibrary; @@ -57,6 +57,10 @@ public class MediaMetadataExtractor extends HashMap> { * Regexp matching anything */ private static final Pattern sFilterAny = Pattern.compile("^([\\s\\S]*)$"); + /** + * Regexp matching possible genres + */ + private static final Pattern sFilterGenre = Pattern.compile("^\\s*\\(?(\\d+)\\)?\\s*$"); /** * Genres as defined by androids own MediaScanner.java */ @@ -441,18 +445,19 @@ public class MediaMetadataExtractor extends HashMap> { if (rawGenre == null) return; // no genre, nothing to do - try { - genreIdx = Integer.parseInt(rawGenre); - } catch (NumberFormatException exception) { /* genre not set or not a number */ } + Matcher matcher = sFilterGenre.matcher(rawGenre); + if (matcher.matches()) { + try { + genreIdx = Integer.parseInt(matcher.group(1)); + } catch (NumberFormatException e) {} // ignored + } if (genreIdx >= 0 && genreIdx < ID3_GENRES.length) { ArrayList data = new ArrayList(1); data.add(ID3_GENRES[genreIdx]); - remove(GENRE); addFiltered(sFilterAny, GENRE, data); } - } }