--- /dev/null
+#! /usr/bin/perl
+
+use ccbs;
+use strict;
+use warnings;
+
+my $cgi = new CGI;
+my $machine = $cgi->param('machine');
+
+my $dbh = ccbs::db_connect();
+
+my $songs_raw = ccbs::db_fetch_all($dbh, 'SELECT song,title,artist,playmode,difficulty,feetrating FROM songratings NATURAL JOIN songs WHERE machine=? ORDER BY LOWER(title)', $machine);
+
+my @songs = ();
+
+my $last_song = -1;
+for my $song (@$songs_raw) {
+ if ($song->{'song'} != $last_song) {
+ push @songs, { song => $song->{'song'}, title => $song->{'title'}, artist => $song->{'artist'} };
+ }
+
+ my $key = $song->{'playmode'} . '_' . $song->{'difficulty'};
+ $songs[$#songs]->{$key} = $song->{'feetrating'};
+ $last_song = $song->{'song'};
+}
+
+print CGI::header(-type=>'text/plain; charset=utf-8');
+my $config = {
+ INCLUDE_PATH => 'templates/',
+ INTERPOLATE => 1,
+ POST_CHOMP => 1,
+ EVAL_PERL => 1,
+};
+my $template = Template->new($config);
+
+my $output = '';
+$template->process('songratings-text.tmpl', { songs => \@songs }, \$output)
+or die $template->error();
+
+print $output;
+
+$dbh->disconnect;
--- /dev/null
+[%# vim:set filetype=html: %]
+[% FOR s = songs %]
+[% IF s.single_beginner == '' %]
+[% SET s.single_beginner = 'NULL' %]
+[% END %]
+[% IF s.single_standard == '' %]
+[% SET s.single_standard = 'NULL' %]
+[% END %]
+[% IF s.single_difficult == '' %]
+[% SET s.single_difficult = 'NULL' %]
+[% END %]
+[% IF s.single_expert == '' %]
+[% SET s.single_expert = 'NULL' %]
+[% END %]
+[% IF s.single_challenge == '' %]
+[% SET s.single_challenge = 'NULL' %]
+[% END %]
+[% IF s.double_standard == '' %]
+[% SET s.double_standard = 'NULL' %]
+[% END %]
+[% IF s.double_difficult == '' %]
+[% SET s.double_difficult = 'NULL' %]
+[% END %]
+[% IF s.double_expert == '' %]
+[% SET s.double_expert = 'NULL' %]
+[% END %]
+[% IF s.double_challenge == '' %]
+[% SET s.double_challenge = 'NULL' %]
+[% END %]
+'[% s.title %]', '[% s.artist %]', [% s.single_beginner%], [% s.single_standard%], [% s.single_difficult%], [% s.single_expert%], [% s.single_challenge%], [% s.double_standard%], [% s.double_difficult%], [% s.double_expert%], [% s.double_challenge %]
+
+[% END %]