diff options
author | lshprung <lshprung@yahoo.com> | 2021-09-07 14:49:52 -0700 |
---|---|---|
committer | lshprung <lshprung@yahoo.com> | 2021-09-07 14:49:52 -0700 |
commit | d4c27ed0528f3a513fa061c46df11885148c13b9 (patch) | |
tree | 7fa2f44544c3f7ed03ee857fa12b626a309d4736 | |
parent | 5ac98e0de89f6fe7ff7a23a8ad5f99b360da0bcc (diff) |
Outline of table creation
-rwxr-xr-x | main.plx | 62 |
1 files changed, 52 insertions, 10 deletions
@@ -1,25 +1,45 @@ #!/usr/bin/perl -use warnings; use strict; +use warnings; use utf8; +use DBI; use Audio::Scan; use File::HomeDir; # Keep track of columns that need to be created in the database -our %columns = ( - ID => '1' -); +our %columns; # Variables to be set by user (TODO) our $music_dir = File::HomeDir->my_home . "/Music/"; +our $dbname = "library.db"; +our $table_name = "LIBRARY"; our %extensions = ( flac => '1', mp3 => '1', ogg => '1' ); +my $data; #Hold info from Audio::Scan +my $statement; #Hold statements for sqlite + + +# Wrapper to handle sqlite commands +# @_[0] -> database handle +# @_[1] -> command/statement +# @_[2] (optional) -> output statement +sub db_cmd { + my $rv = $_[0]->do($_[1]); + if ($rv < 0){ + die $DBI::errstr; + } + + if (defined $_[2]){ + print "$_[2]\n"; + } +} + # Scan a directory recursively, return an array of files (optionally, matching a certain file extension or extensions) # @_[0] -> $music_dir @@ -82,14 +102,36 @@ for my $i (sort @file_list){ print "$i\n"; } -# Connect to sqlite database created in the base of $music_dir - -# Get tags for each file -my $data; -for my $file (sort @file_list){ +# Append tags to %columns +for my $file (@file_list){ $data = Audio::Scan->scan("$file"); $data = $data->{tags}; for my $i (keys %$data){ - print "$i -> $data->{$i}\n"; + $columns{$i} = '1'; } } +# DEBUG +for my $i (keys %columns){ + print "$i\n"; +} + +# Connect to sqlite database created in the base of $music_dir +my $dbh = DBI->connect("DBI:SQLite:dbname=$music_dir/$dbname", "", "", { RaiseError => 1}) or die $DBI::errstr; +print "Opened database successfully\n"; + +# Create table in the database +$statement = "CREATE TABLE $table_name +(ID INT PRIMARY KEY NOT NULL);"; +db_cmd($dbh, $statement, "Created table successfully"); + +# 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"; +# } +#} + +# Disconnect from sqlite database +$dbh->disconnect(); |