From a59fdc08f2efbfbbd20c36e942b1d65b177d1320 Mon Sep 17 00:00:00 2001 From: lshprung Date: Thu, 9 Sep 2021 18:33:54 -0700 Subject: Added --extension flag --- build_db.plx | 31 ++++++++++++++++++++++++++----- 1 file changed, 26 insertions(+), 5 deletions(-) diff --git a/build_db.plx b/build_db.plx index 4ef65c5..4fc67d1 100755 --- a/build_db.plx +++ b/build_db.plx @@ -15,11 +15,8 @@ our %columns; our $music_dir = File::HomeDir->my_home . "/Music/"; our $dbname; our $table_name = "LIBRARY"; -our %extensions = ( - flac => '1', - mp3 => '1', - ogg => '1' -); +our $extensions_list = "flac,mp3,ogg"; +our %extensions; # Keep track of options that have been set our %options = ( @@ -39,6 +36,13 @@ sub audio_scan { return %$data; } +sub build_extension_hash { + my @extensions_arr = split /[,]/,$extensions_list; + for my $i (@extensions_arr){ + $extensions{$i} = 1; + } +} + # Wrapper to handle sqlite commands # @_[0] -> database handle # @_[1] -> command/statement @@ -102,6 +106,7 @@ Generate a database for audio files in DIRECTORY (by default ~/Music). Options: -a, --append append to database file, instead of overwriting it + -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) -t, --table-name TABLE specify table name in database file (default is LIBRARY) @@ -124,6 +129,11 @@ for (my $i = 0; $i <= $#ARGV; $i++){ $options{append} = 1; } + elsif ($ARGV[$i] =~ /-e|--extension/){ + $i++; + $extensions_list = $ARGV[$i]; + } + elsif ($ARGV[$i] =~ /-h|--help/){ print_help(); exit; @@ -151,12 +161,18 @@ $music_dir =~ s/\/+$//g; if (!$options{output}){ $dbname = $music_dir . "/library.db"; } +for my $i (keys %extensions){ + print "$i\n"; +} # Test to ensure $music_dir is a valid directory if (! -d $music_dir){ die "Error: \"$music_dir\" is not a directory\n"; } +# 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); @@ -165,6 +181,11 @@ for my $i (sort @file_list){ print "$i\n"; } +# 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"); -- cgit