From 15e7b17b2c60c440dc83236d1f21df68a203e12e Mon Sep 17 00:00:00 2001 From: P. J. McDermott Date: Thu, 21 Nov 2013 04:04:49 -0500 Subject: Automatically set Vorbis comments. --- diff --git a/jamaldo.pl b/jamaldo.pl index 7d9e8f2..e1e94db 100755 --- a/jamaldo.pl +++ b/jamaldo.pl @@ -69,7 +69,6 @@ sub get_album my $album_name; my $dir; my $i; - my $control_fh; my $track; $url = "http://api.jamendo.com/v3.0/tracks/?client_id=" . CLIENT_ID @@ -101,47 +100,66 @@ sub get_album undef($album_name); $i = 0; - open($control_fh, ">", $dir . "/control"); for $track (@{$res_data->{"results"}}) { printf(" Downloading track %d of %d...\n", ++$i, $res_data->{"headers"}->{"results_count"}); - get_track($track, $audioformat, $dir, $control_fh); + get_track($track, $audioformat, $dir); } - close($control_fh); } sub get_track { - my ($track, $audioformat, $dir, $control_fh) = @_; + my ($track, $audioformat, $dir) = @_; my $name; + my $audio_fname; my $req; my $res; + my %fields; + my $comments_fname; + my $comments_fh; + my $vorbis_field; + my $jamendo_field; $name = $track->{"name"}; printf(" Title: %s\n", $name); - $name =~ s|/|-|g; - $name = sprintf("%s/%02d - %s.%s", $dir, $track->{"position"}, $name, - $audioformat); + + $audio_fname = sprintf("%s/%02d - %s.%s", + $dir, $track->{"position"}, $name, $audioformat); $req = HTTP::Request->new("GET", $track->{"audio"}); - $res = $ua->request($req, $name); + $res = $ua->request($req, $audio_fname); if ($res->is_error()) { printf(STDERR "Error: Server returned HTTP status code %s\n", $res->code()); return undef; } - undef($name); undef($req); undef($res); - printf($control_fh "Title: %s\n", $track->{"name"}); - printf($control_fh "Album: %s\n", $track->{"album_name"}); - printf($control_fh "Track number: %d\n", $track->{"position"}); - printf($control_fh "Artist: %s\n", $track->{"artist_name"}); - printf($control_fh "License: %s\n", $track->{"license_ccurl"}); - printf($control_fh "Date: %s\n", $track->{"releasedate"}); - printf($control_fh "\n"); - $control_fh->flush(); + %fields = ( + "TITLE" => "name", + "ALBUM" => "album_name", + "TRACKNUMBER" => "position", + "ARTIST" => "artist_name", + "LICENSE" => "license_ccurl", + "DATE" => "releasedate", + ); + + $comments_fname = sprintf("%s/%02d - %s.comments", + $dir, $track->{"position"}, $name); + open($comments_fh, ">", $comments_fname); + while (($vorbis_field, $jamendo_field) = each(%fields)) { + $jamendo_field = $track->{$jamendo_field}; + $jamendo_field =~ s/\n/\\n/g; + $jamendo_field =~ s/\r/\\r/g; + $jamendo_field =~ s/\\/\\\\/g; + $jamendo_field =~ s/\0/\\0/g; + printf($comments_fh "%s=%s\n", $vorbis_field, $jamendo_field); + } + close($comments_fh); + + system("vorbiscomment", "-w", "-R", "-e", "-c", $comments_fname, + $audio_fname); } main(); -- cgit v0.9.1