|
|
@@ -71,80 +71,80 @@ is > 0 and < (sizeof *ID3V1-GENRES*)"
|
|
|
(defgeneric genre (stream))
|
|
|
|
|
|
;;;; MP3
|
|
|
-(defmethod cover ((me id3-frame:mp3-file))
|
|
|
+(defmethod cover ((me id3:mp3-file))
|
|
|
(declare #.utils:*standard-optimize-settings*)
|
|
|
(let ((pictures)
|
|
|
- (frames (id3-frame:get-frames me '("PIC" "APIC"))))
|
|
|
+ (frames (id3:get-frames me '("PIC" "APIC"))))
|
|
|
(when frames
|
|
|
(dolist (f frames)
|
|
|
- (push (id3-frame:picture-info f) pictures)))
|
|
|
+ (push (id3:picture-info f) pictures)))
|
|
|
pictures))
|
|
|
|
|
|
-(defmethod album ((me id3-frame:mp3-file))
|
|
|
+(defmethod album ((me id3:mp3-file))
|
|
|
(declare #.utils:*standard-optimize-settings*)
|
|
|
- (let ((frames (id3-frame:get-frames me '("TAL" "TALB"))))
|
|
|
+ (let ((frames (id3:get-frames me '("TAL" "TALB"))))
|
|
|
(when frames
|
|
|
(assert (= 1 (length frames)) () "There can be only one album tag")
|
|
|
- (return-from album (id3-frame:info (first frames)))))
|
|
|
- (if (id3-frame:v21-tag-header (id3-frame:id3-header me))
|
|
|
- (id3-frame:album (id3-frame:v21-tag-header (id3-frame:id3-header me)))
|
|
|
+ (return-from album (id3:info (first frames)))))
|
|
|
+ (if (id3:v21-tag-header (id3:id3-header me))
|
|
|
+ (id3:album (id3:v21-tag-header (id3:id3-header me)))
|
|
|
nil))
|
|
|
|
|
|
-(defmethod artist ((me id3-frame:mp3-file))
|
|
|
+(defmethod artist ((me id3:mp3-file))
|
|
|
(declare #.utils:*standard-optimize-settings*)
|
|
|
- (let ((frames (id3-frame:get-frames me '("TP1" "TPE1"))))
|
|
|
+ (let ((frames (id3:get-frames me '("TP1" "TPE1"))))
|
|
|
(when frames
|
|
|
(assert (= 1 (length frames)) () "There can be only one artist tag")
|
|
|
- (return-from artist (id3-frame:info (first frames)))))
|
|
|
- (if (id3-frame:v21-tag-header (id3-frame:id3-header me))
|
|
|
- (id3-frame:artist (id3-frame:v21-tag-header (id3-frame:id3-header me)))
|
|
|
+ (return-from artist (id3:info (first frames)))))
|
|
|
+ (if (id3:v21-tag-header (id3:id3-header me))
|
|
|
+ (id3:artist (id3:v21-tag-header (id3:id3-header me)))
|
|
|
nil))
|
|
|
|
|
|
-(defmethod comment ((me id3-frame:mp3-file))
|
|
|
+(defmethod comment ((me id3:mp3-file))
|
|
|
(declare #.utils:*standard-optimize-settings*)
|
|
|
- (let ((frames (id3-frame:get-frames me '("COM" "COMM"))))
|
|
|
+ (let ((frames (id3:get-frames me '("COM" "COMM"))))
|
|
|
(when frames
|
|
|
(let ((new-frames))
|
|
|
(dolist (f frames)
|
|
|
- (push (list (id3-frame:encoding f)
|
|
|
- (id3-frame:lang f)
|
|
|
- (id3-frame:desc f)
|
|
|
- (id3-frame:val f)) new-frames))
|
|
|
+ (push (list (id3:encoding f)
|
|
|
+ (id3:lang f)
|
|
|
+ (id3:desc f)
|
|
|
+ (id3:val f)) new-frames))
|
|
|
(return-from comment new-frames))))
|
|
|
- (if (id3-frame:v21-tag-header (id3-frame:id3-header me))
|
|
|
- (id3-frame:comment (id3-frame:v21-tag-header (id3-frame:id3-header me)))
|
|
|
+ (if (id3:v21-tag-header (id3:id3-header me))
|
|
|
+ (id3:comment (id3:v21-tag-header (id3:id3-header me)))
|
|
|
nil))
|
|
|
|
|
|
-(defmethod year ((me id3-frame:mp3-file))
|
|
|
+(defmethod year ((me id3:mp3-file))
|
|
|
(declare #.utils:*standard-optimize-settings*)
|
|
|
- (let ((frames (id3-frame:get-frames me '("TRD" "TDRC"))))
|
|
|
+ (let ((frames (id3:get-frames me '("TRD" "TDRC"))))
|
|
|
(when frames
|
|
|
(assert (= 1 (length frames)) () "There can be only one year tag")
|
|
|
- (return-from year (id3-frame:info (first frames)))))
|
|
|
- (if (id3-frame:v21-tag-header (id3-frame:id3-header me))
|
|
|
- (id3-frame:year (id3-frame:v21-tag-header (id3-frame:id3-header me)))
|
|
|
+ (return-from year (id3:info (first frames)))))
|
|
|
+ (if (id3:v21-tag-header (id3:id3-header me))
|
|
|
+ (id3:year (id3:v21-tag-header (id3:id3-header me)))
|
|
|
nil))
|
|
|
|
|
|
-(defmethod title ((me id3-frame:mp3-file))
|
|
|
+(defmethod title ((me id3:mp3-file))
|
|
|
(declare #.utils:*standard-optimize-settings*)
|
|
|
- (let ((frames (id3-frame:get-frames me '("TT2" "TIT2"))))
|
|
|
+ (let ((frames (id3:get-frames me '("TT2" "TIT2"))))
|
|
|
(when frames
|
|
|
(assert (= 1 (length frames)) () "There can be only one title tag")
|
|
|
- (return-from title (id3-frame:info (first frames)))))
|
|
|
- (if (id3-frame:v21-tag-header (id3-frame:id3-header me))
|
|
|
- (id3-frame:title (id3-frame:v21-tag-header (id3-frame:id3-header me)))
|
|
|
+ (return-from title (id3:info (first frames)))))
|
|
|
+ (if (id3:v21-tag-header (id3:id3-header me))
|
|
|
+ (id3:title (id3:v21-tag-header (id3:id3-header me)))
|
|
|
nil))
|
|
|
|
|
|
-(defmethod genre ((me id3-frame:mp3-file))
|
|
|
+(defmethod genre ((me id3:mp3-file))
|
|
|
(declare #.utils:*standard-optimize-settings*)
|
|
|
- (let ((frames (id3-frame:get-frames me '("TCO" "TCON"))))
|
|
|
+ (let ((frames (id3:get-frames me '("TCO" "TCON"))))
|
|
|
(when frames
|
|
|
(when (> (length frames) 1)
|
|
|
(warn-user "file ~a has more than one genre frame, will only use the first"
|
|
|
- (id3-frame:filename me)))
|
|
|
+ (id3:filename me)))
|
|
|
(let ((count)
|
|
|
(end)
|
|
|
- (str (id3-frame:info (first frames))))
|
|
|
+ (str (id3:info (first frames))))
|
|
|
|
|
|
;; For V23/V24 TCON frames, a genre can be pretty gnarly.
|
|
|
;; if the first byte of the TCON INFO field is a '(', what is between this '('
|
|
|
@@ -163,88 +163,88 @@ is > 0 and < (sizeof *ID3V1-GENRES*)"
|
|
|
(setf str (get-id3v1-genre (parse-integer (subseq str 1 end)))))
|
|
|
(return-from genre str))))
|
|
|
|
|
|
- (if (id3-frame:v21-tag-header (id3-frame:id3-header me))
|
|
|
- (get-id3v1-genre (id3-frame:genre (id3-frame:v21-tag-header (id3-frame:id3-header me))))
|
|
|
+ (if (id3:v21-tag-header (id3:id3-header me))
|
|
|
+ (get-id3v1-genre (id3:genre (id3:v21-tag-header (id3:id3-header me))))
|
|
|
nil))
|
|
|
|
|
|
;;;; No V2.1 tags for any of these
|
|
|
-(defmethod album-artist ((me id3-frame:mp3-file))
|
|
|
+(defmethod album-artist ((me id3:mp3-file))
|
|
|
(declare #.utils:*standard-optimize-settings*)
|
|
|
- (let ((frames (id3-frame:get-frames me '("TP2" "TPE2"))))
|
|
|
+ (let ((frames (id3:get-frames me '("TP2" "TPE2"))))
|
|
|
(when frames
|
|
|
(assert (= 1 (length frames)) () "There can be only one album-artist tag")
|
|
|
- (return-from album-artist (id3-frame:info (first frames)))))
|
|
|
+ (return-from album-artist (id3:info (first frames)))))
|
|
|
nil)
|
|
|
|
|
|
-(defmethod composer ((me id3-frame:mp3-file))
|
|
|
+(defmethod composer ((me id3:mp3-file))
|
|
|
(declare #.utils:*standard-optimize-settings*)
|
|
|
- (let ((frames (id3-frame:get-frames me '("TCM" "TCOM"))))
|
|
|
+ (let ((frames (id3:get-frames me '("TCM" "TCOM"))))
|
|
|
(when frames
|
|
|
(assert (= 1 (length frames)) () "There can be only one composer tag")
|
|
|
- (return-from composer (id3-frame:info (first frames)))))
|
|
|
+ (return-from composer (id3:info (first frames)))))
|
|
|
nil)
|
|
|
|
|
|
-(defmethod copyright ((me id3-frame:mp3-file))
|
|
|
+(defmethod copyright ((me id3:mp3-file))
|
|
|
(declare #.utils:*standard-optimize-settings*)
|
|
|
- (let ((frames (id3-frame:get-frames me '("TCR" "TCOP"))))
|
|
|
+ (let ((frames (id3:get-frames me '("TCR" "TCOP"))))
|
|
|
(when frames
|
|
|
(assert (= 1 (length frames)) () "There can be only one copyright tag")
|
|
|
- (return-from copyright (id3-frame:info (first frames)))))
|
|
|
+ (return-from copyright (id3:info (first frames)))))
|
|
|
nil)
|
|
|
|
|
|
-(defmethod encoder ((me id3-frame:mp3-file))
|
|
|
+(defmethod encoder ((me id3:mp3-file))
|
|
|
(declare #.utils:*standard-optimize-settings*)
|
|
|
- (let ((frames (id3-frame:get-frames me '("TEN" "TENC"))))
|
|
|
+ (let ((frames (id3:get-frames me '("TEN" "TENC"))))
|
|
|
(when frames
|
|
|
(assert (= 1 (length frames)) () "There can be only one encoder tag")
|
|
|
- (return-from encoder (id3-frame:info (first frames)))))
|
|
|
+ (return-from encoder (id3:info (first frames)))))
|
|
|
nil)
|
|
|
|
|
|
-(defmethod groups ((me id3-frame:mp3-file))
|
|
|
+(defmethod groups ((me id3:mp3-file))
|
|
|
(declare #.utils:*standard-optimize-settings*)
|
|
|
- (let ((frames (id3-frame:get-frames me '("TT1" "TTE1"))))
|
|
|
+ (let ((frames (id3:get-frames me '("TT1" "TTE1"))))
|
|
|
(when frames
|
|
|
(assert (= 1 (length frames)) () "There can be only one group tag")
|
|
|
- (return-from groups (id3-frame:info (first frames)))))
|
|
|
+ (return-from groups (id3:info (first frames)))))
|
|
|
nil)
|
|
|
|
|
|
-(defmethod lyrics ((me id3-frame:mp3-file))
|
|
|
+(defmethod lyrics ((me id3:mp3-file))
|
|
|
(declare #.utils:*standard-optimize-settings*)
|
|
|
- (let ((frames (id3-frame:get-frames me '("ULT" "USLT"))))
|
|
|
+ (let ((frames (id3:get-frames me '("ULT" "USLT"))))
|
|
|
(when frames
|
|
|
(assert (= 1 (length frames)) () "There can be only one lyrics tag")
|
|
|
- (return-from lyrics (id3-frame:val (first frames)))))
|
|
|
+ (return-from lyrics (id3:val (first frames)))))
|
|
|
nil)
|
|
|
|
|
|
-(defmethod writer ((me id3-frame:mp3-file))
|
|
|
+(defmethod writer ((me id3:mp3-file))
|
|
|
(declare #.utils:*standard-optimize-settings*)
|
|
|
- (let ((frames (id3-frame:get-frames me '("TCM" "TCOM"))))
|
|
|
+ (let ((frames (id3:get-frames me '("TCM" "TCOM"))))
|
|
|
(when frames
|
|
|
(assert (= 1 (length frames)) () "There can be only one composer tag")
|
|
|
- (return-from writer (id3-frame:info (first frames)))))
|
|
|
+ (return-from writer (id3:info (first frames)))))
|
|
|
nil)
|
|
|
|
|
|
-(defmethod compilation ((me id3-frame:mp3-file))
|
|
|
+(defmethod compilation ((me id3:mp3-file))
|
|
|
(declare #.utils:*standard-optimize-settings*)
|
|
|
- (let ((frames (id3-frame:get-frames me '("TCMP" "TCP"))))
|
|
|
+ (let ((frames (id3:get-frames me '("TCMP" "TCP"))))
|
|
|
(if frames
|
|
|
- (id3-frame:info (first frames))
|
|
|
+ (id3:info (first frames))
|
|
|
"no")))
|
|
|
|
|
|
-(defmethod disk ((me id3-frame:mp3-file))
|
|
|
+(defmethod disk ((me id3:mp3-file))
|
|
|
(declare #.utils:*standard-optimize-settings*)
|
|
|
- (let ((frames (id3-frame:get-frames me '("TPA" "TPOS"))))
|
|
|
+ (let ((frames (id3:get-frames me '("TPA" "TPOS"))))
|
|
|
(when frames
|
|
|
(assert (= 1 (length frames)) () "There can be only one disk number tag")
|
|
|
- (return-from disk (mk-lst (id3-frame:info (first frames))))))
|
|
|
+ (return-from disk (mk-lst (id3:info (first frames))))))
|
|
|
nil)
|
|
|
|
|
|
-(defmethod tempo ((me id3-frame:mp3-file))
|
|
|
+(defmethod tempo ((me id3:mp3-file))
|
|
|
(declare #.utils:*standard-optimize-settings*)
|
|
|
- (let ((frames (id3-frame:get-frames me '("TBP" "TBPM"))))
|
|
|
+ (let ((frames (id3:get-frames me '("TBP" "TBPM"))))
|
|
|
(when frames
|
|
|
(assert (= 1 (length frames)) () "There can be only one tempo tag")
|
|
|
- (return-from tempo (id3-frame:info (first frames)))))
|
|
|
+ (return-from tempo (id3:info (first frames)))))
|
|
|
nil)
|
|
|
|
|
|
(defun mk-lst (str)
|
|
|
@@ -255,25 +255,25 @@ is > 0 and < (sizeof *ID3V1-GENRES*)"
|
|
|
(list str)
|
|
|
(list (subseq str 0 pos) (subseq str (+ 1 pos))))))
|
|
|
|
|
|
-(defmethod track ((me id3-frame:mp3-file))
|
|
|
+(defmethod track ((me id3:mp3-file))
|
|
|
(declare #.utils:*standard-optimize-settings*)
|
|
|
- (let ((frames (id3-frame:get-frames me '("TRK" "TRCK"))))
|
|
|
+ (let ((frames (id3:get-frames me '("TRK" "TRCK"))))
|
|
|
(when frames
|
|
|
(assert (= 1 (length frames)) () "There can be only one track number tag")
|
|
|
- (return-from track (mk-lst (id3-frame:info (first frames))))))
|
|
|
+ (return-from track (mk-lst (id3:info (first frames))))))
|
|
|
nil)
|
|
|
|
|
|
-(defmethod show-tags ((me id3-frame:mp3-file) &key (raw *raw-tags*))
|
|
|
+(defmethod show-tags ((me id3:mp3-file) &key (raw *raw-tags*))
|
|
|
"Show the tags for an MP3. If RAW is non-nil, dump all the frames;
|
|
|
else, print out a subset."
|
|
|
(declare #.utils:*standard-optimize-settings*)
|
|
|
(if raw
|
|
|
- (format t "~a~%~a~%" (id3-frame:filename me)
|
|
|
+ (format t "~a~%~a~%" (id3:filename me)
|
|
|
(with-output-to-string (s)
|
|
|
- (when (id3-frame:audio-info me)
|
|
|
- (mpeg::vpprint (id3-frame:audio-info me) s)
|
|
|
+ (when (id3:audio-info me)
|
|
|
+ (mpeg::vpprint (id3:audio-info me) s)
|
|
|
(format s "~%"))
|
|
|
- (id3-frame:vpprint (id3-frame:id3-header me) s)))
|
|
|
+ (id3:vpprint (id3:id3-header me) s)))
|
|
|
(let ((album (album me))
|
|
|
(album-artist (album-artist me))
|
|
|
(artist (artist me))
|
|
|
@@ -293,9 +293,9 @@ else, print out a subset."
|
|
|
(writer (writer me))
|
|
|
(year (year me)))
|
|
|
|
|
|
- (format t "~a~%~a~%" (id3-frame:filename me)
|
|
|
- (if (id3-frame:audio-info me)
|
|
|
- (mpeg::vpprint (id3-frame:audio-info me) nil) ""))
|
|
|
+ (format t "~a~%~a~%" (id3:filename me)
|
|
|
+ (if (id3:audio-info me)
|
|
|
+ (mpeg::vpprint (id3:audio-info me) nil) ""))
|
|
|
|
|
|
(when album (format t "~4talbum: ~a~%" album))
|
|
|
(when album-artist (format t "~4talbum-artist: ~a~%" album-artist))
|
|
|
@@ -317,53 +317,53 @@ else, print out a subset."
|
|
|
(when year (format t "~4tyear: ~a~%" year)))))
|
|
|
|
|
|
;;;;;;;;;;;;;;;;;;;; MP4 ;;;;;;;;;;;;;;;;;;;;
|
|
|
-(defmethod album ((me mp4-atom:mp4-file)) (mp4-atom:tag-get-value (mp4-atom:mp4-atoms me) mp4-atom:+itunes-album+))
|
|
|
-(defmethod album-artist ((me mp4-atom:mp4-file)) (mp4-atom:tag-get-value (mp4-atom:mp4-atoms me) mp4-atom:+itunes-album-artist+))
|
|
|
-(defmethod artist ((me mp4-atom:mp4-file)) (mp4-atom:tag-get-value (mp4-atom:mp4-atoms me) mp4-atom:+itunes-artist+))
|
|
|
-(defmethod comment ((me mp4-atom:mp4-file)) (mp4-atom:tag-get-value (mp4-atom:mp4-atoms me) mp4-atom:+itunes-comment+))
|
|
|
-(defmethod composer ((me mp4-atom:mp4-file)) (mp4-atom:tag-get-value (mp4-atom:mp4-atoms me) mp4-atom:+itunes-composer+))
|
|
|
-(defmethod copyright ((me mp4-atom:mp4-file)) (mp4-atom:tag-get-value (mp4-atom:mp4-atoms me) mp4-atom:+itunes-copyright+))
|
|
|
-;;;(defmethod cover ((me mp4-atom:mp4-file)) (mp4-atom:tag-get-value (mp4-atom:mp4-atoms me) mp4-atom:+itunes-cover-art+))
|
|
|
-(defmethod year ((me mp4-atom:mp4-file)) (mp4-atom:tag-get-value (mp4-atom:mp4-atoms me) mp4-atom:+itunes-year+))
|
|
|
-(defmethod encoder ((me mp4-atom:mp4-file)) (mp4-atom:tag-get-value (mp4-atom:mp4-atoms me) mp4-atom:+itunes-encoder+))
|
|
|
-(defmethod groups ((me mp4-atom:mp4-file)) (mp4-atom:tag-get-value (mp4-atom:mp4-atoms me) mp4-atom:+itunes-groups+))
|
|
|
-(defmethod lyrics ((me mp4-atom:mp4-file)) (mp4-atom:tag-get-value (mp4-atom:mp4-atoms me) mp4-atom:+itunes-lyrics+))
|
|
|
-(defmethod title ((me mp4-atom:mp4-file)) (mp4-atom:tag-get-value (mp4-atom:mp4-atoms me) mp4-atom:+itunes-title+))
|
|
|
-(defmethod writer ((me mp4-atom:mp4-file)) (mp4-atom:tag-get-value (mp4-atom:mp4-atoms me) mp4-atom:+itunes-writer+))
|
|
|
-(defmethod compilation ((me mp4-atom:mp4-file)) (mp4-atom:tag-get-value (mp4-atom:mp4-atoms me) mp4-atom:+itunes-compilation+))
|
|
|
-(defmethod disk ((me mp4-atom:mp4-file)) (mp4-atom:tag-get-value (mp4-atom:mp4-atoms me) mp4-atom:+itunes-disk+))
|
|
|
-(defmethod tempo ((me mp4-atom:mp4-file)) (mp4-atom:tag-get-value (mp4-atom:mp4-atoms me) mp4-atom:+itunes-tempo+))
|
|
|
-
|
|
|
-(defmethod genre ((me mp4-atom:mp4-file))
|
|
|
+(defmethod album ((me m4a:mp4-file)) (m4a:tag-get-value (m4a:mp4-atoms me) m4a:+itunes-album+))
|
|
|
+(defmethod album-artist ((me m4a:mp4-file)) (m4a:tag-get-value (m4a:mp4-atoms me) m4a:+itunes-album-artist+))
|
|
|
+(defmethod artist ((me m4a:mp4-file)) (m4a:tag-get-value (m4a:mp4-atoms me) m4a:+itunes-artist+))
|
|
|
+(defmethod comment ((me m4a:mp4-file)) (m4a:tag-get-value (m4a:mp4-atoms me) m4a:+itunes-comment+))
|
|
|
+(defmethod composer ((me m4a:mp4-file)) (m4a:tag-get-value (m4a:mp4-atoms me) m4a:+itunes-composer+))
|
|
|
+(defmethod copyright ((me m4a:mp4-file)) (m4a:tag-get-value (m4a:mp4-atoms me) m4a:+itunes-copyright+))
|
|
|
+;;;(defmethod cover ((me m4a:mp4-file)) (m4a:tag-get-value (m4a:mp4-atoms me) m4a:+itunes-cover-art+))
|
|
|
+(defmethod year ((me m4a:mp4-file)) (m4a:tag-get-value (m4a:mp4-atoms me) m4a:+itunes-year+))
|
|
|
+(defmethod encoder ((me m4a:mp4-file)) (m4a:tag-get-value (m4a:mp4-atoms me) m4a:+itunes-encoder+))
|
|
|
+(defmethod groups ((me m4a:mp4-file)) (m4a:tag-get-value (m4a:mp4-atoms me) m4a:+itunes-groups+))
|
|
|
+(defmethod lyrics ((me m4a:mp4-file)) (m4a:tag-get-value (m4a:mp4-atoms me) m4a:+itunes-lyrics+))
|
|
|
+(defmethod title ((me m4a:mp4-file)) (m4a:tag-get-value (m4a:mp4-atoms me) m4a:+itunes-title+))
|
|
|
+(defmethod writer ((me m4a:mp4-file)) (m4a:tag-get-value (m4a:mp4-atoms me) m4a:+itunes-writer+))
|
|
|
+(defmethod compilation ((me m4a:mp4-file)) (m4a:tag-get-value (m4a:mp4-atoms me) m4a:+itunes-compilation+))
|
|
|
+(defmethod disk ((me m4a:mp4-file)) (m4a:tag-get-value (m4a:mp4-atoms me) m4a:+itunes-disk+))
|
|
|
+(defmethod tempo ((me m4a:mp4-file)) (m4a:tag-get-value (m4a:mp4-atoms me) m4a:+itunes-tempo+))
|
|
|
+
|
|
|
+(defmethod genre ((me m4a:mp4-file))
|
|
|
(declare #.utils:*standard-optimize-settings*)
|
|
|
- (let ((genre (mp4-atom:tag-get-value (mp4-atom:mp4-atoms me) mp4-atom:+itunes-genre+))
|
|
|
- (genre-x (mp4-atom:tag-get-value (mp4-atom:mp4-atoms me) mp4-atom:+itunes-genre-x+)))
|
|
|
+ (let ((genre (m4a:tag-get-value (m4a:mp4-atoms me) m4a:+itunes-genre+))
|
|
|
+ (genre-x (m4a:tag-get-value (m4a:mp4-atoms me) m4a:+itunes-genre-x+)))
|
|
|
(assert (not (and genre genre-x)))
|
|
|
(cond
|
|
|
(genre (format nil "~d (~a)" genre (get-id3v1-genre (1- genre))))
|
|
|
(genre-x genre-x)
|
|
|
(t "not present"))))
|
|
|
|
|
|
-(defmethod track ((me mp4-atom:mp4-file))
|
|
|
+(defmethod track ((me m4a:mp4-file))
|
|
|
(declare #.utils:*standard-optimize-settings*)
|
|
|
- (let ((track (mp4-atom:tag-get-value (mp4-atom:mp4-atoms me) mp4-atom:+itunes-track+))
|
|
|
- (track-n (mp4-atom:tag-get-value (mp4-atom:mp4-atoms me) mp4-atom:+itunes-track-n+)))
|
|
|
+ (let ((track (m4a:tag-get-value (m4a:mp4-atoms me) m4a:+itunes-track+))
|
|
|
+ (track-n (m4a:tag-get-value (m4a:mp4-atoms me) m4a:+itunes-track-n+)))
|
|
|
(assert (not (and track track-n)))
|
|
|
(if track
|
|
|
track
|
|
|
track-n)))
|
|
|
|
|
|
-(defmethod show-tags ((me mp4-atom:mp4-file) &key (raw *raw-tags*))
|
|
|
+(defmethod show-tags ((me m4a:mp4-file) &key (raw *raw-tags*))
|
|
|
"Show the tags for an MP4-FILE. If RAW is non-nil, dump the DATA atoms;
|
|
|
else show subset of DATA atoms"
|
|
|
(declare #.utils:*standard-optimize-settings*)
|
|
|
|
|
|
- (format t "~a~%" (mp4-atom:filename me))
|
|
|
+ (format t "~a~%" (m4a:filename me))
|
|
|
(if raw
|
|
|
(progn
|
|
|
- (if (mp4-atom:audio-info me)
|
|
|
- (mp4-atom:vpprint (mp4-atom:audio-info me) t))
|
|
|
- (mp4-atom:mp4-show-raw-tag-atoms me t))
|
|
|
+ (if (m4a:audio-info me)
|
|
|
+ (m4a:vpprint (m4a:audio-info me) t))
|
|
|
+ (m4a:mp4-show-raw-tag-atoms me t))
|
|
|
(let ((album (album me))
|
|
|
(album-artist (album-artist me))
|
|
|
(artist (artist me))
|
|
|
@@ -383,8 +383,8 @@ else show subset of DATA atoms"
|
|
|
(writer (writer me))
|
|
|
(year (year me)))
|
|
|
|
|
|
- (if (mp4-atom:audio-info me)
|
|
|
- (mp4-atom:vpprint (mp4-atom:audio-info me) t))
|
|
|
+ (if (m4a:audio-info me)
|
|
|
+ (m4a:vpprint (m4a:audio-info me) t))
|
|
|
|
|
|
(when album (format t "~&~4talbum: ~a~%" album))
|
|
|
(when album-artist (format t "~4talbum-artist: ~a~%" album-artist))
|
|
|
@@ -407,32 +407,32 @@ else show subset of DATA atoms"
|
|
|
|
|
|
;;;;;;;;;;;;;;;;;;;; FLAC ;;;;;;;;;;;;;;;;;;;;
|
|
|
(defmacro get-flac-tag-info (stream name)
|
|
|
- `(flac-frame:flac-get-tag (flac-frame:flac-tags ,stream) ,name))
|
|
|
-
|
|
|
-(defmethod album ((me flac-frame:flac-file)) (get-flac-tag-info me "album"))
|
|
|
-(defmethod artist ((me flac-frame:flac-file)) (get-flac-tag-info me "artist"))
|
|
|
-(defmethod album-artist ((me flac-frame:flac-file)) (get-flac-tag-info me "album artist"))
|
|
|
-(defmethod comment ((me flac-frame:flac-file)) (get-flac-tag-info me "comment"))
|
|
|
-(defmethod composer ((me flac-frame:flac-file)) (get-flac-tag-info me "composer"))
|
|
|
-(defmethod copyright ((me flac-frame:flac-file)) (get-flac-tag-info me "copyright"))
|
|
|
-(defmethod disk ((me flac-frame:flac-file)) (get-flac-tag-info me "disk"))
|
|
|
-(defmethod encoder ((me flac-frame:flac-file)) (get-flac-tag-info me "encoder"))
|
|
|
-(defmethod year ((me flac-frame:flac-file)) (get-flac-tag-info me "date"))
|
|
|
-(defmethod title ((me flac-frame:flac-file)) (get-flac-tag-info me "title"))
|
|
|
-(defmethod genre ((me flac-frame:flac-file)) (get-flac-tag-info me "genre"))
|
|
|
-
|
|
|
-(defmethod track ((me flac-frame:flac-file))
|
|
|
+ `(flac:flac-get-tag (flac:flac-tags ,stream) ,name))
|
|
|
+
|
|
|
+(defmethod album ((me flac:flac-file)) (get-flac-tag-info me "album"))
|
|
|
+(defmethod artist ((me flac:flac-file)) (get-flac-tag-info me "artist"))
|
|
|
+(defmethod album-artist ((me flac:flac-file)) (get-flac-tag-info me "album artist"))
|
|
|
+(defmethod comment ((me flac:flac-file)) (get-flac-tag-info me "comment"))
|
|
|
+(defmethod composer ((me flac:flac-file)) (get-flac-tag-info me "composer"))
|
|
|
+(defmethod copyright ((me flac:flac-file)) (get-flac-tag-info me "copyright"))
|
|
|
+(defmethod disk ((me flac:flac-file)) (get-flac-tag-info me "disk"))
|
|
|
+(defmethod encoder ((me flac:flac-file)) (get-flac-tag-info me "encoder"))
|
|
|
+(defmethod year ((me flac:flac-file)) (get-flac-tag-info me "date"))
|
|
|
+(defmethod title ((me flac:flac-file)) (get-flac-tag-info me "title"))
|
|
|
+(defmethod genre ((me flac:flac-file)) (get-flac-tag-info me "genre"))
|
|
|
+
|
|
|
+(defmethod track ((me flac:flac-file))
|
|
|
(let ((tr (get-flac-tag-info me "tracknumber"))
|
|
|
(tn (get-flac-tag-info me "tracktotal")))
|
|
|
(if tn (list tr tn) tr)))
|
|
|
|
|
|
-(defmethod show-tags ((me flac-frame:flac-file) &key (raw *raw-tags*))
|
|
|
+(defmethod show-tags ((me flac:flac-file) &key (raw *raw-tags*))
|
|
|
"Show the tags for a FLAC-FILE."
|
|
|
(declare #.utils:*standard-optimize-settings*)
|
|
|
|
|
|
- (format t "~a~%" (flac-frame:filename me))
|
|
|
+ (format t "~a~%" (flac:filename me))
|
|
|
(if raw
|
|
|
- (flac-frame:flac-show-raw-tag me t)
|
|
|
+ (flac:flac-show-raw-tag me t)
|
|
|
(let ((album (album me))
|
|
|
(album-artist (album-artist me))
|
|
|
(artist (artist me))
|
|
|
@@ -445,8 +445,8 @@ else show subset of DATA atoms"
|
|
|
(track (track me))
|
|
|
(year (year me)))
|
|
|
|
|
|
- (if (flac-frame:audio-info me)
|
|
|
- (flac-frame:vpprint (flac-frame:audio-info me) t))
|
|
|
+ (if (flac:audio-info me)
|
|
|
+ (flac:vpprint (flac:audio-info me) t))
|
|
|
|
|
|
(when album (format t "~&~4talbum: ~a~%" album))
|
|
|
(when album-artist (format t "~4talbum-artist: ~a~%" album-artist))
|