1 | #!/usr/bin/env perl
|
---|
2 | use utf8;
|
---|
3 | use strict;
|
---|
4 | use warnings;
|
---|
5 | use DBI;
|
---|
6 | use FileHandle;
|
---|
7 | use enum qw(:Chan_=0 Name Freq Inv SymRate Fec Qam VID AID PID);
|
---|
8 |
|
---|
9 | if (scalar @ARGV != 1) {
|
---|
10 | print "usage: $0 <channels.conf>\n";
|
---|
11 | exit;
|
---|
12 | }
|
---|
13 |
|
---|
14 | my %Inversion = (
|
---|
15 | INVERSION_AUTO => 'a',
|
---|
16 | INVERSION_ON => '1',
|
---|
17 | INVERSION_OFF => '0'
|
---|
18 | );
|
---|
19 |
|
---|
20 | my %Fec = (
|
---|
21 | FEC_NONE => 'none',
|
---|
22 | FEC_1_2 => '1/2',
|
---|
23 | FEC_2_3 => '2/3',
|
---|
24 | FEC_3_4 => '3/4',
|
---|
25 | FEC_4_5 => '4/5',
|
---|
26 | FEC_5_6 => '5/6',
|
---|
27 | FEC_6_7 => '6/7',
|
---|
28 | FEC_7_8 => '7/8',
|
---|
29 | FEC_8_9 => '8/9',
|
---|
30 | FEC_AUTO => 'auto'
|
---|
31 | );
|
---|
32 |
|
---|
33 | my %Qam = (
|
---|
34 | QPSK => 'qpsk',
|
---|
35 | QAM_16 => 'qam_16',
|
---|
36 | QAM_32 => 'qam_32',
|
---|
37 | QAM_64 => 'qam_64',
|
---|
38 | QAM_128 => 'qam_128',
|
---|
39 | QAM_256 => 'qam_256',
|
---|
40 | QAM_AUTO => 'auto',
|
---|
41 | '8VSB' => '8vsb',
|
---|
42 | '16VSB' => '16vsb'
|
---|
43 | );
|
---|
44 |
|
---|
45 | my $dbh = DBI->connect('DBI:mysql:database=mythconverg','mythtv','mythtv') || die "$!\n";
|
---|
46 | my $get_freq_by_name = $dbh->prepare('select freqid, mplexid from channel where name=? and channum=?') || die $dbh->errstr."\n";
|
---|
47 | my $dvbc = new FileHandle($ARGV[0],'r') || die "$!\n";
|
---|
48 |
|
---|
49 | $dbh->do('delete from dtv_multiplex where mplexid not in (select distinct mplexid from channel)');
|
---|
50 |
|
---|
51 | while (my $chan = $dvbc->getline) {
|
---|
52 | $chan =~ s/^\s*//;
|
---|
53 | $chan =~ s/\s*$//;
|
---|
54 | my @chan = split(':',$chan);
|
---|
55 | $get_freq_by_name->execute($chan[Chan_Name],$chan[Chan_PID]);
|
---|
56 | if ($get_freq_by_name->rows == 1) {
|
---|
57 | my $row=$get_freq_by_name->fetchrow_hashref;
|
---|
58 | print "$chan[Chan_PID]:$chan[Chan_Name] $row->{'freqid'} => $chan[Chan_Freq]\n";
|
---|
59 | $dbh->do("update channel set freqid=".$dbh->quote($chan[Chan_Freq])
|
---|
60 | ." where name=".$dbh->quote($chan[Chan_Name])
|
---|
61 | ." and channum=".$dbh->quote($chan[Chan_PID])
|
---|
62 | );
|
---|
63 | $dbh->do("update dtv_multiplex set frequency=".$dbh->quote($chan[Chan_Freq])
|
---|
64 | .", inversion=".$dbh->quote($Inversion{$chan[Chan_Inv]})
|
---|
65 | .", symbolrate=".$dbh->quote($chan[Chan_SymRate])
|
---|
66 | .", fec=".$dbh->quote($Fec{$chan[Chan_Fec]})
|
---|
67 | .", modulation=".$dbh->quote($Qam{$chan[Chan_Qam]})
|
---|
68 | .", sistandard='dvb'"
|
---|
69 | ." where mplexid=".$dbh->quote($row->{'mplexid'})
|
---|
70 | );
|
---|
71 | }
|
---|
72 | }
|
---|
73 |
|
---|