mirror of
https://github.com/iptv-org/epg.git
synced 2025-05-10 09:00:07 -04:00
Merge pull request #783 from iptv-org/update-beinsports.com
Update beinsports.com
This commit is contained in:
commit
ee1afeec65
12 changed files with 152 additions and 4 deletions
|
@ -17,10 +17,10 @@ let site
|
||||||
let channels = []
|
let channels = []
|
||||||
|
|
||||||
async function main() {
|
async function main() {
|
||||||
await api.channels.load()
|
|
||||||
let result = await parser.parseChannels(options.input)
|
let result = await parser.parseChannels(options.input)
|
||||||
site = result.site
|
site = result.site
|
||||||
channels = result.channels
|
channels = result.channels
|
||||||
|
await api.channels.load()
|
||||||
for (const channel of channels) {
|
for (const channel of channels) {
|
||||||
if (channel.xmltv_id) continue
|
if (channel.xmltv_id) continue
|
||||||
let choices = await getOptions(channel)
|
let choices = await getOptions(channel)
|
||||||
|
|
|
@ -1,3 +1,4 @@
|
||||||
|
const axios = require('axios')
|
||||||
const cheerio = require('cheerio')
|
const cheerio = require('cheerio')
|
||||||
const dayjs = require('dayjs')
|
const dayjs = require('dayjs')
|
||||||
const utc = require('dayjs/plugin/utc')
|
const utc = require('dayjs/plugin/utc')
|
||||||
|
@ -10,8 +11,11 @@ dayjs.extend(customParseFormat)
|
||||||
|
|
||||||
module.exports = {
|
module.exports = {
|
||||||
site: 'beinsports.com',
|
site: 'beinsports.com',
|
||||||
url: function ({ date }) {
|
url: function ({ date, channel }) {
|
||||||
return `https://epg.beinsports.com/utctime.php?mins=00&serviceidentity=beinsports.com&cdate=${date.format(
|
let [region] = channel.site_id.split('#')
|
||||||
|
region = region ? `_${region}` : ''
|
||||||
|
|
||||||
|
return `https://epg.beinsports.com/utctime${region}.php?mins=00&serviceidentity=beinsports.com&cdate=${date.format(
|
||||||
'YYYY-MM-DD'
|
'YYYY-MM-DD'
|
||||||
)}`
|
)}`
|
||||||
},
|
},
|
||||||
|
@ -46,6 +50,33 @@ module.exports = {
|
||||||
})
|
})
|
||||||
|
|
||||||
return programs
|
return programs
|
||||||
|
},
|
||||||
|
async channels({ region, lang }) {
|
||||||
|
const suffix = region ? `_${region}` : ''
|
||||||
|
const content = await axios
|
||||||
|
.get(
|
||||||
|
`https://epg.beinsports.com/utctime${suffix}.php?mins=00&serviceidentity=beinsports.com&cdate=2022-05-08`
|
||||||
|
)
|
||||||
|
.then(r => r.data)
|
||||||
|
.catch(console.log)
|
||||||
|
const $ = cheerio.load(content)
|
||||||
|
const items = $(`.container > div, #epg_div > div`).toArray()
|
||||||
|
return items
|
||||||
|
.map(item => {
|
||||||
|
const $item = cheerio.load(item)
|
||||||
|
const id = $item('*').attr('id')
|
||||||
|
if (!/^channels\_[0-9]+$/.test(id)) return null
|
||||||
|
const channelId = id.replace('channels_', '')
|
||||||
|
const imgSrc = $item('img').attr('src')
|
||||||
|
const [_, __, name] = imgSrc.match(/(\/|)([a-z0-9-_.]+)(.png|.svg)$/i) || [null, null, '']
|
||||||
|
|
||||||
|
return {
|
||||||
|
lang,
|
||||||
|
site_id: `${region}#${channelId}`,
|
||||||
|
name
|
||||||
|
}
|
||||||
|
})
|
||||||
|
.filter(i => i)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,4 +1,6 @@
|
||||||
|
// npm run channels:parse -- --config=./sites/beinsports.com/beinsports.com.config.js --output=./sites/beinsports.com/beinsports.com_qa-ar.channels.xml --set=lang:ar --set=region:ar
|
||||||
// npx epg-grabber --config=sites/beinsports.com/beinsports.com.config.js --channels=sites/beinsports.com/beinsports.com_qa-en.channels.xml --output=guide.xml --timeout=30000 --days=2
|
// npx epg-grabber --config=sites/beinsports.com/beinsports.com.config.js --channels=sites/beinsports.com/beinsports.com_qa-en.channels.xml --output=guide.xml --timeout=30000 --days=2
|
||||||
|
// npx epg-grabber --config=sites/beinsports.com/beinsports.com.config.js --channels=sites/beinsports.com/beinsports.com_qa-ar.channels.xml --output=guide.xml --timeout=30000 --days=2
|
||||||
|
|
||||||
const { parser, url } = require('./beinsports.com.config.js')
|
const { parser, url } = require('./beinsports.com.config.js')
|
||||||
const fs = require('fs')
|
const fs = require('fs')
|
||||||
|
@ -13,12 +15,20 @@ const date = dayjs.utc('2022-05-08', 'YYYY-MM-DD').startOf('d')
|
||||||
const channel = { site_id: '#1', xmltv_id: 'BeINSports.qa' }
|
const channel = { site_id: '#1', xmltv_id: 'BeINSports.qa' }
|
||||||
|
|
||||||
it('can generate valid url', () => {
|
it('can generate valid url', () => {
|
||||||
const result = url({ date })
|
const result = url({ date, channel })
|
||||||
expect(result).toBe(
|
expect(result).toBe(
|
||||||
'https://epg.beinsports.com/utctime.php?mins=00&serviceidentity=beinsports.com&cdate=2022-05-08'
|
'https://epg.beinsports.com/utctime.php?mins=00&serviceidentity=beinsports.com&cdate=2022-05-08'
|
||||||
)
|
)
|
||||||
})
|
})
|
||||||
|
|
||||||
|
it('can generate valid url for arabic guide', () => {
|
||||||
|
const channel = { site_id: 'ar#1', xmltv_id: 'BeINSports.qa' }
|
||||||
|
const result = url({ date, channel })
|
||||||
|
expect(result).toBe(
|
||||||
|
'https://epg.beinsports.com/utctime_ar.php?mins=00&serviceidentity=beinsports.com&cdate=2022-05-08'
|
||||||
|
)
|
||||||
|
})
|
||||||
|
|
||||||
it('can parse response', () => {
|
it('can parse response', () => {
|
||||||
const content = fs.readFileSync(path.resolve('sites/beinsports.com/__data__/content.html'))
|
const content = fs.readFileSync(path.resolve('sites/beinsports.com/__data__/content.html'))
|
||||||
const results = parser({ date, channel, content }).map(p => {
|
const results = parser({ date, channel, content }).map(p => {
|
||||||
|
|
15
sites/beinsports.com/beinsports.com_fr.channels.xml
Normal file
15
sites/beinsports.com/beinsports.com_fr.channels.xml
Normal file
|
@ -0,0 +1,15 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<site site="beinsports.com">
|
||||||
|
<channels>
|
||||||
|
<channel lang="fr" xmltv_id="BeINSports1HDFrance.fr" site_id="france#1">BeIN Sports 1 HD France</channel>
|
||||||
|
<channel lang="fr" xmltv_id="BeINSports2HDFrance.fr" site_id="france#2">BeIN Sports 2 HD France</channel>
|
||||||
|
<channel lang="fr" xmltv_id="BeINSports3France.fr" site_id="france#3">BeIN Sports 3 France</channel>
|
||||||
|
<channel lang="fr" xmltv_id="BeINSportsMax4France.fr" site_id="france#4">BeIN Sports Max 4 France</channel>
|
||||||
|
<channel lang="fr" xmltv_id="BeINSportsMax5France.fr" site_id="france#5">BeIN Sports Max 5 France</channel>
|
||||||
|
<channel lang="fr" xmltv_id="BeINSportsMax6France.fr" site_id="france#6">BeIN Sports Max 6 France</channel>
|
||||||
|
<channel lang="fr" xmltv_id="BeINSportsMax7France.fr" site_id="france#7">BeIN Sports Max 7 France</channel>
|
||||||
|
<channel lang="fr" xmltv_id="BeINSportsMax8France.fr" site_id="france#8">BeIN Sports Max 8 France</channel>
|
||||||
|
<channel lang="fr" xmltv_id="BeINSportsMax9France.fr" site_id="france#9">BeIN Sports Max 9 France</channel>
|
||||||
|
<channel lang="fr" xmltv_id="BeINSportsMax10France.fr" site_id="france#10">BeIN Sports Max 10 France</channel>
|
||||||
|
</channels>
|
||||||
|
</site>
|
7
sites/beinsports.com/beinsports.com_hk.channels.xml
Normal file
7
sites/beinsports.com/beinsports.com_hk.channels.xml
Normal file
|
@ -0,0 +1,7 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<site site="beinsports.com">
|
||||||
|
<channels>
|
||||||
|
<channel lang="en" xmltv_id="BeINSports1HongKong.hk" site_id="hk#1">BeIN Sports 1 Hong Kong</channel>
|
||||||
|
<channel lang="en" xmltv_id="BeINSports2HongKong.hk" site_id="hk#2">BeIN Sports 2 Hong Kong</channel>
|
||||||
|
</channels>
|
||||||
|
</site>
|
7
sites/beinsports.com/beinsports.com_id.channels.xml
Normal file
7
sites/beinsports.com/beinsports.com_id.channels.xml
Normal file
|
@ -0,0 +1,7 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<site site="beinsports.com">
|
||||||
|
<channels>
|
||||||
|
<channel lang="en" xmltv_id="BeINSports1Indonesia.id" site_id="id#1">BeIN Sports 1 Indonesia</channel>
|
||||||
|
<channel lang="en" xmltv_id="BeINSports3Indonesia.id" site_id="id#2">BeIN Sports 3 Indonesia</channel>
|
||||||
|
</channels>
|
||||||
|
</site>
|
6
sites/beinsports.com/beinsports.com_my.channels.xml
Normal file
6
sites/beinsports.com/beinsports.com_my.channels.xml
Normal file
|
@ -0,0 +1,6 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<site site="beinsports.com">
|
||||||
|
<channels>
|
||||||
|
<channel lang="en" xmltv_id="BeINSports1MalaysiaSingapore.my" site_id="my#1">BeIN Sports 1 Malaysia & Singapore</channel>
|
||||||
|
</channels>
|
||||||
|
</site>
|
7
sites/beinsports.com/beinsports.com_ph.channels.xml
Normal file
7
sites/beinsports.com/beinsports.com_ph.channels.xml
Normal file
|
@ -0,0 +1,7 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<site site="beinsports.com">
|
||||||
|
<channels>
|
||||||
|
<channel lang="en" xmltv_id="BeINSports1Philippines.ph" site_id="id#1">BeIN Sports 1 Philippines</channel>
|
||||||
|
<channel lang="en" xmltv_id="BeINSports3Philippines.ph" site_id="id#2">BeIN Sports 3 Philippines</channel>
|
||||||
|
</channels>
|
||||||
|
</site>
|
28
sites/beinsports.com/beinsports.com_qa-ar.channels.xml
Normal file
28
sites/beinsports.com/beinsports.com_qa-ar.channels.xml
Normal file
|
@ -0,0 +1,28 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<site site="beINsports.com">
|
||||||
|
<channels>
|
||||||
|
<channel lang="ar" xmltv_id="BeINSports.qa" site_id="ar#1">beIN SPORTS FTA</channel>
|
||||||
|
<channel lang="ar" xmltv_id="BeINSportsNews.qa" site_id="ar#2">beIN SPORTS News</channel>
|
||||||
|
<channel lang="ar" xmltv_id="BeINSports2.qa" site_id="ar#3">beIN SPORTS2</channel>
|
||||||
|
<channel lang="ar" xmltv_id="BeINSports3.qa" site_id="ar#4">beIN SPORTS3</channel>
|
||||||
|
<channel lang="ar" xmltv_id="BeINSports4.qa" site_id="ar#5">beIN SPORTS4</channel>
|
||||||
|
<channel lang="ar" xmltv_id="BeINSports5.qa" site_id="ar#6">beIN SPORTS5</channel>
|
||||||
|
<channel lang="ar" xmltv_id="BeINSports6.qa" site_id="ar#7">beIN SPORTS6</channel>
|
||||||
|
<channel lang="ar" xmltv_id="BeINSports7.qa" site_id="ar#8">beIN SPORTS7</channel>
|
||||||
|
<channel lang="ar" xmltv_id="BeINSportsPremium3.qa" site_id="ar#9">beIN SPORTS3 PREMIUM</channel>
|
||||||
|
<channel lang="ar" xmltv_id="BeINSportsXtra1.qa" site_id="ar#10">beIN SPORTS XTRA1</channel>
|
||||||
|
<channel lang="ar" xmltv_id="BeINSportsXtra2.qa" site_id="ar#11">beIN SPORTS XTRA2</channel>
|
||||||
|
<channel lang="ar" xmltv_id="BeIN4K.qa" site_id="ar#12">beIN 4k</channel>
|
||||||
|
<channel lang="ar" xmltv_id="BeINSportsAFC.qa" site_id="ar#13">beIN SPORTS AFC</channel>
|
||||||
|
<channel lang="ar" xmltv_id="BeINSportsAFC1.qa" site_id="ar#14">beIN SPORTS AFC1</channel>
|
||||||
|
<channel lang="ar" xmltv_id="BeINSportsAFC2.qa" site_id="ar#15">beIN SPORTS AFC2</channel>
|
||||||
|
<channel lang="ar" xmltv_id="BeINSportsAFC3.qa" site_id="ar#16">beIN SPORTS AFC3</channel>
|
||||||
|
<channel lang="ar" xmltv_id="BeINSportsNBA.qa" site_id="ar#18">beIN SPORTS NBA</channel>
|
||||||
|
<channel lang="ar" xmltv_id="BeINSportsEnglish1.qa" site_id="ar#19">beIN SPORTS1 ENGLISH</channel>
|
||||||
|
<channel lang="ar" xmltv_id="BeINSportsEnglish2.qa" site_id="ar#20">beIN SPORTS2 ENGLISH</channel>
|
||||||
|
<channel lang="ar" xmltv_id="BeINSportsEnglish3.qa" site_id="ar#21">beIN SPORTS3 ENGLISH</channel>
|
||||||
|
<channel lang="ar" xmltv_id="BeINSportsFrench1.qa" site_id="ar#22">beIN SPORTS1 FRENCH</channel>
|
||||||
|
<channel lang="ar" xmltv_id="BeINSportsFrench2.qa" site_id="ar#23">beIN SPORTS2 FRENCH</channel>
|
||||||
|
<channel lang="ar" xmltv_id="BeINSportsFrench3.qa" site_id="ar#24">beIN SPORTS3 FRENCH</channel>
|
||||||
|
</channels>
|
||||||
|
</site>
|
7
sites/beinsports.com/beinsports.com_th.channels.xml
Normal file
7
sites/beinsports.com/beinsports.com_th.channels.xml
Normal file
|
@ -0,0 +1,7 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<site site="beinsports.com">
|
||||||
|
<channels>
|
||||||
|
<channel lang="en" xmltv_id="BeINSports1Thailand.th" site_id="th#1">BeIN Sports 1 Thailand</channel>
|
||||||
|
<channel lang="en" xmltv_id="BeINSports3Thailand.th" site_id="th#2">BeIN Sports 3 Thailand</channel>
|
||||||
|
</channels>
|
||||||
|
</site>
|
15
sites/beinsports.com/beinsports.com_us-en.channels.xml
Normal file
15
sites/beinsports.com/beinsports.com_us-en.channels.xml
Normal file
|
@ -0,0 +1,15 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<site site="beinsports.com">
|
||||||
|
<channels>
|
||||||
|
<channel lang="en" xmltv_id="BeINSportsUSA.us" site_id="us#1">BeIN Sports USA</channel>
|
||||||
|
<channel lang="en" xmltv_id="BeINSportsenEspanol.us" site_id="us#2">BeIN Sports en Español</channel>
|
||||||
|
<channel lang="en" xmltv_id="BeINSportsXtraUSA.us" site_id="us#3">BeIN Sports Xtra USA</channel>
|
||||||
|
<channel lang="en" xmltv_id="BeINSportsXtraenEspanol.us" site_id="us#4">BeIN Sports Xtra en Español</channel>
|
||||||
|
<channel lang="en" xmltv_id="BeINSports3USA.us" site_id="us#5">BeIN Sports 3 USA</channel>
|
||||||
|
<channel lang="en" xmltv_id="BeINSports4USA.us" site_id="us#6">BeIN Sports 4 USA</channel>
|
||||||
|
<channel lang="en" xmltv_id="BeINSports5USA.us" site_id="us#7">BeIN Sports 5 USA</channel>
|
||||||
|
<channel lang="en" xmltv_id="BeINSports6USA.us" site_id="us#8">BeIN Sports 6 USA</channel>
|
||||||
|
<channel lang="en" xmltv_id="BeINSports7USA.us" site_id="us#9">BeIN Sports 7 USA</channel>
|
||||||
|
<channel lang="en" xmltv_id="BeINSports8USA.us" site_id="us#10">BeIN Sports 8 USA</channel>
|
||||||
|
</channels>
|
||||||
|
</site>
|
15
sites/beinsports.com/beinsports.com_us-es.channels.xml
Normal file
15
sites/beinsports.com/beinsports.com_us-es.channels.xml
Normal file
|
@ -0,0 +1,15 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<site site="beinsports.com">
|
||||||
|
<channels>
|
||||||
|
<channel lang="en" xmltv_id="BeINSportsUSA.us" site_id="us_es#1">BeIN Sports USA</channel>
|
||||||
|
<channel lang="en" xmltv_id="BeINSportsenEspanol.us" site_id="us_es#2">BeIN Sports en Español</channel>
|
||||||
|
<channel lang="en" xmltv_id="BeINSportsXtraUSA.us" site_id="us_es#3">BeIN Sports Xtra USA</channel>
|
||||||
|
<channel lang="en" xmltv_id="BeINSportsXtraenEspanol.us" site_id="us_es#4">BeIN Sports Xtra en Español</channel>
|
||||||
|
<channel lang="en" xmltv_id="BeINSports3USA.us" site_id="us_es#5">BeIN Sports 3 USA</channel>
|
||||||
|
<channel lang="en" xmltv_id="BeINSports4USA.us" site_id="us_es#6">BeIN Sports 4 USA</channel>
|
||||||
|
<channel lang="en" xmltv_id="BeINSports5USA.us" site_id="us_es#7">BeIN Sports 5 USA</channel>
|
||||||
|
<channel lang="en" xmltv_id="BeINSports6USA.us" site_id="us_es#8">BeIN Sports 6 USA</channel>
|
||||||
|
<channel lang="en" xmltv_id="BeINSports7USA.us" site_id="us_es#9">BeIN Sports 7 USA</channel>
|
||||||
|
<channel lang="en" xmltv_id="BeINSports8USA.us" site_id="us_es#10">BeIN Sports 8 USA</channel>
|
||||||
|
</channels>
|
||||||
|
</site>
|
Loading…
Add table
Add a link
Reference in a new issue