id3lib では読めないタグがあった

でも taglib を使ったら読めた。とりあえず taglib に乗り換えよう。どっちのライブラリでも v2.4 にすると読読めない。

(use gauche.uvector)
(use gauche.charconv)
(use c-wrapper)
(c-load-library "libtag")
(c-load-library "libtag_c")
(c-include "taglib/tag_c.h")

(define (s value)
  (cast <string> value))

(define (album tag)
  (s (taglib_tag_album tag)))

(define (title tag)
  (s (taglib_tag_title tag)))

(define (artist tag)
  (s (taglib_tag_artist tag)))

(define (to_tag fn)
  (taglib_file_tag (taglib_file_new fn)))

というのを用意して、

(define tags (map to_tag (sys-glob "*/*.mp3")))
;; => (いっぱい...)

(map title tags)
;; => ("title1" "曲名" "曲名" ...)

(map artist tags)
;; => ("アーティスト" "歌手" "だれだれ" ...)

なんて具合で読めるかどうかを確認しました。

c-wapper すごいです。