Merge pull request #781 from iptv-org/add-bein.com

Add guide from bein.com
This commit is contained in:
Aleksandr Statciuk 2022-05-08 15:58:47 +03:00 committed by GitHub
commit fd0a9c2d26
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
5 changed files with 3476 additions and 0 deletions

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,226 @@
<script type=text/javascript>var max_sports=3;var max_entertainment=3;</script><script>currenthour='15'</script><div class='container container-tvguide categoryheadercss'><div class='row no-gutter'>
<div class='col-xs-12 col-sm-12 col-md-12 col-lg-12'>
<div id='sports' style='width:50%' class=category_item_selected>Sports</div><div id='entertainment' style='width:50%' class=category_item onclick=setparams('2022-07-08','0','00','entertainment','bein.net')>Entertainment</div></div></div><div class='row no-gutter'>
<div class='col-xs-12 col-sm-12 col-md-12 col-lg-12'>
<table width=100% border=0 class=day_table><tr><td><span id=day1t1 style=width:100% class=day_item><a href=javascript:selectday('day1');setparams('2022-05-08','0','00','sports','bein.net')>Sun</a></span><span id=day1t2 style=width:100% class=day_item1><a href=javascript:selectday('day1');setparams('2022-05-08','0','00','sports','bein.net')>08</a></div></td><td><span id=day2t1 style=width:100% class=day_item><a href=javascript:selectday('day2');setparams('2022-05-09','0','00','sports','bein.net')>Mon</a></span><span id=day2t2 style=width:100% class=day_item1><a href=javascript:selectday('day2');setparams('2022-05-09','0','00','sports','bein.net')>09</a></div></td><td><span id=day3t1 style=width:100% class=day_item><a href=javascript:selectday('day3');setparams('2022-05-10','0','00','sports','bein.net')>Tue</a></span><span id=day3t2 style=width:100% class=day_item1><a href=javascript:selectday('day3');setparams('2022-05-10','0','00','sports','bein.net')>10</a></div></td><td><span id=day4t1 style=width:100% class=day_item><a href=javascript:selectday('day4');setparams('2022-05-11','0','00','sports','bein.net')>Wed</a></span><span id=day4t2 style=width:100% class=day_item1><a href=javascript:selectday('day4');setparams('2022-05-11','0','00','sports','bein.net')>11</a></div></td></table></div>
</div><div class='row no-gutter'>
<div class='col-xs-12 col-sm-12 col-md-12 col-lg-12'>
<div style='background-color:#d1d0de;margin:0px auto;text-align:center;display:flex;width:100%'><div id=left style=width:25px;background-color:red;height:50px;padding-top:13px;background-color:#d1d0de;><img src=https://www.bein.com/mena/wp-content/uploads/sites/4/2015/06/left.png onclick=ptime()></div><div id='slider_timer' class='slider_time'>
<ul id='timer'></ul></div><div id=left style=width:25px;background-color:red;height:50px;padding-top:13px;background-color:#d1d0de><img src=https://www.bein.com/mena/wp-content/uploads/sites/4/2015/06/right.png onclick=ntime()></div></div>
</div>
</div><div class='row no-gutter' style='height:15px'></div>
<div class='row no-gutter'>
<div class='col-xs-7 col-xs-offset-5 col-sm-4 col-sm-offset-8 col-md-2 col-md-offset-10 col-lg-2 col-lg-offset-10'>
<div style='position:absolute;font-size:18px;margin-top:5px'>Live Events</div><div class="onoffswitch" style='left:120px'><input onchange=showhides() type="checkbox" name="onoffswitch" class="onoffswitch-checkbox" id="myonoffswitch" tabindex="0"><label class="onoffswitch-label" for="myonoffswitch"><span class="onoffswitch-inner"></span><span class="onoffswitch-switch"></span></label></div></div></div><div class='row no-gutter' style='height:15px'></div>
</div><div class='container container-tvguide contentheadercss'><div class='row no-gutter' id=channels_1>
<div class='col-xs-3 col-sm-2 col-md-2 col-lg-1'>
<div style='width:100%;text-align:center;'>
<div class=channelx>
<div class=centered>
<a href='https://connect.bein.com' target=_blank><img style=height:auto align=center src='https://assets.bein.com/mena/sites/3/2015/06/NEWS_DIGITAL_Mono.png'></a>
</div>
</div>
</div>
</div>
<div class='col-xs-8 col-sm-9 col-md-9 col-lg-10'>
<div id='slider_1' class=slider><ul id='ul_slider_1'>
<li id='slider_1_item1000' live='1' data-img='mena_sports/HD1.svg?2017' data-desc='' parent='slider_1' category='Leagues Summary' class='item_normal'><div class='onecontent'></div></li><li id='slider_1_item1001' live='1' data-img='mena_sports/HD1.svg?2017' data-desc='' parent='slider_1' category='Leagues Summary' class='item_normal'><div class='onecontent'></div></li><li id='slider_1_item1002' live='1' data-img='mena_sports/HD1.svg?2017' data-desc='' parent='slider_1' category='Leagues Summary' class='item_normal'><div class='onecontent'></div></li> </ul></div>
</div>
<div class='col-xs-1 nextarrow col-sm-1 nextarrow col-md-1 nextarrow col-lg-1 nextarrow'>
<div class='centered'>
<img align=center width=14 height=15 src=https://www.bein.com/mena/wp-content/uploads/sites/4/2015/06/nextarrow_en.png style=cursor:pointer onclick=action('slider_1')>
</div>
</div>
</div>
<div class='row no-gutter' style='height:15px' id='ruler_channels_1'></div>
<div class='row no-gutter' id=channels_2>
<div class='col-xs-3 col-sm-2 col-md-2 col-lg-1'>
<div style='width:100%;text-align:center;'>
<div class=channelx>
<div class=centered>
<a href='https://connect.bein.com' target=_blank><img style=height:auto align=center src='https://assets.bein.com/mena/sites/3/2015/06/bein_SPORTS_FTA_DIGITAL_Mono.png'></a>
</div>
</div>
</div>
</div>
<div class='col-xs-8 col-sm-9 col-md-9 col-lg-10'>
<div id='slider_2' class=slider><ul id='ul_slider_2'>
<li id='slider_2_item1000' live='1' data-img='mena_sports/HD1.svg?2017' data-desc='' parent='slider_1' category='Leagues Summary' class='item_normal'><div class='onecontent'></div></li><li id='slider_2_item1001' live='1' data-img='mena_sports/HD1.svg?2017' data-desc='' parent='slider_1' category='Leagues Summary' class='item_normal'><div class='onecontent'></div></li><li id='slider_2_item1002' live='1' data-img='mena_sports/HD1.svg?2017' data-desc='' parent='slider_1' category='Leagues Summary' class='item_normal'><div class='onecontent'></div></li> </ul></div>
</div>
<div class='col-xs-1 nextarrow col-sm-1 nextarrow col-md-1 nextarrow col-lg-1 nextarrow'>
<div class='centered'>
<img align=center width=14 height=15 src=https://www.bein.com/mena/wp-content/uploads/sites/4/2015/06/nextarrow_en.png style=cursor:pointer onclick=action('slider_2')>
</div>
</div>
</div>
<div class='row no-gutter' style='height:15px' id='ruler_channels_2'></div>
<div class='row no-gutter' id=channels_3>
<div class='col-xs-3 col-sm-2 col-md-2 col-lg-1'>
<div style='width:100%;text-align:center;'>
<div class=channelx>
<div class=centered>
<a href='https://connect.bein.com' target=_blank><img style=height:auto align=center src='https://assets.bein.com/mena/sites/3/2015/06/beIN_SPORTS1_DIGITAL_Mono.png'></a>
</div>
</div>
</div>
</div>
<div class='col-xs-8 col-sm-9 col-md-9 col-lg-10'>
<div id='slider_3' class=slider><ul id='ul_slider_3'>
<li id='slider_3_item1000' live='1' data-img='mena_sports/HD1.svg?2017' data-desc='' parent='slider_1' category='Leagues Summary' class='item_normal'><div class='onecontent'></div></li><li id='slider_3_item1001' live='1' data-img='mena_sports/HD1.svg?2017' data-desc='' parent='slider_1' category='Leagues Summary' class='item_normal'><div class='onecontent'></div></li><li id='slider_3_item1002' live='1' data-img='mena_sports/HD1.svg?2017' data-desc='' parent='slider_1' category='Leagues Summary' class='item_normal'><div class='onecontent'></div></li> </ul></div>
</div>
<div class='col-xs-1 nextarrow col-sm-1 nextarrow col-md-1 nextarrow col-lg-1 nextarrow'>
<div class='centered'>
<img align=center width=14 height=15 src=https://www.bein.com/mena/wp-content/uploads/sites/4/2015/06/nextarrow_en.png style=cursor:pointer onclick=action('slider_3')>
</div>
</div>
</div>
<div class='row no-gutter' style='height:15px' id='ruler_channels_3'></div>
<div class='row no-gutter' id=channels_4>
<div class='col-xs-3 col-sm-2 col-md-2 col-lg-1'>
<div style='width:100%;text-align:center;'>
<div class=channelx>
<div class=centered>
<a href='https://connect.bein.com' target=_blank><img style=height:auto align=center src='https://assets.bein.com/mena/sites/3/2015/06/beIN_SPORTS2_DIGITAL_Mono.png'></a>
</div>
</div>
</div>
</div>
<div class='col-xs-8 col-sm-9 col-md-9 col-lg-10'>
<div id='slider_4' class=slider><ul id='ul_slider_4'>
<li id='slider_4_item1000' live='1' data-img='mena_sports/HD1.svg?2017' data-desc='' parent='slider_1' category='Leagues Summary' class='item_normal'><div class='onecontent'></div></li><li id='slider_4_item1001' live='1' data-img='mena_sports/HD1.svg?2017' data-desc='' parent='slider_1' category='Leagues Summary' class='item_normal'><div class='onecontent'></div></li><li id='slider_4_item1002' live='1' data-img='mena_sports/HD1.svg?2017' data-desc='' parent='slider_1' category='Leagues Summary' class='item_normal'><div class='onecontent'></div></li> </ul></div>
</div>
<div class='col-xs-1 nextarrow col-sm-1 nextarrow col-md-1 nextarrow col-lg-1 nextarrow'>
<div class='centered'>
<img align=center width=14 height=15 src=https://www.bein.com/mena/wp-content/uploads/sites/4/2015/06/nextarrow_en.png style=cursor:pointer onclick=action('slider_4')>
</div>
</div>
</div>
<div class='row no-gutter' style='height:15px' id='ruler_channels_4'></div>
<div class='row no-gutter' id=channels_5>
<div class='col-xs-3 col-sm-2 col-md-2 col-lg-1'>
<div style='width:100%;text-align:center;'>
<div class=channelx>
<div class=centered>
<a href='https://connect.bein.com' target=_blank><img style=height:auto align=center src='https://assets.bein.com/mena/sites/3/2015/06/beIN_SPORTS3_DIGITAL_Mono.png'></a>
</div>
</div>
</div>
</div>
<div class='col-xs-8 col-sm-9 col-md-9 col-lg-10'>
<div id='slider_5' class=slider><ul id='ul_slider_5'>
<li id='slider_5_item1000' live='1' data-img='mena_sports/HD1.svg?2017' data-desc='' parent='slider_1' category='Leagues Summary' class='item_normal'><div class='onecontent'></div></li><li id='slider_5_item1001' live='1' data-img='mena_sports/HD1.svg?2017' data-desc='' parent='slider_1' category='Leagues Summary' class='item_normal'><div class='onecontent'></div></li><li id='slider_5_item1002' live='1' data-img='mena_sports/HD1.svg?2017' data-desc='' parent='slider_1' category='Leagues Summary' class='item_normal'><div class='onecontent'></div></li> </ul></div>
</div>
<div class='col-xs-1 nextarrow col-sm-1 nextarrow col-md-1 nextarrow col-lg-1 nextarrow'>
<div class='centered'>
<img align=center width=14 height=15 src=https://www.bein.com/mena/wp-content/uploads/sites/4/2015/06/nextarrow_en.png style=cursor:pointer onclick=action('slider_5')>
</div>
</div>
</div>
<div class='row no-gutter' style='height:15px' id='ruler_channels_5'></div>
<div class='row no-gutter' id=channels_6>
<div class='col-xs-3 col-sm-2 col-md-2 col-lg-1'>
<div style='width:100%;text-align:center;'>
<div class=channelx>
<div class=centered>
<a href='https://connect.bein.com' target=_blank><img style=height:auto align=center src='https://assets.bein.com/mena/sites/3/2015/06/beIN_SPORTS4_DIGITAL_Mono.png'></a>
</div>
</div>
</div>
</div>
<div class='col-xs-8 col-sm-9 col-md-9 col-lg-10'>
<div id='slider_6' class=slider><ul id='ul_slider_6'>
<li id='slider_6_item1000' live='1' data-img='mena_sports/HD1.svg?2017' data-desc='' parent='slider_1' category='Leagues Summary' class='item_normal'><div class='onecontent'></div></li><li id='slider_6_item1001' live='1' data-img='mena_sports/HD1.svg?2017' data-desc='' parent='slider_1' category='Leagues Summary' class='item_normal'><div class='onecontent'></div></li><li id='slider_6_item1002' live='1' data-img='mena_sports/HD1.svg?2017' data-desc='' parent='slider_1' category='Leagues Summary' class='item_normal'><div class='onecontent'></div></li> </ul></div>
</div>
<div class='col-xs-1 nextarrow col-sm-1 nextarrow col-md-1 nextarrow col-lg-1 nextarrow'>
<div class='centered'>
<img align=center width=14 height=15 src=https://www.bein.com/mena/wp-content/uploads/sites/4/2015/06/nextarrow_en.png style=cursor:pointer onclick=action('slider_6')>
</div>
</div>
</div>
<div class='row no-gutter' style='height:15px' id='ruler_channels_6'></div>
<div class='row no-gutter' id=channels_7>
<div class='col-xs-3 col-sm-2 col-md-2 col-lg-1'>
<div style='width:100%;text-align:center;'>
<div class=channelx>
<div class=centered>
<a href='https://connect.bein.com' target=_blank><img style=height:auto align=center src='https://assets.bein.com/mena/sites/3/2015/06/beIN_SPORTS5_DIGITAL_Mono.png'></a>
</div>
</div>
</div>
</div>
<div class='col-xs-8 col-sm-9 col-md-9 col-lg-10'>
<div id='slider_7' class=slider><ul id='ul_slider_7'>
<li id='slider_7_item1000' live='1' data-img='mena_sports/HD1.svg?2017' data-desc='' parent='slider_1' category='Leagues Summary' class='item_normal'><div class='onecontent'></div></li><li id='slider_7_item1001' live='1' data-img='mena_sports/HD1.svg?2017' data-desc='' parent='slider_1' category='Leagues Summary' class='item_normal'><div class='onecontent'></div></li><li id='slider_7_item1002' live='1' data-img='mena_sports/HD1.svg?2017' data-desc='' parent='slider_1' category='Leagues Summary' class='item_normal'><div class='onecontent'></div></li> </ul></div>
</div>
<div class='col-xs-1 nextarrow col-sm-1 nextarrow col-md-1 nextarrow col-lg-1 nextarrow'>
<div class='centered'>
<img align=center width=14 height=15 src=https://www.bein.com/mena/wp-content/uploads/sites/4/2015/06/nextarrow_en.png style=cursor:pointer onclick=action('slider_7')>
</div>
</div>
</div>
<div class='row no-gutter' style='height:15px' id='ruler_channels_7'></div>
<div class='row no-gutter' id=channels_8>
<div class='col-xs-3 col-sm-2 col-md-2 col-lg-1'>
<div style='width:100%;text-align:center;'>
<div class=channelx>
<div class=centered>
<a href='https://connect.bein.com' target=_blank><img style=height:auto align=center src='https://assets.bein.com/mena/sites/3/2021/02/beIN_SPORTS66_DIGITAL_Mono-01.png'></a>
</div>
</div>
</div>
</div>
<div class='col-xs-8 col-sm-9 col-md-9 col-lg-10'>
<div id='slider_8' class=slider><ul id='ul_slider_8'>
<li id='slider_8_item1000' live='1' data-img='mena_sports/HD1.svg?2017' data-desc='' parent='slider_1' category='Leagues Summary' class='item_normal'><div class='onecontent'></div></li><li id='slider_8_item1001' live='1' data-img='mena_sports/HD1.svg?2017' data-desc='' parent='slider_1' category='Leagues Summary' class='item_normal'><div class='onecontent'></div></li><li id='slider_8_item1002' live='1' data-img='mena_sports/HD1.svg?2017' data-desc='' parent='slider_1' category='Leagues Summary' class='item_normal'><div class='onecontent'></div></li> </ul></div>
</div>
<div class='col-xs-1 nextarrow col-sm-1 nextarrow col-md-1 nextarrow col-lg-1 nextarrow'>
<div class='centered'>
<img align=center width=14 height=15 src=https://www.bein.com/mena/wp-content/uploads/sites/4/2015/06/nextarrow_en.png style=cursor:pointer onclick=action('slider_8')>
</div>
</div>
</div>
<div class='row no-gutter' style='height:15px' id='ruler_channels_8'></div>
<div class='row no-gutter' id=channels_9>
<div class='col-xs-3 col-sm-2 col-md-2 col-lg-1'>
<div style='width:100%;text-align:center;'>
<div class=channelx>
<div class=centered>
<a href='https://connect.bein.com' target=_blank><img style=height:auto align=center src='https://assets.bein.com/mena/sites/3/2015/06/beIN_SPORTS7_DIGITAL_Mono.png'></a>
</div>
</div>
</div>
</div>
<div class='col-xs-8 col-sm-9 col-md-9 col-lg-10'>
<div id='slider_9' class=slider><ul id='ul_slider_9'>
<li id='slider_9_item1000' live='1' data-img='mena_sports/HD1.svg?2017' data-desc='' parent='slider_1' category='Leagues Summary' class='item_normal'><div class='onecontent'></div></li><li id='slider_9_item1001' live='1' data-img='mena_sports/HD1.svg?2017' data-desc='' parent='slider_1' category='Leagues Summary' class='item_normal'><div class='onecontent'></div></li><li id='slider_9_item1002' live='1' data-img='mena_sports/HD1.svg?2017' data-desc='' parent='slider_1' category='Leagues Summary' class='item_normal'><div class='onecontent'></div></li> </ul></div>
</div>
<div class='col-xs-1 nextarrow col-sm-1 nextarrow col-md-1 nextarrow col-lg-1 nextarrow'>
<div class='centered'>
<img align=center width=14 height=15 src=https://www.bein.com/mena/wp-content/uploads/sites/4/2015/06/nextarrow_en.png style=cursor:pointer onclick=action('slider_9')>
</div>
</div>
</div>
<div class='row no-gutter' style='height:15px' id='ruler_channels_9'></div>
<div class='row no-gutter' id=channels_10>
<div class='col-xs-3 col-sm-2 col-md-2 col-lg-1'>
<div style='width:100%;text-align:center;'>
<div class=channelx>
<div class=centered>
<a href='https://connect.bein.com' target=_blank><img style=height:auto align=center src='https://assets.bein.com/mena/sites/3/2015/06/beIN_SPORTS1_PREMIUM_Digital_Mono.png'></a>
</div>
</div>
</div>
</div>
<div class='col-xs-8 col-sm-9 col-md-9 col-lg-10'>
<div id='slider_10' class=slider><ul id='ul_slider_10'>
<li id='slider_10_item1000' live='1' data-img='mena_sports/HD1.svg?2017' data-desc='' parent='slider_1' category='Leagues Summary' class='item_normal'><div class='onecontent'></div></li><li id='slider_10_item1001' live='1' data-img='mena_sports/HD1.svg?2017' data-desc='' parent='slider_1' category='Leagues Summary' class='item_normal'><div class='onecontent'></div></li><li id='slider_10_item1002' live='1' data-img='mena_sports/HD1.svg?2017' data-desc='' parent='slider_1' category='Leagues Summary' class='item_normal'><div class='onecontent'></div></li> </ul></div>
</div>
<div class='col-xs-1 nextarrow col-sm-1 nextarrow col-md-1 nextarrow col-lg-1 nextarrow'>
<div class='centered'>
<img align=center width=14 height=15 src=https://www.bein.com/mena/wp-content/uploads/sites/4/2015/06/nextarrow_en.png style=cursor:pointer onclick=action('slider_10')>
</div>
</div>
</div>
<div class='row no-gutter' style='height:15px' id='ruler_channels_10'></div>
</div>
</div>

