Mac::ITunesでiTunesに一括曲登録

つい最近iPod touchをもらったので活用すべく簡単なスクリプトを書いてみました。

#!/usr/bin/env perl
use strict;
use warnings;
 
use Mac::iTunes;
use File::Find::Rule;
use Path::Class;
use Cwd;
use Perl6::Say;
 
our $itunes;
 
main();
 
sub main {
    my $playlist_name = $ARGV[0] || "myfavorites";
    my $songs_dir = $ARGV[1] || getcwd;
 
    setup_itunes();
    create_playlist($playlist_name);
    my $songs = find_songs($songs_dir);
    add_to_playlist( $playlist_name, $songs );
}
 
sub setup_itunes {
    $itunes = Mac::iTunes->controller;
    $itunes->activate;
}
 
sub create_playlist {
    my $playlist_name = shift;
    if ( $itunes->playlist_exists($playlist_name) ) {
        say "$playlist_name already exists\n";
        return;
    }
    $itunes->add_playlist($playlist_name);
}
 
sub find_songs {
    my $songs_dir = shift;
    my @files = File::Find::Rule->file()->name('*.mp3')->in($songs_dir);
    \@files;
}
 
sub add_to_playlist {
    my ( $playlist_name, $song_files ) = @_;
    foreach my $song_file ( @{$song_files} ) {
        $itunes->add_track( $song_file, $playlist_name );
    }
}
 
__END__

# gistのscriptそのまま埋め込みはできない?