#!/usr/bin/env perl use strict; use warnings; use 5.008_008; use blib; # for dev use lib 't/lib'; use MediaLib; use POSIX ":sys_wait_h"; my $which = $ARGV[0]; die "Specify which stage of demo (1, 2, 3)" unless $which =~ /^[123]$/; sub wait_for_scan { my ($pid, $fh) = @_; while(<$fh>) { chomp; print "Async Scan Progress: $_\n"; } my $wait = 5; while(waitpid($pid, WNOHANG) && kill(0, $pid) && --$wait) { print "Waiting for PID $pid to exit...\n"; sleep(1); } } if($which == 1) { my $library = MediaLib->library_init( root_path => '/Users/blblack/muzak', schema_class => 'MediaLibX::Schema::Simple', ); print "Scanning Library...\n"; wait_for_scan($library->start_async_scan(1)); $library->reload(); print "Finding Tracks in the Blue Album:\n"; my $blue_tracks = $library->resultset('Album') ->find({ title => 'Weezer (Blue Album)' }) ->tracks; while(my $track = $blue_tracks->next) { print "Title: " . $track->title . "\n"; } } elsif($which == 2) { my $library = MediaLib->library_init( root_path => '/Users/blblack/muzak', schema_class => 'MediaLibX::Schema::Simple', ); # Touch a file for mtime system('/usr/bin/touch', q{/Users/blblack/muzak/Antonio Vivaldi/'The Four Seasons' & Other Concertos (Disk 1)/18. Concerto in C Major for 2 Trumpets - Allegro.mp3}); print "Scanning Library...\n"; wait_for_scan($library->start_async_scan()); $library->reload(); } elsif($which == 3) { my $library = MediaLib->library_init( root_path => '/Users/blblack/muzak', schema_class => 'MediaLibX::Schema::Simple', ); }