[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[elpa] externals/emms 5531af7 38/80: Add support for id3v1 genres
From: |
Stefan Monnier |
Subject: |
[elpa] externals/emms 5531af7 38/80: Add support for id3v1 genres |
Date: |
Wed, 17 Mar 2021 18:42:26 -0400 (EDT) |
branch: externals/emms
commit 5531af7426bb5e162cd48ada4b65c5ac1b8bb00a
Author: Petteri Hintsanen <petterih@iki.fi>
Commit: Petteri Hintsanen <petterih@iki.fi>
Add support for id3v1 genres
---
emms-info-native.el | 142 +++++++++++++++++++++++++++++++++++++++++++++++++++-
1 file changed, 141 insertions(+), 1 deletion(-)
diff --git a/emms-info-native.el b/emms-info-native.el
index 97c1917..e3181ef 100644
--- a/emms-info-native.el
+++ b/emms-info-native.el
@@ -546,7 +546,7 @@ outside itself.")
("TDRC" . "date")
("TPA" . "discnumber")
("TPOS" . "discnumber")
- ("TCON" . "genre")
+ ("TCON" . genre)
("TPUB" . "label")
("TDOR" . "originaldate")
("TOR" . "originalyear")
@@ -566,6 +566,135 @@ Sources:
- URL `https://picard-docs.musicbrainz.org/en/appendices/tag_mapping.html'
- URL `http://wiki.hydrogenaud.io/index.php?title=Foobar2000:ID3_Tag_Mapping'")
+(defconst emms-info-native--id3v1-genres
+ '((0 . "Blues")
+ (1 . "Classic Rock")
+ (2 . "Country")
+ (3 . "Dance")
+ (4 . "Disco")
+ (5 . "Funk")
+ (6 . "Grunge")
+ (7 . "Hip-Hop")
+ (8 . "Jazz")
+ (9 . "Metal")
+ (10 . "New Age")
+ (11 . "Oldies")
+ (12 . "Other")
+ (13 . "Pop")
+ (14 . "R&B")
+ (15 . "Rap")
+ (16 . "Reggae")
+ (17 . "Rock")
+ (18 . "Techno")
+ (19 . "Industrial")
+ (20 . "Alternative")
+ (21 . "Ska")
+ (22 . "Death Metal")
+ (23 . "Pranks")
+ (24 . "Soundtrack")
+ (25 . "Euro-Techno")
+ (26 . "Ambient")
+ (27 . "Trip-Hop")
+ (28 . "Vocal")
+ (29 . "Jazz+Funk")
+ (30 . "Fusion")
+ (31 . "Trance")
+ (32 . "Classical")
+ (33 . "Instrumental")
+ (34 . "Acid")
+ (35 . "House")
+ (36 . "Game")
+ (37 . "Sound Clip")
+ (38 . "Gospel")
+ (39 . "Noise")
+ (40 . "AlternRock")
+ (41 . "Bass")
+ (42 . "Soul")
+ (43 . "Punk")
+ (44 . "Space")
+ (45 . "Meditative")
+ (46 . "Instrumental Pop")
+ (47 . "Instrumental Rock")
+ (48 . "Ethnic")
+ (49 . "Gothic")
+ (50 . "Darkwave")
+ (51 . "Techno-Industrial")
+ (52 . "Electronic")
+ (53 . "Pop-Folk")
+ (54 . "Eurodance")
+ (55 . "Dream")
+ (56 . "Southern Rock")
+ (57 . "Comedy")
+ (58 . "Cult")
+ (59 . "Gangsta")
+ (60 . "Top 40")
+ (61 . "Christian Rap")
+ (62 . "Pop/Funk")
+ (63 . "Jungle")
+ (64 . "Native American")
+ (65 . "Cabaret")
+ (66 . "New Wave")
+ (67 . "Psychadelic")
+ (68 . "Rave")
+ (69 . "Showtunes")
+ (70 . "Trailer")
+ (71 . "Lo-Fi")
+ (72 . "Tribal")
+ (73 . "Acid Punk")
+ (74 . "Acid Jazz")
+ (75 . "Polka")
+ (76 . "Retro")
+ (77 . "Musical")
+ (78 . "Rock & Roll")
+ (79 . "Hard Rock")
+ (80 . "Folk")
+ (81 . "Folk-Rock")
+ (82 . "National Folk")
+ (83 . "Swing")
+ (84 . "Fast Fusion")
+ (85 . "Bebob")
+ (86 . "Latin")
+ (87 . "Revival")
+ (88 . "Celtic")
+ (89 . "Bluegrass")
+ (90 . "Avantgarde")
+ (91 . "Gothic Rock")
+ (92 . "Progressive Rock")
+ (93 . "Psychedelic Rock")
+ (94 . "Symphonic Rock")
+ (95 . "Slow Rock")
+ (96 . "Big Band")
+ (97 . "Chorus")
+ (98 . "Easy Listening")
+ (99 . "Acoustic")
+ (100 . "Humour")
+ (101 . "Speech")
+ (102 . "Chanson")
+ (103 . "Opera")
+ (104 . "Chamber Music")
+ (105 . "Sonata")
+ (106 . "Symphony")
+ (107 . "Booty Bass")
+ (108 . "Primus")
+ (109 . "Porn Groove")
+ (110 . "Satire")
+ (111 . "Slow Jam")
+ (112 . "Club")
+ (113 . "Tango")
+ (114 . "Samba")
+ (115 . "Folklore")
+ (116 . "Ballad")
+ (117 . "Power Ballad")
+ (118 . "Rhythmic Soul")
+ (119 . "Freestyle")
+ (120 . "Duet")
+ (121 . "Punk Rock")
+ (122 . "Drum Solo")
+ (123 . "A cappella")
+ (124 . "Euro-House")
+ (125 . "Dance Hall"))
+ "id3v1 genres.")
+
(defconst emms-info-native--id3v2-text-encodings
'((0 . latin-1)
(1 . utf-16)
@@ -749,11 +878,22 @@ with key/value-pair. Extract the key and, if it is a
mapped
element in `emms-info-native--id3v2-frame-to-info', use it as
INFO-ID.
+If INFO-ID is `genre', assume that DATA is either id3v1 genre
+reference \"(XX)\" or plain genre string. In the former case,
+map XX to a string via `emms-info-native--id3v1-genres'; in the
+latter case use the genre string verbatim.
+
Return a cons cell (INFO-ID . VALUE) where VALUE is the decoded
string."
(when info-id
(let ((str (emms-info-native--decode-id3v2-string data)))
(cond ((stringp info-id) (cons info-id str))
+ ((eq info-id 'genre)
+ (if (string-match "^(\\([0-9]+\\))" str)
+ (let ((v1-genre (assoc (string-to-number (match-string 1 str))
+ emms-info-native--id3v1-genres)))
+ (when v1-genre (cons "genre" (cdr v1-genre))))
+ (cons "genre" str)))
((eq info-id 'user-defined)
(let* ((key-val (split-string str (string 0)))
(key (downcase (car key-val)))
- [elpa] externals/emms a57cc7e 43/80: * emms-bookmarks.el: lexical scoping declaration, (continued)
- [elpa] externals/emms a57cc7e 43/80: * emms-bookmarks.el: lexical scoping declaration, Stefan Monnier, 2021/03/17
- [elpa] externals/emms fcdb111 25/80: Add mappings for more id3v2 text frames, Stefan Monnier, 2021/03/17
- [elpa] externals/emms c8f198d 31/80: Put some id3v2.4 frame data to info-date instead of info-year, Stefan Monnier, 2021/03/17
- [elpa] externals/emms b7684ba 39/80: Match id3v1 genres in id3v2.4 frame, Stefan Monnier, 2021/03/17
- [elpa] externals/emms d12014d 50/80: * emms-i18n.el: lexical declaration, Stefan Monnier, 2021/03/17
- [elpa] externals/emms abf6b01 49/80: * emms-history.el: lexical declaration, Stefan Monnier, 2021/03/17
- [elpa] externals/emms 0fcea44 52/80: * emms-info.el: add lexical and remove unused lexical variable, Stefan Monnier, 2021/03/17
- [elpa] externals/emms ba16ff6 13/80: * emms-tag-editor.el: lexical compatibility work, Stefan Monnier, 2021/03/17
- [elpa] externals/emms bf22384 16/80: Clean up Vorbis code, Stefan Monnier, 2021/03/17
- [elpa] externals/emms a879267 37/80: Decode id3v2 user-defined text frames, Stefan Monnier, 2021/03/17
- [elpa] externals/emms 5531af7 38/80: Add support for id3v1 genres,
Stefan Monnier <=
- [elpa] externals/emms 6a1c281 66/80: * emms-player-mplayer.el: lexical declaration, Stefan Monnier, 2021/03/17
- [elpa] externals/emms 7ca6cd3 70/80: * emms-playlist-mode.el:, Stefan Monnier, 2021/03/17
- [elpa] externals/emms 89ccb7d 75/80: Rewrite manual Chapter 13 Track Information, Stefan Monnier, 2021/03/17
- [elpa] externals/emms 7bb5f7f 29/80: Improve id3v2 validity checks, Stefan Monnier, 2021/03/17
- [elpa] externals/emms bfae6b2 34/80: Replace curved quotes with ASCII quotes, Stefan Monnier, 2021/03/17
- [elpa] externals/emms 51d1877 42/80: * emms.info: update dates, Stefan Monnier, 2021/03/17
- [elpa] externals/emms b04ac71 45/80: * emms-cache.el: explicit ignore, Stefan Monnier, 2021/03/17
- [elpa] externals/emms c5bc656 48/80: * emms.el: explicit ignore, Stefan Monnier, 2021/03/17
- [elpa] externals/emms c8711e0 53/80: * emms-info-libtag.el: lexical declaration, Stefan Monnier, 2021/03/17
- [elpa] externals/emms c76a1a6 58/80: * emms-later-do.el: tell the compiler that we know, Stefan Monnier, 2021/03/17