1#!/usr/local/bin/perl -w
2
3binmode(STDOUT, ':utf8');
4use XML::LibXML::Reader;
5
6open(my $fp, '<', './channel_ids') or die('No channel_ids');
7my %channels;
8while (<$fp>) {
9    chomp;
10    if ($_ !~ /^#/) {
11        @line = split(';');
12        $channels{$line[0]} = $line[1];
13    }
14}
15close($fp);
16
17my $xml = XML::LibXML::Reader->new(
18    location => './channel_y.xml',
19    encoding => 'UTF-8'
20) or die('No channel_y.xml');
21
22while ($xml->read()) {
23    if ($xml->nodeType() == XML_READER_TYPE_ELEMENT &&
24        $xml->name() eq 'data') {
25        my $data = $xml->copyCurrentNode(1);
26        my $id = $data->findvalue('ch4');
27        my $name = $data->findvalue('ch0');
28        my $dvb = $data->findvalue('ch11');
29        $name .= " ($dvb)" if $dvb && $dvb ne $name;
30        printf("%d;%s;%s\n",
31               $id,
32               $channels{$id} ? $channels{$id} : 'XMLTVID',
33               $name
34        );
35    }
36}
37