View file

@ -0,0 +1,87 @@
const cheerio = require('cheerio')
const dayjs = require('dayjs')
const utc = require('dayjs/plugin/utc')
const timezone = require('dayjs/plugin/timezone')
const customParseFormat = require('dayjs/plugin/customParseFormat')
dayjs.extend(utc)
dayjs.extend(timezone)
dayjs.extend(customParseFormat)
module.exports = {
site: 'bein.com',
url: function ({ date, channel }) {
const [index] = channel.site_id.split('#')
return `https://www.bein.com/en/epg-ajax-template/?action=epg_fetch&category=sports&cdate=${date.format(
'YYYY-MM-DD'
)}&language=EN&loadindex=${index}&mins=00&offset=0&postid=25356&serviceidentity=bein.net`
},
parser: function ({ content, channel, date }) {
let programs = []
const items = parseItems(content, channel)
date = date.subtract(1, 'd')
items.forEach(item => {
const $item = cheerio.load(item)
const title = parseTitle($item)
if (!title) return
const category = parseCategory($item)
const prev = programs[programs.length - 1]
let start = parseStart($item, date)
if (prev) {
if (start.isBefore(prev.start)) {
start = start.add(1, 'd')
date = date.add(1, 'd')
}
prev.stop = start
}
let stop = parseStop($item, start)
if (stop.isBefore(start)) {
stop = stop.add(1, 'd')
}
programs.push({
title,
category,
start,
stop
})
})
return programs
}
}
function parseTitle($item) {
return $item('.title').text()
}
function parseCategory($item) {
return $item('.format').text()
}
function parseStart($item, date) {
let [_, time] = $item('.time')
.text()
.match(/^(\d{2}:\d{2})/) || [null, null]
if (!time) return null
time = `${date.format('YYYY-MM-DD')} ${time}`
return dayjs.tz(time, 'YYYY-MM-DD HH:mm', 'Asia/Qatar')
}
function parseStop($item, date) {
let [_, time] = $item('.time')
.text()
.match(/(\d{2}:\d{2})$/) || [null, null]
if (!time) return null
time = `${date.format('YYYY-MM-DD')} ${time}`
return dayjs.tz(time, 'YYYY-MM-DD HH:mm', 'Asia/Qatar')
}
function parseItems(content, channel) {
const [_, channelId] = channel.site_id.split('#')
const $ = cheerio.load(content)
return $(`#channels_${channelId} .slider > ul:first-child > li`).toArray()
}

