Commit | Line | Data |
---|---|---|
14acb11f MW |
1 | #! /usr/bin/perl |
2 | ||
3 | use autodie qw{:all}; | |
4 | use open ":utf8"; | |
5 | use strict; | |
6 | ||
7 | use DBI; | |
b2a25885 | 8 | use Getopt::Std; |
14acb11f MW |
9 | |
10 | BEGIN { binmode STDOUT, ":utf8"; } | |
11 | ||
b2a25885 MW |
12 | (my $prog = $0) =~ s:^.*/::; |
13 | sub HELP_MESSAGE ($;@) { | |
14 | my ($fh) = @_; | |
15 | print $fh "usage: $prog [-a]\n"; | |
16 | } | |
14acb11f | 17 | my $ROOT = "/mnt/dvd/archive"; |
b2a25885 MW |
18 | |
19 | my $bogusp = 0; | |
20 | my %opt; | |
21 | getopts("ha", \%opt) or $bogusp = 1; | |
22 | if ($opt{"h"}) { HELP_MESSAGE \*STDOUT; exit 0; } | |
23 | @ARGV and $bogusp = 1; | |
24 | if ($bogusp) { HELP_MESSAGE \*STDERR; exit 2; } | |
25 | ||
14acb11f MW |
26 | my $DB = DBI->connect("dbi:Pg:host=roadstar", "", "", |
27 | { AutoCommit => 0, | |
28 | RaiseError => 1 }); | |
29 | ||
b2a25885 MW |
30 | my $search = $opt{"a"} ? "" : "WHERE d.disc_id IS NULL"; |
31 | my $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"); | |
35 | my $st_store = $DB->prepare | |
36 | ("UPDATE dvd_disc SET disc_id = ? WHERE set_id = ? AND disc = ?"); | |
14acb11f MW |
37 | |
38 | $st_query->execute; | |
b2a25885 | 39 | while (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; |