Changeset 19 in mp3-find for trunk/lib


Ignore:
Timestamp:
03/28/06 19:38:39 (18 years ago)
Author:
peter
Message:
  • added "status_callback" option to the constructor for MP3::Find::DB
  • default status callback just prints the status code and the file name to STDERR as before
  • using an empty status_callback in t/03-db.t (status_callback => sub {}) to keep the test output more legible
  • updated docs in Find.pm
  • mkreadme now prints a blank line between the file header and the DESCRIPION section
  • generated new README file
Location:
trunk/lib/MP3
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/lib/MP3/Find.pm

    r18 r19  
    4747        }, 
    4848        ignore_case => 1, 
    49         match_words => 1, 
     49        exact_match => 1, 
    5050        sort => [qw(year album tracknum)], 
    5151        printf => '%2n. %a - %t (%b: %y)', 
     
    7777 
    7878L<File::Find>, L<MP3::Info>, and L<Scalar::Util> are needed for 
    79 the filesystem backend (L<MP3::Find::Filesystem>). 
     79the filesystem backend (L<MP3::Find::Filesystem>). In addition, 
     80if L<MP3::Tag> is available, you can search by explicit ID3v2 
     81tag frames. 
    8082 
    8183L<DBI>, L<DBD::SQLite>, and L<SQL::Abstract> are needed for the 
     
    184186currently only uses the filesystem backend). 
    185187 
     188L<mp3db> is a (currently rather barebones) command line  
     189frontend for creating and updating a SQLite database for  
     190use with L<MP3::Find::DB>. 
     191 
    186192See L<MP3::Info> for more information about the fields you can 
    187 search and sort on. 
     193search and sort on. See L<http://id3.org/> for information about 
     194ID3v2 tags. 
    188195 
    189196L<File::Find::Rule::MP3Info> is another way to search for MP3 
  • trunk/lib/MP3/Find/DB.pm

    r13 r19  
    4343); 
    4444 
     45my $DEFAULT_STATUS_CALLBACK = sub { 
     46    my ($action_code, $filename) = @_; 
     47    print STDERR "$action_code $filename\n"; 
     48}; 
    4549 
    4650sub search { 
     
    8993sub update_db { 
    9094    my $self = shift; 
    91     my $db_file = shift or croak "Need the name of the databse to update"; 
     95    my $db_file = shift or croak "Need the name of the database to update"; 
    9296    my $dirs = shift; 
     97     
     98    my $status_callback = $self->{status_callback} || $DEFAULT_STATUS_CALLBACK; 
    9399     
    94100    my @dirs = ref $dirs eq 'ARRAY' ? @$dirs : ($dirs); 
     
    126132        if (@$records == 0) { 
    127133            $insert_sth->execute(map { $mp3->{$$_[0]} } @COLUMNS); 
    128             print STDERR "A $$mp3{FILENAME}\n"; 
     134            $status_callback->(A => $$mp3{FILENAME}); 
    129135            $count++; 
    130136        } elsif ($mp3->{mtime} > $$records[0][0]) { 
    131137            # the mp3 file is newer than its record 
    132138            $update_sth->execute((map { $mp3->{$$_[0]} } @COLUMNS), $mp3->{FILENAME}); 
    133             print STDERR "U $$mp3{FILENAME}\n"; 
     139            $status_callback->(U => $$mp3{FILENAME}); 
    134140            $count++; 
    135141        } 
     
    140146    foreach ($mtime_sth, $insert_sth, $update_sth) { 
    141147        $_->{RaiseError} = 0;  # don't die on error 
     148        $_->{PrintError} = 0;  # ...and don't even say anything 
    142149        $_->{Active} = 1; 
    143150        $_->finish; 
     
    150157    my $self = shift; 
    151158    my $db_file = shift or croak "Need the name of the databse to sync"; 
    152      
     159 
     160    my $status_callback = $self->{status_callback} || $DEFAULT_STATUS_CALLBACK; 
     161 
    153162    my $dbh = DBI->connect("dbi:SQLite:dbname=$db_file", '', '', {RaiseError => 1}); 
    154163    my $select_sth = $dbh->prepare('SELECT FILENAME FROM mp3'); 
     
    162171        unless (-e $filename) { 
    163172            $delete_sth->execute($filename); 
    164             print STDERR "D $filename\n"; 
     173            $status_callback->(D => $filename); 
    165174            $count++; 
    166175        } 
Note: See TracChangeset for help on using the changeset viewer.