mirror of
https://github.com/iptv-org/epg.git
synced 2025-05-09 08:30:06 -04:00
Add guide from singtel.com
This commit is contained in:
parent
1ebe853ced
commit
3e47c13f45
6 changed files with 1115 additions and 0 deletions
17
.github/workflows/singtel.com.yml
vendored
Normal file
17
.github/workflows/singtel.com.yml
vendored
Normal file
|
@ -0,0 +1,17 @@
|
|||
name: singtel.com
|
||||
on:
|
||||
schedule:
|
||||
- cron: '0 3 * * *'
|
||||
workflow_dispatch:
|
||||
workflow_run:
|
||||
workflows: [_trigger]
|
||||
types:
|
||||
- completed
|
||||
jobs:
|
||||
load:
|
||||
uses: ./.github/workflows/_load.yml
|
||||
with:
|
||||
site: ${{github.workflow}}
|
||||
secrets:
|
||||
APP_ID: ${{ secrets.APP_ID }}
|
||||
APP_PRIVATE_KEY: ${{ secrets.APP_PRIVATE_KEY }}
|
1
sites/singtel.com/__data__/content.json
Normal file
1
sites/singtel.com/__data__/content.json
Normal file
File diff suppressed because one or more lines are too long
833
sites/singtel.com/__data__/no_content.html
Normal file
833
sites/singtel.com/__data__/no_content.html
Normal file
File diff suppressed because one or more lines are too long
157
sites/singtel.com/singtel.com.channels.xml
Normal file
157
sites/singtel.com/singtel.com.channels.xml
Normal file
|
@ -0,0 +1,157 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<site site="sky.com">
|
||||
<channels>
|
||||
<channel lang="en" xmltv_id="ABCAustralia.au" site_id="5251">ABC Australia</channel>
|
||||
<!-- <channel lang="en" xmltv_id="???" site_id="6694">ABS-CBN News Channel</channel> -->
|
||||
<channel lang="en" xmltv_id="AdithyaTV.in" site_id="5628">Adithya TV</channel>
|
||||
<!-- <channel lang="en" xmltv_id="???" site_id="5256">AFN</channel> -->
|
||||
<channel lang="en" xmltv_id="AnimalPlanetSoutheastAsia.sg" site_id="5208">Animal Planet</channel>
|
||||
<channel lang="en" xmltv_id="AnimaxAsia.sg" site_id="5342">Animax</channel>
|
||||
<channel lang="en" xmltv_id="AniplusAsia.sg" site_id="5340">ANIPLUS HD</channel>
|
||||
<channel lang="ms" xmltv_id="Asianet.in" site_id="5638">Asianet</channel>
|
||||
<channel lang="ms" xmltv_id="AsianetMovies.in" site_id="5639">Asianet Movies</channel>
|
||||
<channel lang="ms" xmltv_id="AstroPrima.my" site_id="5602">Astro Prima HD</channel>
|
||||
<channel lang="ms" xmltv_id="AstroRia.my" site_id="5608">Astro Ria HD</channel>
|
||||
<channel lang="en" xmltv_id="AXNSingapore.sg" site_id="5304">AXN</channel>
|
||||
<channel lang="en" xmltv_id="BabyTV.uk" site_id="5464">BabyTV</channel>
|
||||
<channel lang="en" xmltv_id="BBCEarthAsia.uk" site_id="6203">BBC Earth</channel>
|
||||
<channel lang="en" xmltv_id="BBCLifestyleAsia.uk" site_id="6255">BBC Lifestyle</channel>
|
||||
<channel lang="en" xmltv_id="BBCWorldNewsAsiaPacific.uk" site_id="6166">BBC World News</channel>
|
||||
<channel lang="en" xmltv_id="beINSports.qa" site_id="6126">beIN SPORTS</channel>
|
||||
<channel lang="en" xmltv_id="beINSports2.qa" site_id="6127">beIN SPORTS 2</channel>
|
||||
<channel lang="en" xmltv_id="beINSports3.qa" site_id="6110">beIN SPORTS 3</channel>
|
||||
<channel lang="en" xmltv_id="beINSports4.qa" site_id="5127">beIN SPORTS 4</channel>
|
||||
<channel lang="en" xmltv_id="beINSports5.qa" site_id="5128">beIN SPORTS 5</channel>
|
||||
<channel lang="en" xmltv_id="BloombergTVAsia.hk" site_id="5171">Bloomberg Television</channel>
|
||||
<channel lang="en" xmltv_id="BoomerangAsia.sg" site_id="5228">Boomerang</channel>
|
||||
<channel lang="zh" xmltv_id="BRTVInternationalChannel.cn" site_id="5537">BRTV International</channel>
|
||||
<channel lang="en" xmltv_id="CartoonNetworkAsia.sg" site_id="5226">Cartoon Network</channel>
|
||||
<channel lang="en" xmltv_id="CBeebiesAsia.uk" site_id="5236">CBeebies</channel>
|
||||
<channel lang="zh" xmltv_id="CCM.hk" site_id="5580">CCM</channel>
|
||||
<channel lang="zh" xmltv_id="CCTVEntertainment.cn" site_id="5534">CCTV Entertainment</channel>
|
||||
<channel lang="zh" xmltv_id="CCTV4Asia.cn" site_id="5555">CCTV-4</channel>
|
||||
<channel lang="zh" xmltv_id="CelestialMovies.hk" site_id="5585">Celestial Movies</channel>
|
||||
<channel lang="en" xmltv_id="CGTN.cn" site_id="5155">CGTN</channel>
|
||||
<channel lang="en" xmltv_id="CGTNDocumentary.cn" site_id="5211">CGTN-Documentary</channel>
|
||||
<channel lang="en" xmltv_id="Channel5.sg" site_id="5002">Ch 5</channel>
|
||||
<channel lang="zh" xmltv_id="Channel8.sg" site_id="5003">Ch 8</channel>
|
||||
<channel lang="zh" xmltv_id="ChannelU.sg" site_id="5007">Ch U</channel>
|
||||
<!-- <channel lang="zh" xmltv_id="???" site_id="5538">China Movie Channel</channel> -->
|
||||
<channel lang="en" xmltv_id="CinemaOneGlobal.ph" site_id="5692">Cinema One Global</channel>
|
||||
<channel lang="en" xmltv_id="CinemaxAsia.sg" site_id="6424">CINEMAX</channel>
|
||||
<channel lang="en" xmltv_id="CitraDrama.id" site_id="5610">Citra Drama</channel>
|
||||
<!-- <channel lang="zh" xmltv_id="???" site_id="6571">CM+</channel> -->
|
||||
<channel lang="en" xmltv_id="CNA.sg" site_id="5006">CNA</channel>
|
||||
<channel lang="en" xmltv_id="CNBCAsia.sg" site_id="5173">CNBC Asia</channel>
|
||||
<channel lang="en" xmltv_id="CNNInternationalAsiaPacific.hk" site_id="5167">CNN International</channel>
|
||||
<channel lang="en" xmltv_id="Colors.in" site_id="5652">Colors</channel>
|
||||
<channel lang="en" xmltv_id="ColorsTamil.in" site_id="5623">Colors Tamil HD</channel>
|
||||
<!-- <channel lang="en" xmltv_id="???" site_id="5125">Cricket Plus</channel> -->
|
||||
<channel lang="en" xmltv_id="CrimePlusInvestigationAsia.sg" site_id="5206">Crime + Investigation</channel>
|
||||
<channel lang="zh" xmltv_id="CTiTV.tw" site_id="5557">CTI Asia</channel>
|
||||
<channel lang="en" xmltv_id="DWEnglish.de" site_id="5161">Deutsche Welle (English)</channel>
|
||||
<channel lang="en" xmltv_id="DiscoveryAsia.sg" site_id="5204">Discovery Asia</channel>
|
||||
<channel lang="en" xmltv_id="DiscoveryChannelSoutheastAsia.sg" site_id="5202">Discovery Channel</channel>
|
||||
<channel lang="en" xmltv_id="DiscoveryScienceSoutheastAsia.sg" site_id="5205">Discovery Science</channel>
|
||||
<!-- <channel lang="en" xmltv_id="???" site_id="5258">DMAX</channel> -->
|
||||
<channel lang="zh" xmltv_id="DragonTVInternational.cn" site_id="5535">Dragon TV Intl</channel>
|
||||
<!-- <channel lang="en" xmltv_id="???" site_id="5618">Drama Channel</channel> -->
|
||||
<channel lang="en" xmltv_id="DreamWorksChannelAsia.us" site_id="5233">DreamWorks</channel>
|
||||
<channel lang="en" xmltv_id="eGGNetwork.my" site_id="5120">eGG Network</channel>
|
||||
<!-- <channel lang="zh" xmltv_id="???" site_id="5501">e-Le</channel> -->
|
||||
<channel lang="zh" xmltv_id="ETTVChina.tw" site_id="5521">ETTV Asia</channel>
|
||||
<channel lang="zh" xmltv_id="ETTVAsiaNews.tw" site_id="5046">ETTV Asia News </channel>
|
||||
<channel lang="en" xmltv_id="EurosportAsia.fr" site_id="6116">EUROSPORT </channel>
|
||||
<!-- <channel lang="en" xmltv_id="???" site_id="6119">Fight Sports</channel> -->
|
||||
<channel lang="en" xmltv_id="FoodNetworkAsia.sg" site_id="5252">Food Network</channel>
|
||||
<!-- <channel lang="en" xmltv_id="???" site_id="5165">FOX News Channel</channel> -->
|
||||
<channel lang="en" xmltv_id="France24English.fr" site_id="5041">France 24 (English)</channel>
|
||||
<channel lang="fr" xmltv_id="France24French.fr" site_id="5040">France 24 (French) </channel>
|
||||
<channel lang="zh" xmltv_id="GEM.sg" site_id="5519">GEM</channel>
|
||||
<channel lang="en" xmltv_id="GMALifeTV.ph" site_id="5689">GMA Life TV</channel>
|
||||
<channel lang="en" xmltv_id="GMANewsTV.ph" site_id="5690">GMA News TV</channel>
|
||||
<channel lang="en" xmltv_id="GMAPinoyTV.ph" site_id="5056">GMA Pinoy TV </channel>
|
||||
<channel lang="en" xmltv_id="HBOFamilyAsia.sg" site_id="6422">HBO Family</channel>
|
||||
<channel lang="en" xmltv_id="HBOAsia.sg" site_id="6420">HBO HD</channel>
|
||||
<channel lang="en" xmltv_id="HBOHitsAsia.sg" site_id="6423">HBO Hits</channel>
|
||||
<channel lang="en" xmltv_id="HBOSignatureAsia.sg" site_id="6421">HBO Signature</channel>
|
||||
<!-- <channel lang="en" xmltv_id="???" site_id="5250">HGTV</channel> -->
|
||||
<!-- <channel lang="en" xmltv_id="???" site_id="5209">HISTORY</channel> -->
|
||||
<channel lang="en" xmltv_id="HITS.sg" site_id="5326">HITS</channel>
|
||||
<channel lang="en" xmltv_id="HITSMovies.sg" site_id="6301">HITS Movies HD </channel>
|
||||
<!-- <channel lang="en" xmltv_id="???" site_id="5169">HLN</channel> -->
|
||||
<channel lang="en" xmltv_id="HubPremier1.sg" site_id="4102">Hub Premier 1</channel>
|
||||
<channel lang="en" xmltv_id="HubPremier2.sg" site_id="4103">Hub Premier 2</channel>
|
||||
<channel lang="en" xmltv_id="HubPremier3.sg" site_id="4104">Hub Premier 3</channel>
|
||||
<channel lang="en" xmltv_id="HubPremier4.sg" site_id="4105">Hub Premier 4</channel>
|
||||
<channel lang="zh" xmltv_id="HunanTVInternational.cn" site_id="5536">Hunan International</channel>
|
||||
<!-- <channel lang="zh" xmltv_id="???" site_id="5502">Jia Le Channel</channel> -->
|
||||
<channel lang="en" xmltv_id="KBSWorld.kr" site_id="5038">KBS World</channel>
|
||||
<channel lang="zh" xmltv_id="KBSWorld.kr" site_id="5038">KBS World (Mandarin)</channel>
|
||||
<channel lang="en" xmltv_id="KTV.in" site_id="5625">KTV HD</channel>
|
||||
<channel lang="en" xmltv_id="LifetimeAsia.us" site_id="5302">Lifetime</channel>
|
||||
<channel lang="en" xmltv_id="LoveNature.ca" site_id="5213">Love Nature</channel>
|
||||
<!-- <channel lang="en" xmltv_id="???" site_id="5670">maa movies</channel> -->
|
||||
<!-- <channel lang="en" xmltv_id="???" site_id="6123">mio Cricket</channel> -->
|
||||
<!-- <channel lang="en" xmltv_id="???" site_id="6124">mio Cricket Plus</channel> -->
|
||||
<!-- <channel lang="en" xmltv_id="???" site_id="5111">mio Sports</channel> -->
|
||||
<!-- <channel lang="en" xmltv_id="???" site_id="5112">mio Sports 2</channel> -->
|
||||
<!-- <channel lang="en" xmltv_id="???" site_id="5113">mio Sports 3</channel> -->
|
||||
<!-- <channel lang="en" xmltv_id="???" site_id="6350">MTV 90s</channel> -->
|
||||
<channel lang="en" xmltv_id="MTVAsia.sg" site_id="5658">MTV India</channel>
|
||||
<!-- <channel lang="en" xmltv_id="???" site_id="5349">MTV LIVE HD</channel> -->
|
||||
<channel lang="en" xmltv_id="NationalGeographicWildSingapore.sg" site_id="5207">Nat Geo Wild HD</channel>
|
||||
<channel lang="en" xmltv_id="NationalGeographicSingapore.sg" site_id="5201">National Geographic </channel>
|
||||
<channel lang="en" xmltv_id="NDTV24x7.in" site_id="5678">NDTV 24x7</channel>
|
||||
<channel lang="en" xmltv_id="NDTVIndia.in" site_id="5679">NDTV India</channel>
|
||||
<channel lang="en" xmltv_id="NHKWorldJapan.jp" site_id="5157">NHK World - Japan</channel>
|
||||
<channel lang="en" xmltv_id="NHKWorldPremium.jp" site_id="5682">NHK World Premium</channel>
|
||||
<channel lang="en" xmltv_id="NickJrAsia.sg" site_id="5238">Nick Jr.</channel>
|
||||
<channel lang="en" xmltv_id="NickelodeonAsia.sg" site_id="5240">Nickelodeon Asia HD</channel>
|
||||
<channel lang="zh" xmltv_id="nowJelli.hk" site_id="5512">now Jelli</channel>
|
||||
<channel lang="en" xmltv_id="OneTVAsia.sg" site_id="5604">ONE HD (Malay)</channel>
|
||||
<channel lang="zh" xmltv_id="OneTVAsia.sg" site_id="5513">ONE HD (Mandarin)</channel>
|
||||
<!-- <channel lang="en" xmltv_id="???" site_id="5119">Outdoor Channel</channel> -->
|
||||
<channel lang="en" xmltv_id="ParamountNetworkSingapore.sg" site_id="5418">Paramount Network</channel>
|
||||
<channel lang="en" xmltv_id="Pesona.my" site_id="5607">Pesona HD</channel>
|
||||
<channel lang="zh" xmltv_id="PhoenixInfoNewsChannel.hk" site_id="6547">Phoenix InfoNews</channel>
|
||||
<channel lang="en" xmltv_id="PremierSports1Asia.ie" site_id="5118">Premier Sports</channel>
|
||||
<channel lang="en" xmltv_id="ROCKEntertainment.sg" site_id="5318">ROCK Entertainment</channel>
|
||||
<channel lang="en" xmltv_id="ROCKExtreme.sg" site_id="6310">ROCK Extreme</channel>
|
||||
<channel lang="en" xmltv_id="ATNSABTV.ca" site_id="5648">SAB TV</channel>
|
||||
<channel lang="en" xmltv_id="SEAToday.id" site_id="5615">SEA Today</channel>
|
||||
<channel lang="en" xmltv_id="SonyEntertainmentTelevision.in" site_id="5644">SET (HINDI)</channel>
|
||||
<channel lang="en" xmltv_id="SkyNewsInternational.uk" site_id="5151">Sky News HD</channel>
|
||||
<channel lang="en" xmltv_id="SonyMaxSingapore.sg" site_id="5668">SONY MAX</channel>
|
||||
<channel lang="en" xmltv_id="SPOTV.kr" site_id="6114">SPOTV</channel>
|
||||
<channel lang="en" xmltv_id="SPOTV2.kr" site_id="6115">SPOTV 2</channel>
|
||||
<channel lang="en" xmltv_id="StarBharat.in" site_id="5654">Star Bharat</channel>
|
||||
<channel lang="en" xmltv_id="StarGold.in" site_id="5662">STAR Gold</channel>
|
||||
<channel lang="en" xmltv_id="StarMaa.in" site_id="5671">Star Maa</channel>
|
||||
<channel lang="en" xmltv_id="StarPlus.in" site_id="5656">STAR Plus</channel>
|
||||
<channel lang="ta" xmltv_id="SunLife.in" site_id="5626">Sun Life</channel>
|
||||
<channel lang="en" xmltv_id="SunMusic.in" site_id="5627">Sun Music</channel>
|
||||
<channel lang="en" xmltv_id="SunNews.in" site_id="5636">Sun News</channel>
|
||||
<channel lang="en" xmltv_id="SunTV.in" site_id="5622">Sun TV</channel>
|
||||
<channel lang="ms" xmltv_id="Suria.sg" site_id="5004">Suria</channel>
|
||||
<channel lang="en" xmltv_id="TechStorm.sg" site_id="5260">TechStorm</channel>
|
||||
<channel lang="en" xmltv_id="TheFilipinoChannelAsia.us" site_id="5693">The Filipino Channel</channel>
|
||||
<channel lang="en" xmltv_id="TimesNow.in" site_id="5676">Times Now</channel>
|
||||
<!-- <channel lang="en" xmltv_id="???" site_id="5254">TLC</channel> -->
|
||||
<channel lang="en" xmltv_id="TraceSportStars.fr" site_id="5257">TRACE Sports Stars HD</channel>
|
||||
<!-- <channel lang="en" xmltv_id="???" site_id="5021">Travel Channel HD</channel> -->
|
||||
<channel lang="zh" xmltv_id="Jade.hk" site_id="5511">TVB Jade</channel>
|
||||
<channel lang="zh" xmltv_id="TVBXingHe.hk" site_id="5517">TVB Xing He</channel>
|
||||
<channel lang="zh" xmltv_id="TVBSAsia.tw" site_id="6507">TVBS Asia</channel>
|
||||
<channel lang="zh" xmltv_id="TVBSNews.tw" site_id="6516">TVBS News</channel>
|
||||
<channel lang="en" xmltv_id="tvNAsia.hk" site_id="5619">tvN HD (Malay) </channel>
|
||||
<channel lang="zh" xmltv_id="tvNAsia.hk" site_id="5518">tvN HD (Mandarin)</channel>
|
||||
<channel lang="en" xmltv_id="Vasantham.sg" site_id="5005">Vasantham</channel>
|
||||
<channel lang="en" xmltv_id="VijayTV.in" site_id="5634">Vijay</channel>
|
||||
<channel lang="en" xmltv_id="WarnerTVAsia.us" site_id="5306">Warner TV</channel>
|
||||
<!-- <channel lang="en" xmltv_id="???" site_id="4141">World Cup CH01</channel> -->
|
||||
<!-- <channel lang="en" xmltv_id="???" site_id="4142">World Cup CH02</channel> -->
|
||||
<channel lang="en" xmltv_id="ZeeTamil.in" site_id="5632">Zee Tamil</channel>
|
||||
<channel lang="en" xmltv_id="ZeeTV.in" site_id="5646">ZEE TV</channel>
|
||||
</channels>
|
||||
</site>
|
43
sites/singtel.com/singtel.com.config.js
Normal file
43
sites/singtel.com/singtel.com.config.js
Normal file
|
@ -0,0 +1,43 @@
|
|||
const dayjs = require('dayjs')
|
||||
const utc = require('dayjs/plugin/utc')
|
||||
|
||||
dayjs.extend(utc)
|
||||
|
||||
module.exports = {
|
||||
site: 'singtel.com',
|
||||
days: 2,
|
||||
request: {
|
||||
cache: {
|
||||
ttl: 60 * 60 * 1000 // 1 hour
|
||||
}
|
||||
},
|
||||
url({ date }) {
|
||||
return `https://www.singtel.com/etc/singtel/public/tv/epg-parsed-data/${date.format('DDMMYYYY')}.json`
|
||||
},
|
||||
parser({ content, channel }) {
|
||||
let programs = []
|
||||
const items = parseItems(content, channel)
|
||||
items.forEach(item => {
|
||||
const start = dayjs(item.startDateTime)
|
||||
const stop = start.add(item.duration, 's')
|
||||
programs.push({
|
||||
title: item.program.title,
|
||||
category: item.program.subCategory,
|
||||
description: item.program.description,
|
||||
start,
|
||||
stop
|
||||
})
|
||||
})
|
||||
|
||||
return programs
|
||||
}
|
||||
}
|
||||
|
||||
function parseItems(content, channel) {
|
||||
try {
|
||||
const data = JSON.parse(content)
|
||||
return data && data[channel.site_id] ? data[channel.site_id] : []
|
||||
} catch (err) {
|
||||
return []
|
||||
}
|
||||
}
|
64
sites/singtel.com/singtel.com.test.js
Normal file
64
sites/singtel.com/singtel.com.test.js
Normal file
|
@ -0,0 +1,64 @@
|
|||
// npm run channels:parse -- --config=./sites/singtel.com/singtel.com.config.js --output=./sites/singtel.com/singtel.com.channels.xml
|
||||
// npx epg-grabber --config=sites/singtel.com/singtel.com.config.js --channels=sites/singtel.com/singtel.com.channels.xml --output=guide.xml --days=2
|
||||
|
||||
const { parser, url, request } = require('./singtel.com.config.js')
|
||||
const fs = require('fs')
|
||||
const path = require('path')
|
||||
const axios = require('axios')
|
||||
const dayjs = require('dayjs')
|
||||
const utc = require('dayjs/plugin/utc')
|
||||
const customParseFormat = require('dayjs/plugin/customParseFormat')
|
||||
dayjs.extend(customParseFormat)
|
||||
dayjs.extend(utc)
|
||||
|
||||
jest.mock('axios')
|
||||
|
||||
const date = dayjs.utc('2023-01-29', 'YYYY-MM-DD').startOf('d')
|
||||
const channel = {
|
||||
site_id: '5418',
|
||||
xmltv_id: 'ParamountNetworkSingapore.sg'
|
||||
}
|
||||
|
||||
it('can generate valid url', () => {
|
||||
expect(url({ channel, date })).toBe(
|
||||
'https://www.singtel.com/etc/singtel/public/tv/epg-parsed-data/29012023.json'
|
||||
)
|
||||
})
|
||||
|
||||
|
||||
it('can parse response', () => {
|
||||
const content = fs.readFileSync(path.resolve(__dirname, '__data__/content.json'))
|
||||
let results = parser({ content, channel})
|
||||
results = results.map(p => {
|
||||
p.start = p.start.toJSON()
|
||||
p.stop = p.stop.toJSON()
|
||||
return p
|
||||
})
|
||||
|
||||
expect(results.length).toBe(23)
|
||||
expect(results[0]).toMatchObject({
|
||||
start: '2023-01-29T00:00:00.000Z',
|
||||
stop: '2023-01-29T01:30:00.000Z',
|
||||
title: 'Hip Hop Family Christmas Wedding',
|
||||
description:
|
||||
`Hip Hop's most famous family is back, and this time Christmas wedding bells are ringing! Jessica and Jayson are getting ready to say their "I do's".`,
|
||||
category: 'Specials'
|
||||
})
|
||||
|
||||
expect(results[10]).toMatchObject({
|
||||
start: '2023-01-29T09:00:00.000Z',
|
||||
stop: '2023-01-29T09:30:00.000Z',
|
||||
title: 'The Daily Show',
|
||||
description:
|
||||
"The Daily Show correspondents tackle the biggest stories in news, politics and pop culture.",
|
||||
category: 'English Entertainment'
|
||||
})
|
||||
|
||||
})
|
||||
|
||||
it('can handle empty guide', () => {
|
||||
const content = fs.readFileSync(path.resolve(__dirname, '__data__/no_content.html'))
|
||||
const results = parser({ content, channel })
|
||||
|
||||
expect(results).toMatchObject([])
|
||||
})
|
Loading…
Add table
Add a link
Reference in a new issue