X-Git-Url: https://diplodocus.org/git/flac-archive/blobdiff_plain/623afee5f5a856f4538a0d00de4c3cf850c1939c..7cd94600f9fcee643024778d27e072eee097faf0:/fa-tags diff --git a/fa-tags b/fa-tags index 743736a..d399287 100755 --- a/fa-tags +++ b/fa-tags @@ -1,103 +1,54 @@ -#! /usr/bin/env zsh +#! /usr/bin/env perl # $Id$ -# Copyright (c) 1998-2001 Robert Woodcock -# Copyright (c) 2003-2004 Jesus Climent -# Copyright (c) 2004 Eric Gillespie -# This code is hereby licensed for public consumption under either the -# GNU GPL v2 or greater, or Larry Wall's Artistic license - your choice. +# See fa-flacd for documentation. -set -e +use strict; +use warnings; -if [[ -z ${CDDBURL} ]]; then - CDDBURL="http://freedb.freedb.org/~cddb/cddb.cgi" -fi +use Getopt::Long; +use Pod::Usage; -get_cddb_protocol () { - for CDDBPROTO in 5 4 3; do - if [[ \ - $(cddb-tool stat $CDDBURL $USER $HOST $CDDBPROTO \ - | sed 's/^\([0-9][0-9]*\).*/\1/;q') = '210' ]]; then - return 0 - fi - done +use MusicBrainz::Client::Simple; - echo "${CDDBURL} does not work" - exit 2 -} - -handle_read=$(<candidate-tags-0') or die("open('>candidate-tags-0'): $!"); +print(F "$_=\n") for ('ARTIST', 'ALBUM', 'DATE'); +print(F "TITLE=\n") for 1 .. $trackcount; +close(F) or die("close('>candidate-tags-0'): $!"); -} elsif (/^DYEAR=/) { - print("DATE=\$value\\n"); +my $i; +for my $album (@result) { + $i++; + open(F, '>', "candidate-tags-$i") or die("open('>candidate-tags-$i'): $!"); -} elsif (/^TTITLE\\d+/) { - print("TITLE=\$value\\n"); -} -EOF -) + print(F 'ARTIST=', $album->get_artist->get_name, "\n"); + print(F 'ALBUM=', $album->get_name, "\n"); + print(F "DATE=\n"); -handle_queries () { - local F - local i=1 + my @tracks = $album->get_tracks; + my $name; + my $track; + for my $j (1 .. $trackcount) { + if ($track = shift(@tracks)) { + $name = $track->get_name; + } else { + $name = ''; + } + print(F "TITLE=$name\n"); + } - # First eat the status line. - read F - - while read -A F; do - [[ $F = '.' ]] && break - cddb-tool read $CDDBURL $CDDBPROTO $USER $HOST $F[1] $F[2] \ - | nawk $handle_read > candidate-tags-$i -# XXX The awk script has at least one problem; since we can't split to -# exactly two components, we break on track names with equal signs. -# Use Perl instead: -# cddb-tool read $CDDBURL $CDDBPROTO $USER $HOST $F[1] $F[2] \ -# | perl -lne $handle_read > candidate-tags-$i - i=$(( $i + 1 )) - done + close(F) or die("close('>candidate-tags-$i'): $!"); } - -get_cddb_protocol -(cddb-tool query $CDDBURL $CDDBPROTO $USER $HOST "$@" | handle_queries) & - -cat > candidate-tags-0 <