MP3-Find
view release on metacpan or search on metacpan
lib/MP3/Find/DB.pm view on Meta::CPAN
in C<dirs> to their records in the database pointed to by C<dsn>. If the
files found have been updated since they have been recorded in the database
(or if they are not in the database), they are updated (or added).
Instead of a C<dsn>, you can also provide either an already created
database handle as C<dbh> or the filename of an SQLite database as C<db_file>.
=cut
# this is update_db and update_files (from Matt Dietrich) rolled into one
sub update {
my $self = shift;
my $args = shift;
my $dbh = _get_dbh($args) or croak "Please provide a DBI database handle, DSN, or SQLite database filename";
my @dirs = $args->{dirs}
? ref $args->{dirs} eq 'ARRAY'
? @{ $args->{dirs} }
: ($args->{dirs})
: ();
lib/MP3/Find/DB.pm view on Meta::CPAN
my $count = $finder->update_db($db_filename, \@dirs);
Searches for all mp3 files in the directories named by C<@dirs>
using L<MP3::Find::Filesystem>, and adds or updates the ID3 info
from those files to the database. If a file already has a record
in the database, then it will only be updated if it has been modified
since the last time C<update_db> was run.
=cut
sub update_db {
my $self = shift;
my $db_file = shift or croak "Need the name of the database to update";
my $dirs = shift;
my $status_callback = $self->{status_callback} || $DEFAULT_STATUS_CALLBACK;
my @dirs = ref $dirs eq 'ARRAY' ? @$dirs : ($dirs);
my $dbh = DBI->connect("dbi:SQLite:dbname=$db_file", '', '', {RaiseError => 1});
my $mtime_sth = $dbh->prepare('SELECT mtime FROM mp3 WHERE FILENAME = ?');
( run in 0.552 second using v1.01-cache-2.11-cpan-4d4bc49f3ae )