<%perl> #better way to get this? my $srcdir = '/home/httpd/html/foster-abc/abc-src'; opendir(D, $srcdir) || die "can't opendir $srcdir $!"; my %files = (); while (my $file = readdir(D)){ next unless -f "$srcdir/$file"; next unless $file =~ /\.abc$/i; my ($title, $key); open (F, "$srcdir/$file") || die "can't open $srcdir/$file $!"; while (){ s/[\x0A\x0D]+$//; if (/^T:(.+)/){ $title = $1; }elsif (/^K:(.+)/){ $key = $1; }elsif (! /^[A-Z:]/){ last; } } close F; $files{$title} = [$file, $key]; } foreach my $title (sort keys %files) { my ($file, $key) = @{$files{$title}}; $file =~ s/\.abc//; $m->current_comp->call_method('dorow', title=>$title, id=>$file, key=>$key); } %# ********************************************* %# shared %# ********************************************* <%shared> my %keypos = ( 'A,,' => 0, 'A,' => 12, 'A' => 24, 'A#,,'=> 1, 'A#,'=> 13, 'A#' => 25, 'Bb,,'=> 1, 'Bb,'=> 13, 'Bb' => 25, 'B,,' => 2, 'B,' => 14, 'B' => 26, 'C,' => 3, 'C' => 15, 'c' => 27, 'C#,' => 4, 'C#' => 16, 'c#' => 28, 'Db,' => 4, 'Db' => 16, 'db' => 28, 'D,' => 5, 'D' => 17, 'd' => 29, 'D#,' => 6, 'D#' => 18, 'd#' => 30, 'Eb,' => 6, 'Eb' => 18, 'eb' => 30, 'E,' => 7, 'E' => 19, 'e' => 31, 'F,' => 8, 'F' => 20, 'f' => 32, 'F#,' => 9, 'F#' => 21, 'f#' => 33, 'Gb,' => 9, 'Gb' => 21, 'gb' => 33, 'G,' => 10, 'G' => 22, 'g' => 34, 'G#,' => 11, 'G#' => 23, 'g#' => 35, 'Ab,' => 11, 'Ab' => 23, 'ab' => 36, ); my %keys_at_pos; foreach my $key (keys %keypos){ unshift @{$keys_at_pos{$keypos{$key}}}, $key; } %# ********************************************* %# end shared %# ********************************************* %# ********************************************* %# dorow METHOD %# ********************************************* <%method dorow> <%args> $id $key $title <%init> #this should be in a config file somewhere my @outputs = ( #display name, directory, filename extension for url [qw(abc abc html)], [qw(jpg jpg jpg)], [qw(pdf pdf pdf)], [qw(midi midi mid)], # [qw(postscript ps ps)], ); <%$title%>: %foreach my $o (@outputs){ % my ($display_name, $out_type, $ext) = @$o; <%$display_name%> %} <& '/index.html:keyselect', key => $key, id=>$id &>
%# ********************************************* %# end dorow %# ********************************************* %# ********************************************* %# keyselect METHOD %# ********************************************* <%method keyselect> <%args> $key $id %# ********************************************* %# end keyselect %# *********************************************