mirror of
https://github.com/iptv-org/epg
synced 2025-12-16 02:16:40 -05:00
Add vodafone.pt channels and try to make the config file
This commit is contained in:
@@ -3,17 +3,17 @@
|
||||
### Download the guide
|
||||
|
||||
```sh
|
||||
npm run grab --- --site=meo.pt
|
||||
npm run grab --- --site=vodafone.pt
|
||||
```
|
||||
|
||||
### Update channel list
|
||||
|
||||
```sh
|
||||
npm run channels:parse --- --config=./sites/meo.pt/meo.pt.config.js --output=./sites/meo.pt/meo.pt.channels.xml
|
||||
npm run channels:parse --- --config=./sites/vodafone.pt/vodafone.pt.config.js --output=./sites/vodafone.pt/vodafone.pt.channels.xml
|
||||
```
|
||||
|
||||
### Test
|
||||
|
||||
```sh
|
||||
npm test --- meo.pt
|
||||
npm test --- vodafone.pt
|
||||
```
|
||||
|
||||
@@ -1 +1,163 @@
|
||||
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<channels>
|
||||
<channel site="vodafone.pt" lang="pt" xmltv_id="RTP1.pt" site_id="3028">RTP1</channel>
|
||||
<channel site="vodafone.pt" lang="pt" xmltv_id="RTP2.pt" site_id="2825">RTP2</channel>
|
||||
<channel site="vodafone.pt" lang="pt" xmltv_id="SIC.pt" site_id="2670">SIC</channel>
|
||||
<channel site="vodafone.pt" lang="pt" xmltv_id="TVI.pt" site_id="2671">TVI</channel>
|
||||
<channel site="vodafone.pt" lang="pt" xmltv_id="SICNoticias.pt" site_id="2935">SIC Noticias</channel>
|
||||
<channel site="vodafone.pt" lang="pt" xmltv_id="RTP3.pt" site_id="7187">RTP3</channel>
|
||||
<channel site="vodafone.pt" lang="pt" xmltv_id="CNNPortugal.pt" site_id="5678">CNN Portugal</channel>
|
||||
<channel site="vodafone.pt" lang="pt" xmltv_id="CMTV.pt" site_id="3414">CMTV</channel>
|
||||
<channel site="vodafone.pt" lang="pt" xmltv_id="Now.pt" site_id="8711">News Now</channel>
|
||||
<channel site="vodafone.pt" lang="pt" xmltv_id="RedeGlobo.br" site_id="3020">Globo</channel>
|
||||
<channel site="vodafone.pt" lang="pt" xmltv_id="Canal11.pt" site_id="5585">Canal 11</channel>
|
||||
<channel site="vodafone.pt" lang="pt" xmltv_id="VPlusTVI.pt" site_id="8399">V+ TVI</channel>
|
||||
<channel site="vodafone.pt" lang="pt" xmltv_id="PortoCanal.pt" site_id="2768">Porto Canal</channel>
|
||||
<channel site="vodafone.pt" lang="pt" xmltv_id="SICCaras.pt" site_id="2937">SIC Caras</channel>
|
||||
<channel site="vodafone.pt" lang="pt" xmltv_id="SICRadical.pt" site_id="2915">SIC Radical</channel>
|
||||
<channel site="vodafone.pt" lang="pt" xmltv_id="SICMulher.pt" site_id="2936">SIC Mulher</channel>
|
||||
<channel site="vodafone.pt" lang="pt" xmltv_id="RTPMemoria.pt" site_id="2727">RTP Memória</channel>
|
||||
<channel site="vodafone.pt" lang="pt" xmltv_id="SportTVPlus.pt" site_id="2930">SportTV+</channel>
|
||||
<channel site="vodafone.pt" lang="pt" xmltv_id="SportTV1.pt" site_id="2687">SportTV1</channel>
|
||||
<channel site="vodafone.pt" lang="pt" xmltv_id="SportTV2.pt" site_id="2688">SportTV2</channel>
|
||||
<channel site="vodafone.pt" lang="pt" xmltv_id="SportTV3.pt" site_id="2689">SportTV3</channel>
|
||||
<channel site="vodafone.pt" lang="pt" xmltv_id="SportTV4.pt" site_id="2690">SportTV4</channel>
|
||||
<channel site="vodafone.pt" lang="pt" xmltv_id="SportTV5.pt" site_id="2691">SportTV5</channel>
|
||||
<channel site="vodafone.pt" lang="pt" xmltv_id="SportTV6.pt" site_id="7250">SportTV6</channel>
|
||||
<channel site="vodafone.pt" lang="pt" xmltv_id="SportTV7.pt" site_id="8743">SportTV7</channel>
|
||||
<channel site="vodafone.pt" lang="pt" xmltv_id="Eurosport1.fr" site_id="2675">Eurosport 1</channel>
|
||||
<channel site="vodafone.pt" lang="pt" xmltv_id="Eurosport2.fr" site_id="5043">Eurosport 2</channel>
|
||||
<channel site="vodafone.pt" lang="pt" xmltv_id="ABolaTV.pt" site_id="5583">A Bola TV</channel>
|
||||
<channel site="vodafone.pt" lang="pt" xmltv_id="BenficaTV.pt" site_id="2852">BTV</channel>
|
||||
<channel site="vodafone.pt" lang="pt" xmltv_id="SportingTV.pt" site_id="3004">Sporting TV</channel>
|
||||
<channel site="vodafone.pt" lang="pt" xmltv_id="DAZN1.uk@Portugal" site_id="3885">DAZN 1</channel>
|
||||
<channel site="vodafone.pt" lang="pt" xmltv_id="DAZN2.uk@Portugal" site_id="3886">DAZN 2</channel>
|
||||
<channel site="vodafone.pt" lang="pt" xmltv_id="DAZN3.uk@Portugal" site_id="3887">DAZN 3</channel>
|
||||
<channel site="vodafone.pt" lang="pt" xmltv_id="DAZN4.uk@Portugal" site_id="3888">DAZN 4</channel>
|
||||
<channel site="vodafone.pt" lang="pt" xmltv_id="DAZN5.uk@Portugal" site_id="3889">DAZN 5</channel>
|
||||
<channel site="vodafone.pt" lang="pt" xmltv_id="DAZN6.uk@Portugal" site_id="3890">DAZN 6</channel>
|
||||
<channel site="vodafone.pt" lang="pt" xmltv_id="WSport.za" site_id="8901">W-Sport</channel>
|
||||
<channel site="vodafone.pt" lang="pt" xmltv_id="FightNetwork.ca" site_id="2903">Fight Network</channel>
|
||||
<channel site="vodafone.pt" lang="pt" xmltv_id="FightBox.nl" site_id="2720">FightBox</channel>
|
||||
<channel site="vodafone.pt" lang="pt" xmltv_id="NauticalChannel.it" site_id="2765">Nautical
|
||||
Channel</channel>
|
||||
<channel site="vodafone.pt" lang="pt" xmltv_id="FUELTV.at" site_id="2692">Fuel TV</channel>
|
||||
<channel site="vodafone.pt" lang="pt" xmltv_id="" site_id="4862">SportTV NBA</channel>
|
||||
<channel site="vodafone.pt" lang="pt" xmltv_id="DisneyChannel.pt" site_id="3012">Disney Channel</channel>
|
||||
<channel site="vodafone.pt" lang="pt" xmltv_id="DisneyJunior.pt" site_id="7522">Disney Jr.</channel>
|
||||
<channel site="vodafone.pt" lang="pt" xmltv_id="PandaKids.pt" site_id="7188">Panda Kids</channel>
|
||||
<channel site="vodafone.pt" lang="pt" xmltv_id="CartoonNetworkWesternEurope.uk@Portugal"
|
||||
site_id="8006">Cartoon Network</channel>
|
||||
<channel site="vodafone.pt" lang="pt" xmltv_id="CanalPanda.pt" site_id="7185">Canal Panda</channel>
|
||||
<channel site="vodafone.pt" lang="pt" xmltv_id="BabyTV.uk" site_id="8781">BabyTV</channel>
|
||||
<channel site="vodafone.pt" lang="pt" xmltv_id="SICK.pt" site_id="2938">SIC K</channel>
|
||||
<channel site="vodafone.pt" lang="pt" xmltv_id="Cartoonito.pt" site_id="8005">CARTOONITO</channel>
|
||||
<channel site="vodafone.pt" lang="pt" xmltv_id="Nickelodeon.pt" site_id="8645">Nickelodeon</channel>
|
||||
<channel site="vodafone.pt" lang="pt" xmltv_id="RTLSuper.de" site_id="2860">Super RTL</channel>
|
||||
<channel site="vodafone.pt" lang="pt" xmltv_id="Biggs.pt" site_id="8636">Biggs</channel>
|
||||
<channel site="vodafone.pt" lang="pt" xmltv_id="TimelessDiziChannel.ro" site_id="8529">Dizi</channel>
|
||||
<channel site="vodafone.pt" lang="pt" xmltv_id="SICNovelas.pt" site_id="8735">SIC Novelas</channel>
|
||||
<channel site="vodafone.pt" lang="pt" xmltv_id="CanalHollywood.pt" site_id="3026">Canal
|
||||
Hollywood</channel>
|
||||
<channel site="vodafone.pt" lang="pt" xmltv_id="Cinemundo.pt" site_id="3027">CineMundo</channel>
|
||||
<channel site="vodafone.pt" lang="pt" xmltv_id="StarMovies.pt" site_id="2677">STAR Movies</channel>
|
||||
<channel site="vodafone.pt" lang="pt" xmltv_id="StarChannel.pt" site_id="2715">STAR Channel</channel>
|
||||
<channel site="vodafone.pt" lang="pt" xmltv_id="AXN.pt" site_id="2713">AXN</channel>
|
||||
<channel site="vodafone.pt" lang="pt" xmltv_id="StarLife.pt" site_id="2717">STAR Life</channel>
|
||||
<channel site="vodafone.pt" lang="pt" xmltv_id="StarCrime.pt" site_id="2847">STAR Crime</channel>
|
||||
<channel site="vodafone.pt" lang="pt" xmltv_id="StarComedy.pt" site_id="2893">STAR Comedy</channel>
|
||||
<channel site="vodafone.pt" lang="pt" xmltv_id="AXNWhite.us@PortugalHD" site_id="2833">AXN White</channel>
|
||||
<channel site="vodafone.pt" lang="pt" xmltv_id="AXNMovies.pt" site_id="2700">AXN Movies</channel>
|
||||
<channel site="vodafone.pt" lang="pt" xmltv_id="Syfy.pt" site_id="2701">SyFy</channel>
|
||||
<channel site="vodafone.pt" lang="pt" xmltv_id="AMC.pt" site_id="2996">AMC</channel>
|
||||
<channel site="vodafone.pt" lang="pt" xmltv_id="Eurochannel.uk" site_id="3416">Eurochannel PT</channel>
|
||||
<channel site="vodafone.pt" lang="pt" xmltv_id="CanalQ.pt" site_id="2902">Canal Q</channel>
|
||||
<channel site="vodafone.pt" lang="pt" xmltv_id="MTV.pt" site_id="2925">MTV</channel>
|
||||
<channel site="vodafone.pt" lang="pt" xmltv_id="MTV00s.uk" site_id="2754">MTV 00s</channel>
|
||||
<channel site="vodafone.pt" lang="pt" xmltv_id="MCMTop.fr" site_id="2779">MCM Top</channel>
|
||||
<channel site="vodafone.pt" lang="pt" xmltv_id="MCMPop.fr" site_id="8646">MCM Pop</channel>
|
||||
<channel site="vodafone.pt" lang="pt" xmltv_id="" site_id="2743">CMusicTV</channel>
|
||||
<channel site="vodafone.pt" lang="pt" xmltv_id="Mezzo.fr" site_id="2761">Mezzo</channel>
|
||||
<channel site="vodafone.pt" lang="pt" xmltv_id="AfroMusicChannel.ao" site_id="8606">Afro Music</channel>
|
||||
<channel site="vodafone.pt" lang="pt" xmltv_id="TraceUrban.fr" site_id="3015">Trace Urban</channel>
|
||||
<channel site="vodafone.pt" lang="pt" xmltv_id="TraceToca.fr" site_id="2723">Trace Toca</channel>
|
||||
<channel site="vodafone.pt" lang="pt" xmltv_id="MezzoLive.fr" site_id="2931">Mezzo Live</channel>
|
||||
<channel site="vodafone.pt" lang="pt" xmltv_id="24Kitchen.us@Portugal" site_id="2844">24Kitchen</channel>
|
||||
<channel site="vodafone.pt" lang="pt" xmltv_id="CasaeCozinha.pt" site_id="7090">Casa e Cozinha</channel>
|
||||
<channel site="vodafone.pt" lang="pt" xmltv_id="FoodNetworkEMEA.us" site_id="2994">Food Network</channel>
|
||||
<channel site="vodafone.pt" lang="pt" xmltv_id="DiscoveryChannel.pt" site_id="2914">Discovery
|
||||
Channel</channel>
|
||||
<channel site="vodafone.pt" lang="pt" xmltv_id="NationalGeographic.pt" site_id="2741">National
|
||||
Geographic</channel>
|
||||
<channel site="vodafone.pt" lang="pt" xmltv_id="NationalGeographicWild.pt" site_id="2846">Nat
|
||||
Geo Wild</channel>
|
||||
<channel site="vodafone.pt" lang="pt" xmltv_id="Historia.pt" site_id="8783">História</channel>
|
||||
<channel site="vodafone.pt" lang="pt" xmltv_id="Odisseia.pt" site_id="3016">Odisseia</channel>
|
||||
<channel site="vodafone.pt" lang="pt" xmltv_id="DocuBox.nl" site_id="2934">DocuBox</channel>
|
||||
<channel site="vodafone.pt" lang="pt" xmltv_id="AMCCrime.pt" site_id="8426">AMC Crime</channel>
|
||||
<channel site="vodafone.pt" lang="pt" xmltv_id="InvestigationDiscoveryEurope.us" site_id="8776">Investigation
|
||||
Discovery</channel>
|
||||
<channel site="vodafone.pt" lang="pt" xmltv_id="RecordTVEuropa.pt" site_id="2854">Record Europa</channel>
|
||||
<channel site="vodafone.pt" lang="pt" xmltv_id="AMCBreak.pt" site_id="3017">AMC Break</channel>
|
||||
<channel site="vodafone.pt" lang="pt" xmltv_id="TLC.pt" site_id="8398">TLC</channel>
|
||||
<channel site="vodafone.pt" lang="pt" xmltv_id="" site_id="2837">E!</channel>
|
||||
<channel site="vodafone.pt" lang="pt" xmltv_id="TravelChannel.us" site_id="2993">Travel Channel</channel>
|
||||
<channel site="vodafone.pt" lang="pt" xmltv_id="FashionTVEurope.fr" site_id="2706">Fashion</channel>
|
||||
<channel site="vodafone.pt" lang="pt" xmltv_id="" site_id="8775">HGTV</channel>
|
||||
<channel site="vodafone.pt" lang="pt" xmltv_id="M6.fr" site_id="2856">M6</channel>
|
||||
<channel site="vodafone.pt" lang="pt" xmltv_id="FastFunBox.nl" site_id="2924">Fast & Fun Box</channel>
|
||||
<channel site="vodafone.pt" lang="pt" xmltv_id="GINXTV.uk" site_id="8013">GINX ESports TV</channel>
|
||||
<channel site="vodafone.pt" lang="pt" xmltv_id="LuxeTV.lu" site_id="2762">Luxe.tv</channel>
|
||||
<channel site="vodafone.pt" lang="pt" xmltv_id="InsightTV.nl" site_id="2933">InSight TV</channel>
|
||||
<channel site="vodafone.pt" lang="pt" xmltv_id="MyZenTV.fr" site_id="2708">My Zen TV</channel>
|
||||
<channel site="vodafone.pt" lang="pt" xmltv_id="Gametoon.nl" site_id="7075">GameToon</channel>
|
||||
<channel site="vodafone.pt" lang="pt" xmltv_id="ARTV.pt" site_id="2736">ARTV</channel>
|
||||
<channel site="vodafone.pt" lang="pt" xmltv_id="RecordNews.br" site_id="2812">Record News</channel>
|
||||
<channel site="vodafone.pt" lang="pt" xmltv_id="CNN.us" site_id="8396">CNN</channel>
|
||||
<channel site="vodafone.pt" lang="pt" xmltv_id="EuronewsPortuguese.fr" site_id="2747">Euronews
|
||||
PT</channel>
|
||||
<channel site="vodafone.pt" lang="pt" xmltv_id="" site_id="2998">Euronews</channel>
|
||||
<channel site="vodafone.pt" lang="pt" xmltv_id="BloombergTV.us@Europe" site_id="2760">Bloomberg</channel>
|
||||
<channel site="vodafone.pt" lang="pt" xmltv_id="SkyNewsInternational.uk" site_id="2849">SkyNews</channel>
|
||||
<channel site="vodafone.pt" lang="pt" xmltv_id="BBCNews.uk@Europe" site_id="2746">BBC World News</channel>
|
||||
<channel site="vodafone.pt" lang="pt" xmltv_id="CNBCEurope.uk" site_id="2750">CNBC</channel>
|
||||
<channel site="vodafone.pt" lang="pt" xmltv_id="AlJazeera.qa@English" site_id="2784">AlJazeera</channel>
|
||||
<channel site="vodafone.pt" lang="pt" xmltv_id="" site_id="2773">Rai News</channel>
|
||||
<channel site="vodafone.pt" lang="pt" xmltv_id="24Horas.es" site_id="2749">24h</channel>
|
||||
<channel site="vodafone.pt" lang="pt" xmltv_id="DW.de" site_id="2781">DW</channel>
|
||||
<channel site="vodafone.pt" lang="pt" xmltv_id="France24.fr@French" site_id="2770">France 24
|
||||
Français</channel>
|
||||
<channel site="vodafone.pt" lang="pt" xmltv_id="France24.fr@English" site_id="2769">France 24
|
||||
English</channel>
|
||||
<channel site="vodafone.pt" lang="pt" xmltv_id="TCVInternacional.cv" site_id="2884">TCV News</channel>
|
||||
<channel site="vodafone.pt" lang="pt" xmltv_id="PhoenixCNEChannel.hk" site_id="2766">Phoenix</channel>
|
||||
<channel site="vodafone.pt" lang="pt" xmltv_id="RTPMadeira.pt" site_id="8424">RTP Madeira</channel>
|
||||
<channel site="vodafone.pt" lang="pt" xmltv_id="RTPAcores.pt" site_id="7084">RTP Açores</channel>
|
||||
<channel site="vodafone.pt" lang="pt" xmltv_id="LocalVisaoTV.pt" site_id="2843">Localvisão TV</channel>
|
||||
<channel site="vodafone.pt" lang="pt" xmltv_id="RTPAfrica.pt" site_id="2728">RTP África</channel>
|
||||
<channel site="vodafone.pt" lang="pt" xmltv_id="TPAi.ao" site_id="2751">TPA</channel>
|
||||
<channel site="vodafone.pt" lang="pt" xmltv_id="Canal180.pt" site_id="2814">Canal 180</channel>
|
||||
<channel site="vodafone.pt" lang="pt" xmltv_id="GaliciaTVEuropa.es" site_id="2710">Galicia</channel>
|
||||
<channel site="vodafone.pt" lang="pt" xmltv_id="TVEInternacionalEuropeAsia.es" site_id="2748">
|
||||
TVE</channel>
|
||||
<channel site="vodafone.pt" lang="pt" xmltv_id="TV5MondeEurope.fr" site_id="2742">TV5Monde</channel>
|
||||
<channel site="vodafone.pt" lang="pt" xmltv_id="" site_id="2772">Rai 1</channel>
|
||||
<channel site="vodafone.pt" lang="pt" xmltv_id="VOX.de" site_id="2861">Vox</channel>
|
||||
<channel site="vodafone.pt" lang="pt" xmltv_id="RTL.de" site_id="2859">RTL</channel>
|
||||
<channel site="vodafone.pt" lang="pt" xmltv_id="PROTVInternational.ro" site_id="2757">Pro TV
|
||||
International</channel>
|
||||
<channel site="vodafone.pt" lang="pt" xmltv_id="KBSWorld.kr" site_id="2897">KBS World</channel>
|
||||
<channel site="vodafone.pt" lang="pt" xmltv_id="ArirangTV.kr" site_id="3019">Arirang</channel>
|
||||
<channel site="vodafone.pt" lang="pt" xmltv_id="NHKWorldJapan.jp" site_id="2890">NHK World</channel>
|
||||
<channel site="vodafone.pt" lang="pt" xmltv_id="CubavisionInternacional.cu" site_id="2785">
|
||||
Cubavisión</channel>
|
||||
<channel site="vodafone.pt" lang="pt" xmltv_id="FREEDOM.ua" site_id="5610">Freedom</channel>
|
||||
<channel site="vodafone.pt" lang="pt" xmltv_id="TVCancaoNova.pt" site_id="2709">Canção Nova</channel>
|
||||
<channel site="vodafone.pt" lang="pt" xmltv_id="UnifeTV.pt" site_id="8368">uniFÉ</channel>
|
||||
<channel site="vodafone.pt" lang="pt" xmltv_id="KuriakosTV.pt" site_id="2927">Kuriakos TV</channel>
|
||||
<channel site="vodafone.pt" lang="pt" xmltv_id="" site_id="8598">BenficaTV Multicam 1</channel>
|
||||
<channel site="vodafone.pt" lang="pt" xmltv_id="" site_id="8599">BenficaTV Multicam 2</channel>
|
||||
<channel site="vodafone.pt" lang="pt" xmltv_id="" site_id="8600">BenficaTV Multicam 3</channel>
|
||||
<channel site="vodafone.pt" lang="pt" xmltv_id="" site_id="8601">BenficaTV Multicam 4</channel>
|
||||
<channel site="vodafone.pt" lang="pt" xmltv_id="" site_id="8933">Conta Lá</channel>
|
||||
</channels>
|
||||
@@ -1 +1,103 @@
|
||||
const { DateTime } = require('luxon')
|
||||
const fs = require('fs')
|
||||
const path = require('path')
|
||||
|
||||
module.exports = {
|
||||
site: 'vodafone.pt',
|
||||
url: 'https://cdn.pt.vtv.vodafone.com/epg/',
|
||||
days: 7,
|
||||
periods: [
|
||||
'06-12', '12-18', '18-00', '00-06',
|
||||
],
|
||||
|
||||
request: {
|
||||
method: 'GET',
|
||||
headers: {
|
||||
Origin: 'https://www.vodafone.pt',
|
||||
Referer: 'https://www.vodafone.pt/',
|
||||
'User-Agent': 'Mozilla/5.0 (compatible; tv_grab_pt_vodafone)',
|
||||
Accept: 'application/json, text/javascript, */*; q=0.01',
|
||||
'Accept-Language': 'pt-PT,pt;q=0.9,en;q=0.8'
|
||||
},
|
||||
path: ({ channel, date, period }) => {
|
||||
const raw = String(period || '')
|
||||
let p = raw.trim()
|
||||
const hasJsonSuffix = /\.json$/i.test(p)
|
||||
p = p.replace(/\s+/g, '')
|
||||
p = p.replace(/:/g, '-')
|
||||
p = p.replace(/_/g, '-')
|
||||
p = p.replace(/h$/i, '')
|
||||
p = p.replace(/Z$/i, '')
|
||||
p = p.replace(/(^|-)0+([0-9])/g, (m, a, b) => (a || '') + b)
|
||||
p = p.replace(/[^0-9\-\.]/g, '')
|
||||
if (hasJsonSuffix && !/\.json$/i.test(p)) p = p + '.json'
|
||||
const year = date.toFormat('yyyy')
|
||||
const month = date.toFormat('MM')
|
||||
const day = date.toFormat('dd')
|
||||
return `${channel}/${year}/${month}/${day}/${p}`
|
||||
}
|
||||
},
|
||||
|
||||
parser({ content }) {
|
||||
if (!content) return []
|
||||
let programs = []
|
||||
let data
|
||||
try {
|
||||
data = JSON.parse(content)
|
||||
} catch (err) {
|
||||
return []
|
||||
}
|
||||
const items = data?.result?.objects || []
|
||||
items.forEach(item => {
|
||||
if (!item.startDate || !item.endDate) return
|
||||
let start = DateTime.fromSeconds(item.startDate, { zone: 'UTC' }).toUTC()
|
||||
let stop = DateTime.fromSeconds(item.endDate, { zone: 'UTC' }).toUTC()
|
||||
if (stop < start) {
|
||||
stop = stop.plus({ days: 1 })
|
||||
}
|
||||
const prog = {
|
||||
title: item.name || 'Sem título',
|
||||
start,
|
||||
stop
|
||||
}
|
||||
if (item.description) prog.description = item.description
|
||||
if (item.metas?.year?.value) prog.year = item.metas.year.value
|
||||
if (item.tags?.genre?.objects) {
|
||||
prog.category = item.tags.genre.objects.map(g => g.value)
|
||||
}
|
||||
programs.push(prog)
|
||||
})
|
||||
return programs
|
||||
},
|
||||
|
||||
async channels() {
|
||||
const channelListPath = path.join(__dirname, 'channel.list')
|
||||
let content
|
||||
try {
|
||||
content = fs.readFileSync(channelListPath, 'utf8')
|
||||
} catch (err) {
|
||||
return []
|
||||
}
|
||||
const lines = content.split(/\r?\n/)
|
||||
const channels = lines
|
||||
.map(l => {
|
||||
const line = l.replace(/^#.*$/, '').trim()
|
||||
if (!line) return null
|
||||
let parts = line.split('\t')
|
||||
if (parts.length === 1) parts = line.split('|')
|
||||
if (parts.length === 1) parts = line.split(/\s+/)
|
||||
if (!parts[0]) return null
|
||||
const id = parts[0].trim()
|
||||
let name = parts[1] ? parts[1].replace(/"/g, '').trim() : id
|
||||
const icon = parts[2] ? parts[2].trim() : undefined
|
||||
return {
|
||||
lang: 'pt',
|
||||
site_id: id,
|
||||
name,
|
||||
icon
|
||||
}
|
||||
})
|
||||
.filter(Boolean)
|
||||
return channels
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user