X-Git-Url: https://git.distorted.org.uk/~mdw/dvddb/blobdiff_plain/14acb11fbceab6626284efa4a1b250f988a31076..ea279fddcc662e19f7328c1a134ce0be3db92a9e:/set-dvd-ids diff --git a/set-dvd-ids b/set-dvd-ids index 699751e..e4476fd 100755 --- a/set-dvd-ids +++ b/set-dvd-ids @@ -5,24 +5,38 @@ use open ":utf8"; use strict; use DBI; +use Getopt::Std; BEGIN { binmode STDOUT, ":utf8"; } +(my $prog = $0) =~ s:^.*/::; +sub HELP_MESSAGE ($;@) { + my ($fh) = @_; + print $fh "usage: $prog [-a]\n"; +} my $ROOT = "/mnt/dvd/archive"; + +my $bogusp = 0; +my %opt; +getopts("ha", \%opt) or $bogusp = 1; +if ($opt{"h"}) { HELP_MESSAGE \*STDOUT; exit 0; } +@ARGV and $bogusp = 1; +if ($bogusp) { HELP_MESSAGE \*STDERR; exit 2; } + my $DB = DBI->connect("dbi:Pg:host=roadstar", "", "", { AutoCommit => 0, RaiseError => 1 }); -my $st_query = $DB->prepare("SELECT s.name, d.set_id, d.disc, d.path - FROM dvd_disc AS d JOIN dvd_set AS s - ON d.set_id = s.id - WHERE d.disc_id IS NULL"); -my $st_store = $DB->prepare("UPDATE dvd_disc SET disc_id = ? - WHERE set_id = ? AND disc = ?"); +my $search = $opt{"a"} ? "" : "WHERE d.disc_id IS NULL"; +my $st_query = $DB->prepare + ("SELECT s.name, d.set_id, d.disc, d.path + FROM dvd_disc AS d JOIN dvd_set AS s ON d.set_id = s.id + $search"); +my $st_store = $DB->prepare + ("UPDATE dvd_disc SET disc_id = ? WHERE set_id = ? AND disc = ?"); $st_query->execute; -DISC: for (;;) { - my @r = $st_query->fetchrow_array; last DISC unless @r; +while (my @r = $st_query->fetchrow_array) { my ($name, $set_id, $disc, $path) = @r; open my $ph, "-|", "dvd-id", "-I", "--", "$ROOT/$path"; chomp (my $disc_id = <$ph>);