forked from sunsettrack4/easyepg
-
Notifications
You must be signed in to change notification settings - Fork 0
/
ch_combine.pl
executable file
·105 lines (86 loc) · 2.52 KB
/
ch_combine.pl
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
#!/usr/bin/perl
# Copyright (C) 2019-2020 Jan-Luca Neumann
# https://github.com/sunsettrack4/easyepg
#
# Collaborators:
# - DeBaschdi ( https://github.com/DeBaschdi )
#
# This Program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 3, or (at your option)
# any later version.
#
# This Program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with easyepg. If not, see <http://www.gnu.org/licenses/>.
use strict;
use warnings;
binmode STDOUT, ":utf8";
binmode STDERR, ":utf8";
use utf8;
# READ XML INPUT FILE
my $xml;
{
local $/; #Enable 'slurp' mode
open my $fh, "<", "xml/fileNAME" or die;
$xml = <$fh>;
close $fh;
}
# READ JSON CONFIG FILE
my $json;
{
local $/; #Enable 'slurp' mode
open my $fh, "<", "combine/channelsFILE" or die;
$json = <$fh>;
close $fh;
}
# DEFINE XML/JSON PARSER
use XML::Rules;
use JSON;
# DEFINE XML RULES
my @rules = (
'display-name' => 'as is',
'icon' => 'as is',
'channel' => 'as array no content'
);
# CONVERT XML/JSON TO PERL STRUCTURES
my $parser = XML::Rules->new(rules => \@rules );
my $ref = $parser->parse( $xml);
my $init = decode_json($json);
# DEFINE VALUES
my $tv = $ref->{tv};
my @channel = @{ $tv->{channel} };
# DEFINE SELECTED CHANNELS
my @configdata = @{ $init->{'channels'} };
# ####################
# PRINT CHANNEL LIST #
# ####################
foreach my $configdata ( @configdata ) {
foreach my $channel ( @channel ) {
# ###################
# DEFINE XML VALUES #
# ###################
# DEFINE CHANNEL STRINGS
my $channel_id = $channel->{id};
my $ch_logo = $channel->{'icon'}->{'src'};
my $ch_lang = $channel->{'display-name'}->{lang};
my $ch_name = $channel->{'display-name'}->{_content};
# ##################
# PRINT XML VALUES #
# ##################
if( $channel_id eq $configdata ) {
# CHANNEL ID + NAME + LOGO (condition)
print "<channel id=\"" . $channel_id . "\">\n";
print " <display-name lang=\"" . $ch_lang . "\">" . $ch_name . "<\/display-name>\n";
if( defined $ch_logo ) {
print " <icon src=\"$ch_logo\" />\n</channel>\n";
} else {
print "</channel>\n";
}
}
}
}