diff options
Diffstat (limited to 'tools')
-rwxr-xr-x | tools/songdb.pl | 60 |
1 files changed, 57 insertions, 3 deletions
diff --git a/tools/songdb.pl b/tools/songdb.pl index 64bce440b5..73c8e94c09 100755 --- a/tools/songdb.pl +++ b/tools/songdb.pl | |||
@@ -9,6 +9,11 @@ use MP3::Info; | |||
9 | 9 | ||
10 | my $dir = $ARGV[0]; | 10 | my $dir = $ARGV[0]; |
11 | 11 | ||
12 | my %entries; | ||
13 | my %genres; | ||
14 | my %albums; | ||
15 | my %years; | ||
16 | |||
12 | if(! -d $dir) { | 17 | if(! -d $dir) { |
13 | print "given argument is not a directory!\n"; | 18 | print "given argument is not a directory!\n"; |
14 | exit; | 19 | exit; |
@@ -58,7 +63,6 @@ sub singlefile { | |||
58 | # for(keys %$hash) { | 63 | # for(keys %$hash) { |
59 | # print "Info: $_ ".$hash->{$_}."\n"; | 64 | # print "Info: $_ ".$hash->{$_}."\n"; |
60 | # } | 65 | # } |
61 | |||
62 | return $hash; # a hash reference | 66 | return $hash; # a hash reference |
63 | } | 67 | } |
64 | 68 | ||
@@ -77,17 +81,67 @@ sub dodir { | |||
77 | 81 | ||
78 | my $id3 = singlefile("$dir/$f"); | 82 | my $id3 = singlefile("$dir/$f"); |
79 | 83 | ||
80 | printf "Artist: %s\n", $id3->{'ARTIST'}; | 84 | # ARTIST |
85 | # COMMENT | ||
86 | # ALBUM | ||
87 | # TITLE | ||
88 | # GENRE | ||
89 | # TRACKNUM | ||
90 | # YEAR | ||
91 | |||
92 | #printf "Artist: %s\n", $id3->{'ARTIST'}; | ||
93 | $entries{"$dir/$f"}= $id3; | ||
94 | |||
95 | $artists{$id3->{'ARTIST'}}++ if($id3->{'ARTIST'}); | ||
96 | $genres{$id3->{'GENRE'}}++ if($id3->{'GENRE'}); | ||
97 | $years{$id3->{'YEAR'}}++ if($id3->{'YEAR'}); | ||
98 | |||
99 | # prepend Artist name to handle duplicate album names from other | ||
100 | # artists | ||
101 | $albums{$id3->{'ARTIST'}."___".$id3->{'ALBUM'}}++ if($id3->{'ALBUM'}); | ||
102 | |||
81 | } | 103 | } |
82 | 104 | ||
83 | # extractdirs filters out only subdirectories from all given entries | 105 | # extractdirs filters out only subdirectories from all given entries |
84 | my @d = extractdirs($dir, @a); | 106 | my @d = extractdirs($dir, @a); |
85 | 107 | ||
86 | for $d (sort @d) { | 108 | for $d (sort @d) { |
87 | print "Subdir: $d\n"; | 109 | #print "Subdir: $d\n"; |
88 | dodir("$dir/$d"); | 110 | dodir("$dir/$d"); |
89 | } | 111 | } |
90 | } | 112 | } |
91 | 113 | ||
92 | 114 | ||
93 | dodir($dir); | 115 | dodir($dir); |
116 | |||
117 | print "File name table\n"; | ||
118 | for(sort keys %entries) { | ||
119 | printf(" %s\n", $_); | ||
120 | } | ||
121 | |||
122 | print "\nSong title table\n"; | ||
123 | #for(sort {$entries{$a}->{'TITLE'} cmp $entries{$b}->{'TITLE'}} %entries) { | ||
124 | for(sort {$entries{$a}->{'TITLE'} cmp $entries{$b}->{'TITLE'}} keys %entries) { | ||
125 | printf(" %s\n", $entries{$_}->{'TITLE'} ); | ||
126 | } | ||
127 | |||
128 | print "\nArtist table\n"; | ||
129 | for(sort keys %artists) { | ||
130 | printf(" %s\n", $_); | ||
131 | } | ||
132 | |||
133 | print "\nGenre table\n"; | ||
134 | for(sort keys %genres) { | ||
135 | printf(" %s\n", $_); | ||
136 | } | ||
137 | |||
138 | print "\nYear table\n"; | ||
139 | for(sort keys %years) { | ||
140 | printf(" %s\n", $_); | ||
141 | } | ||
142 | |||
143 | print "\nAlbum table\n"; | ||
144 | for(sort keys %albums) { | ||
145 | my @moo=split(/___/, $_); | ||
146 | printf(" %s\n", $moo[1]); | ||
147 | } | ||