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