The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
use strict;
use warnings;
use lib 'lib';
use AnyEvent;
use AnyEvent::DAAP::Server;
use AnyEvent::DAAP::Server::Track::File::MP3;
use AnyEvent::DAAP::Server::Playlist;
use File::Find::Rule;
use File::Basename qw(dirname);

my $daap = AnyEvent::DAAP::Server->new(port => 23689);

my %playlist;
my $w; $w = AE::timer 1, 0, sub {
    foreach my $file (find name => "*.mp3", in => '.') {
        my $dir = dirname $file;
        my $playlist = $playlist{$dir} ||= do {
            my $playlist = AnyEvent::DAAP::Server::Playlist->new(
                dmap_itemname => $dir,
            );
            $daap->add_playlist($playlist);
            $playlist;
        };
        my $track = AnyEvent::DAAP::Server::Track::File::MP3->new(file => $file);
        $daap->add_track($track);
        $playlist->add_track($track);
    }
    $daap->database_updated;
    undef $w;
};

$daap->setup;

AE::cv->wait;