View file

@ -0,0 +1,60 @@
// npx epg-grabber --config=sites/bein.com/bein.com.config.js --channels=sites/bein.com/bein.com_qa.channels.xml --output=guide.xml --timeout=30000 --days=2
const fs = require('fs')
const path = require('path')
const { parser, url } = require('./bein.com.config.js')
const dayjs = require('dayjs')
const utc = require('dayjs/plugin/utc')
const customParseFormat = require('dayjs/plugin/customParseFormat')
dayjs.extend(customParseFormat)
dayjs.extend(utc)
const date = dayjs.utc('2022-05-08', 'YYYY-MM-DD').startOf('d')
const channel = { site_id: '0#1', xmltv_id: 'BeInSports.qa' }
it('can generate valid url', () => {
const result = url({ date, channel })
expect(result).toBe(
'https://www.bein.com/en/epg-ajax-template/?action=epg_fetch&category=sports&cdate=2022-05-08&language=EN&loadindex=0&mins=00&offset=0&postid=25356&serviceidentity=bein.net'
)
})
it('can parse response', () => {
const content = fs.readFileSync(path.resolve('sites/bein.com/__data__/content.html'))
const results = parser({ date, channel, content }).map(p => {
p.start = p.start.toJSON()
p.stop = p.stop.toJSON()
return p
})
expect(results[0]).toMatchObject({
start: '2022-05-07T20:30:00.000Z',
stop: '2022-05-07T21:00:00.000Z',
title: 'WITHOUT RESTRICTIONS - Live Studio NEWS',
category: 'Sports News'
})
expect(results[1]).toMatchObject({
start: '2022-05-07T21:00:00.000Z',
stop: '2022-05-07T21:45:00.000Z',
title: 'THE ISSUE OF THE WEEK - NEWS',
category: 'Sports News'
})
expect(results[54]).toMatchObject({
start: '2022-05-08T20:30:00.000Z',
stop: '2022-05-08T21:00:00.000Z',
title: 'ARAB NEWS - Live Studio NEWS',
category: 'Sports News'
})
})
it('can handle empty guide', () => {
const noContent = fs.readFileSync(path.resolve('sites/bein.com/__data__/no-content.html'))
const result = parser({
date,
channel,
content: noContent
})
expect(result).toMatchObject([])
})

