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; | |
8 | ||
9 | BEGIN { binmode STDOUT, ":utf8"; } | |
10 | ||
11 | my $ROOT = "/mnt/dvd/archive"; | |
12 | my $DB = DBI->connect("dbi:Pg:host=roadstar", "", "", | |
13 | { AutoCommit => 0, | |
14 | RaiseError => 1 }); | |
15 | ||
16 | my $st_query = $DB->prepare("SELECT s.name, d.set_id, d.disc, d.path | |
17 | FROM dvd_disc AS d JOIN dvd_set AS s | |
18 | ON d.set_id = s.id | |
19 | WHERE d.disc_id IS NULL"); | |
20 | my $st_store = $DB->prepare("UPDATE dvd_disc SET disc_id = ? | |
21 | WHERE set_id = ? AND disc = ?"); | |
22 | ||
23 | $st_query->execute; | |
24 | DISC: for (;;) { | |
25 | my @r = $st_query->fetchrow_array; last DISC unless @r; | |
26 | my ($name, $set_id, $disc, $path) = @r; | |
27 | open my $ph, "-|", "dvd-id", "-I", "--", "$ROOT/$path"; | |
28 | chomp (my $disc_id = <$ph>); | |
29 | close $ph; | |
30 | $st_store->execute($disc_id, $set_id, $disc); | |
31 | print ";; $name $disc: $disc_id\n"; | |
32 | } | |
33 | ||
34 | $DB->commit; $DB->disconnect; |