MythTV

いやあ、これは便利だわ。特に「同じチャンネルでタイトルが一致する番組を全て録画」という機能は、一度設定しておけば後は放っておいても勝手に録画してくれるというスグレモノ。

というわけで、さらに便利にするためには録画したデータをmpeg化したいので、その前段階としてちょっとしたスクリプトを書いてみた。SQLはよく分からないなりに見よう見まねでやったらそれなりにうまくいった。

#!/usr/bin/perl

# NAME: mythinfo.pl

use strict;
use DBI;
use Jcode;

my @keys=('chanid', 'starttime', 'endtime', 'title', 'subtitle', 'description',
          'category','filesize', 'editing', 'cutlist', 'autoexpire',
          'commflagged', 'recgroup',
#          'hostname', 'bookmark', 'recordid', 'seriesid', 'programid',
#          'lastmodified', 'stars', 'previouslyshown', 'originalairdate',
          );

sub main {
    my $db=DBI->connect("DBI:mysql:mythconverg:localhost","mythtv","mythtv") || die "Can't connect DB";
    foreach (@ARGV) {
        if (/^(\d+)_(\d{14})_\d{14}/) {
            my($chanid,$starttime)=($1,$2);
            $starttime=~s/^(\d{4})(\d{2})(\d{2})(\d{2})(\d{2})(\d{2})$/\1-\2-\3 \4:\5:\6/;
            my $query="select * from recorded where starttime='$starttime'";
            my $sth=$db->prepare($query);
            $sth->execute;
            for (1..$sth->rows) {
                my $row=$sth->fetchrow_hashref;
                foreach my $key (@keys) {
                    my $val=Jcode->new($row->{$key})->euc;
                    print "$key: $val\n";
                }
            }
            $sth->finish;
        }
    }
    $db->disconnect;
}
&main;

使い方は、保存されているnuvファイル名(3_20041117135500_20041117140000.nuv等)を引数に渡すだけ。これでファイル名からタイトルの検索ができるようになったので、次はいよいよnuv→mpeg変換の(半)自動化をやってみよう。