Only insert a song if it doesn't already exist.
[ccbs] / parse / parse-wiki-songlist.pl
index 3f13118..4303c2d 100644 (file)
@@ -2,6 +2,9 @@
 use strict;
 use warnings;
 
+my $machine = shift;
+die "Missing machine (first argument on the command line)" if (!defined($machine));
+
 # Parses songlist from the DDRNO wiki
 
 print "begin;\n";
@@ -10,7 +13,7 @@ while (<>) {
        m/
          \|   \s* \[\[ (.*?) \]\] \s*    # song name
           \|\| \s* \[\[ (.*?) \]\] \s*    # artist
-         \|\| \s*      (\d+(-\d+)?)  \s*    # bpm
+         \|\| \s*      (\d+(?:-(\d+))?)  \s*    # bpm
          \|\| \s*      (\d+)      \s*    # single beginner
          \|\| \s*      (\d+)      \s*    # single standard
          \|\| \s*      (\d+)      \s*    # single difficult 
@@ -45,8 +48,8 @@ while (<>) {
                    ['double', 'standard', $ds],
                    ['double', 'difficult', $dd],
                    ['double', 'expert', $de]) {
-               printf "INSERT INTO songratings (song,playmode,difficulty,feetrating) VALUES ((SELECT song FROM songs WHERE title='%s'),'%s','%s',%u);\n",
-                       $songname, $t->[0], $t->[1], $t->[2];
+               printf "INSERT INTO songratings (song,machine,playmode,difficulty,feetrating) VALUES ((SELECT song FROM songs WHERE title='%s'),(SELECT machine FROM machines WHERE machinename='%s'),'%s','%s',%u);\n",
+                       $songname, $machine, $t->[0], $t->[1], $t->[2];
        }
 }