summaryrefslogtreecommitdiff
path: root/build_db.plx
diff options
context:
space:
mode:
Diffstat (limited to 'build_db.plx')
-rwxr-xr-xbuild_db.plx59
1 files changed, 27 insertions, 32 deletions
diff --git a/build_db.plx b/build_db.plx
index fa314c7..b9bca12 100755
--- a/build_db.plx
+++ b/build_db.plx
@@ -21,7 +21,8 @@ our %extensions;
# Keep track of options that have been set
our %options = (
append => 0,
- output => 0
+ output => 0,
+ quiet => 0
);
my %data; #Hold info from Audio::Scan
@@ -73,7 +74,8 @@ sub db_cmd {
die $DBI::errstr;
}
- if (defined $_[2]){
+ # DEBUG
+ if (!$options{quiet} and defined $_[2]){
print "$_[2]\n";
}
@@ -107,6 +109,11 @@ sub get_files {
# Check that the extension matches
@file_split = split /\./, "$dir_path/$file";
if (defined $extensions{"$file_split[-1]"} and $extensions{"$file_split[-1]"} == 1){
+ # DEBUG
+ if (!$options{quiet}){
+ print "Found $dir_path/$file\n";
+ }
+
push(@file_list, "$dir_path/$file");
}
}
@@ -129,19 +136,11 @@ Options:
-e, --extension EXTENSIONS Set file extensions to look for, separated by commas (default is flac,mp3,ogg)
-h, --help display this help and exit
-o, --output FILE specify output file for database (default is library.db at the root of DIRECTORY)
+ -q, --quiet quiet (no output)
-t, --table-name TABLE specify table name in database file (default is LIBRARY)
";
}
-# Test scan for Audio::Scan module
-sub scan_test {
- my $data = Audio::Scan->scan("/home/louie/Music/Bjork/Debut/01 Human Behaviour.flac");
- $data = $data->{tags};
- for (keys %$data){
- print "$_ -> $data->{$_}\n";
- }
-}
-
# parse flags and arguments
for (my $i = 0; $i <= $#ARGV; $i++){
@@ -165,6 +164,10 @@ for (my $i = 0; $i <= $#ARGV; $i++){
$options{output} = 1;
}
+ elsif ($ARGV[$i] =~ /-q|--quiet/){
+ $options{quiet} = 1;
+ }
+
elsif ($ARGV[$i] =~ /-t|--table-name/){
$i++;
$table_name = $ARGV[$i];
@@ -193,48 +196,41 @@ if (! -d $music_dir){
# Build the extensions hash for use in get_files
build_extension_hash();
-# Get a list of files in $music_dir
-print "Looking through files in $music_dir\n";
-my @file_list = get_files($music_dir, %extensions);
# DEBUG
-for my $i (sort @file_list){
- print "$i\n";
+if (!$options{quiet}){
+ print "Looking through files in $music_dir\n";
}
+# Get a list of files in $music_dir
+my @file_list = get_files($music_dir, %extensions);
+
# Quit if @file_list is empty
if ($#file_list < 1){
die "Error: Could not find any files in \"$music_dir\" matching extension(s) \"$extensions_list\"\n";
}
-# Get tags for each file
-#for my $file (sort @file_list){
-# $data = Audio::Scan->scan("$file");
-# $data = $data->{tags};
-# for my $i (keys %$data){
-# print "$i -> $data->{$i}\n";
-# }
-#}
-
# Append tags to %columns
for my $file (@file_list){
- #$data = Audio::Scan->scan("$file");
- #$data = $data->{tags};
%data = audio_scan("$file");
for my $i (keys %data){
$columns{$i} = '1';
}
}
# DEBUG
-for my $i (keys %columns){
- print "$i\n";
+if (!$options{quiet}){
+ for my $i (keys %columns){
+ print "Found tag \"$i\"\n";
+ }
}
# Connect to sqlite database created in the base of $music_dir
my $dbh = DBI->connect("DBI:SQLite:dbname=$dbname", "", "", { RaiseError => 1}) or die $DBI::errstr;
-print "Opened database successfully\n";
+# DEBUG
+if (!$options{quiet}){
+ print "Opened database successfully\n";
+}
# Overwrite $table_name if it exists (TODO alert user to overwrite)
-# TODO fix rows with non-ascii characters. These rows do not have any metadata filled in
# If --append flag was passed, skip this step
if (!$options{append}){
$statement = "DROP TABLE if EXISTS $table_name";
@@ -274,7 +270,6 @@ $statement =~ s/[,]$/;/g;
db_cmd($dbh, $statement);
# Set each file's tags in the table
-# TODO handle array tags (such as genre)
for my $file (@file_list){
$statement = "UPDATE $table_name
SET ";