View file

@ -0,0 +1,39 @@
<?xml version="1.0" encoding="UTF-8"?>
<site site="bein.com">
<channels>
<channel lang="en" xmltv_id="BeINSportsNews.qa" site_id="0#1">BeIn Sports News</channel>
<channel lang="en" xmltv_id="BeINSports.qa" site_id="0#2">BeIn Sports</channel>
<channel lang="en" xmltv_id="BeINSports1.qa" site_id="0#3">BeIn Sports 1</channel>
<channel lang="en" xmltv_id="BeINSports2.qa" site_id="0#4">BeIn Sports 2</channel>
<channel lang="en" xmltv_id="BeINSports3.qa" site_id="0#5">BeIn Sports 3</channel>
<channel lang="en" xmltv_id="BeINSports4.qa" site_id="0#6">BeIn Sports 4</channel>
<channel lang="en" xmltv_id="BeINSports5.qa" site_id="0#7">BeIn Sports 5</channel>
<channel lang="en" xmltv_id="BeINSports6.qa" site_id="0#8">BeIn Sports 6</channel>
<channel lang="en" xmltv_id="BeINSports7.qa" site_id="0#9">BeIn Sports 7</channel>
<channel lang="en" xmltv_id="BeINSportsPremium1.qa" site_id="0#10">BeIn Sports Premium 1</channel>
<channel lang="en" xmltv_id="BeINSportsPremium2.qa" site_id="1#11">BeIn Sports Premium 2</channel>
<channel lang="en" xmltv_id="BeINSportsPremium3.qa" site_id="1#12">BeIn Sports Premium 3</channel>
<channel lang="en" xmltv_id="BeINSportsXtra1.qa" site_id="1#13">BeIn Sports Xtra 1</channel>
<channel lang="en" xmltv_id="BeINSportsXtra2.qa" site_id="1#14">BeIn Sports Xtra 2</channel>
<channel lang="en" xmltv_id="BeIN4K.qa" site_id="1#15">BeIn 4K</channel>
<channel lang="en" xmltv_id="BeINSportsAFC.qa" site_id="1#16">BeIN Sports AFC</channel>
<channel lang="en" xmltv_id="BeINSportsAFC1.qa" site_id="1#17">BeIN Sports AFC 1</channel>
<channel lang="en" xmltv_id="BeINSportsAFC2.qa" site_id="1#18">BeIN Sports AFC 2</channel>
<channel lang="en" xmltv_id="BeINSportsAFC3.qa" site_id="1#19">BeIN Sports AFC 3</channel>
<channel lang="en" xmltv_id="BeINSportsEnglish1.qa" site_id="1#20">BeIn Sports English 1</channel>
<channel lang="en" xmltv_id="BeINSportsEnglish2.qa" site_id="2#21">BeIn Sports English 2</channel>
<channel lang="en" xmltv_id="BeINSportsEnglish3.qa" site_id="2#22">BeIn Sports English 3</channel>
<channel lang="en" xmltv_id="BeINSportsNBA.qa" site_id="2#23">BeIn NBA</channel>
<channel lang="en" xmltv_id="BeINSportsFrench1.qa" site_id="2#24">BeIn Sports French 1</channel>
<channel lang="en" xmltv_id="BeINSportsFrench2.qa" site_id="2#25">BeIn Sports French 2</channel>
<channel lang="en" xmltv_id="BeINSportsFrench3.qa" site_id="2#26">BeIn Sports French 3</channel>
<channel lang="en" xmltv_id="AlkassOne.qa" site_id="2#27">Alkass One</channel>
<channel lang="en" xmltv_id="AlkassTwo.qa" site_id="2#28">Alkass Two</channel>
<channel lang="en" xmltv_id="AlkassThree.qa" site_id="2#29">Alkass Three</channel>
<channel lang="en" xmltv_id="AlkassFour.qa" site_id="2#30">Alkass Four</channel>
<channel lang="en" xmltv_id="AlkassFive.qa" site_id="3#31">Alkass Five</channel>
<channel lang="en" xmltv_id="AlkassSix.qa" site_id="3#32">Alkass Six</channel>
<channel lang="en" xmltv_id="AlkassSeven.qa" site_id="3#33">Alkass Seven</channel>
<channel lang="en" xmltv_id="AlkassEight.qa" site_id="3#34">Alkass Eight</channel>
</channels>
</site>