pldb (list): Add `-w' option to show a window around the group position(s).
[dvddb] / set-dvd-ids
CommitLineData
14acb11f
MW
1#! /usr/bin/perl
2
3use autodie qw{:all};
4use open ":utf8";
5use strict;
6
7use DBI;
b2a25885 8use Getopt::Std;
14acb11f
MW
9
10BEGIN { binmode STDOUT, ":utf8"; }
11
b2a25885
MW
12(my $prog = $0) =~ s:^.*/::;
13sub HELP_MESSAGE ($;@) {
14 my ($fh) = @_;
15 print $fh "usage: $prog [-a]\n";
16}
14acb11f 17my $ROOT = "/mnt/dvd/archive";
b2a25885
MW
18
19my $bogusp = 0;
20my %opt;
21getopts("ha", \%opt) or $bogusp = 1;
22if ($opt{"h"}) { HELP_MESSAGE \*STDOUT; exit 0; }
23@ARGV and $bogusp = 1;
24if ($bogusp) { HELP_MESSAGE \*STDERR; exit 2; }
25
14acb11f
MW
26my $DB = DBI->connect("dbi:Pg:host=roadstar", "", "",
27 { AutoCommit => 0,
28 RaiseError => 1 });
29
b2a25885
MW
30my $search = $opt{"a"} ? "" : "WHERE d.disc_id IS NULL";
31my $st_query = $DB->prepare
32 ("SELECT s.name, d.set_id, d.disc, d.path
33 FROM dvd_disc AS d JOIN dvd_set AS s ON d.set_id = s.id
34 $search");
35my $st_store = $DB->prepare
36 ("UPDATE dvd_disc SET disc_id = ? WHERE set_id = ? AND disc = ?");
14acb11f
MW
37
38$st_query->execute;
b2a25885 39while (my @r = $st_query->fetchrow_array) {
14acb11f
MW
40 my ($name, $set_id, $disc, $path) = @r;
41 open my $ph, "-|", "dvd-id", "-I", "--", "$ROOT/$path";
42 chomp (my $disc_id = <$ph>);
43 close $ph;
44 $st_store->execute($disc_id, $set_id, $disc);
45 print ";; $name $disc: $disc_id\n";
46}
47
48$DB->commit; $DB->disconnect;