From 745db6b657de116e97d035e31406e6da30f78e6e Mon Sep 17 00:00:00 2001 From: Steve Ayerhart Date: Mon, 9 Aug 2021 11:50:16 -0400 Subject: [PATCH] sure up flac pictures --- flac/metadata/metadata.factor | 31 ++++++++++++++++++++++++++++++- 1 file changed, 30 insertions(+), 1 deletion(-) diff --git a/flac/metadata/metadata.factor b/flac/metadata/metadata.factor index 66dfd08..05ed4f8 100644 --- a/flac/metadata/metadata.factor +++ b/flac/metadata/metadata.factor @@ -111,6 +111,9 @@ ERROR: cuesheet-index-reserved-must-be-zero ; 32 flac-read-uint dup 8 * flac-read-uint swap >n-byte-array picture boa ; +: append-picture ( metadata picture -- metadata ) + [ dup picture>> ] dip 1array append >>picture ; + : read-metadata-block ( metadata length type -- metadata ) [ { @@ -120,7 +123,7 @@ ERROR: cuesheet-index-reserved-must-be-zero ; { metadata-seek-table [ read-metadata-block-seek-table >>seek-table ] } { metadata-vorbis-comment [ read-metadata-block-vorbis-comment >>vorbis-comment ] } { metadata-cuesheet [ read-metadata-block-cuesheet >>cuesheet ] } - { metadata-picture [ read-metadata-block-picture >>picture ] } + { metadata-picture [ read-metadata-block-picture append-picture ] } } case ] with-big-endian ; @@ -136,5 +139,31 @@ ERROR: cuesheet-index-reserved-must-be-zero ; [ read-metadata-block ] dip ] loop ; +: ( filename -- stream-info ) + [ + read/assert-flac-magic + 32 flac-read-uint drop + read-metadata-block-stream-info + ] with-flac-file-reader ; + +: ( filename -- tags ) + [ + read/assert-flac-magic + [ read-metadata-block-header [ length>> ] [ type>> metadata-vorbis-comment = ] [ last?>> ] tri or ] + [ flac-seek ] until [ read-metadata-block-vorbis-comment ] with-big-endian + ] with-flac-file-reader ; + +: ( filename -- pictures ) + [ + read/assert-flac-magic + [ read-metadata-block-header dup last?>> not ] + [ + [ length>> ] [ type>> metadata-picture = ] bi + [ read-metadata-block-picture ] + [ flac-seek f ] if + ] produce nip sift + ] with-flac-file-reader ; + + : ( filename -- metadata ) [ read-flac-metadata ] with-flac-file-reader ;