Initial Commit

This commit is contained in:
2023-09-10 21:48:48 +02:00
commit 227cca7d31
791 changed files with 165200 additions and 0 deletions

View File

@@ -0,0 +1,103 @@
<?xml version="1.0" encoding="UTF-8"?>
<site site="siba.com.co">
<channels>
<channel lang="es" xmltv_id="AEChile.cl" site_id="380">A&amp;E Chile</channel>
<channel lang="es" xmltv_id="AMCLatinAmerica.us" site_id="532">AMC</channel>
<channel lang="es" xmltv_id="AnimalPlanetLatinAmerica.us" site_id="382">Animal Planet</channel>
<channel lang="es" xmltv_id="AXNAndes.us" site_id="384">AXN</channel>
<!-- <channel lang="es" xmltv_id="BrazzersTVXX.us" site_id="564">Brazzers TV XX</channel> -->
<channel lang="es" xmltv_id="Cablenoticias.co" site_id="391">Cablenoticias</channel>
<channel lang="es" xmltv_id="Canal1.co" site_id="401">Canal 1</channel>
<channel lang="es" xmltv_id="CanalCapital.co" site_id="393">Canal Capital</channel>
<channel lang="es" xmltv_id="CanalClaro.cl" site_id="395">Canal Claro</channel>
<channel lang="es" xmltv_id="CanalCongreso.co" site_id="397">Canal Congreso</channel>
<channel lang="es" xmltv_id="CanalInstitucional.co" site_id="398">Canal Institucional</channel>
<channel lang="es" xmltv_id="CanalTRO.co" site_id="591">Canal TRO</channel>
<channel lang="es" xmltv_id="CaracolTV.co" site_id="394">Caracol TV</channel>
<channel lang="es" xmltv_id="CartoonNetworkNorthAtlantic.us" site_id="404">Cartoon Network</channel>
<channel lang="es" xmltv_id="CinecanalPacific.us" site_id="407">Cinecanal Chile</channel>
<channel lang="es" xmltv_id="CineLatino.mx" site_id="408">CineLatino</channel>
<channel lang="es" xmltv_id="CinemaPlus.co" site_id="409">Cinema +</channel>
<channel lang="es" xmltv_id="CinemaxPanregional.us" site_id="839">Cinemax Latinoamérica</channel>
<channel lang="es" xmltv_id="CitytvBogota.co" site_id="412">City TV</channel>
<channel lang="es" xmltv_id="ClaroCinema.mx" site_id="985">Claro Cinema</channel>
<channel lang="es" xmltv_id="ClaroMusicaTV.co" site_id="566">Claro música TV</channel>
<channel lang="es" xmltv_id="ClaroSportsChile.cl" site_id="602">Claro Sports Chile</channel>
<channel lang="es" xmltv_id="CNNenEspanol.us" site_id="413">CNN en Español</channel>
<channel lang="es" xmltv_id="ComedyCentralNorth.us" site_id="702">Comedy Central</channel>
<channel lang="es" xmltv_id="Cosmovision.co" site_id="417">Cosmovisión</channel>
<channel lang="es" xmltv_id="Cristovision.co" site_id="418">Cristovisión</channel>
<channel lang="es" xmltv_id="DiscoveryChannelPanregional.us" site_id="423">Discovery Channel</channel>
<channel lang="es" xmltv_id="DiscoveryHomeHealthPanregional.us" site_id="425">Discovery Home &amp; Health</channel>
<channel lang="es" xmltv_id="DiscoveryKidsPanregional.us" site_id="427">Discovery Kids</channel>
<channel lang="es" xmltv_id="DiscoveryTurboPanregional.us" site_id="429">Discovery Turbo</channel>
<channel lang="es" xmltv_id="DisneyChannelCenter.us" site_id="430">Disney Channel</channel>
<channel lang="es" xmltv_id="EAndes.us" site_id="484">E!</channel>
<channel lang="es" xmltv_id="ElGourmetPanregional.ar" site_id="485">El Gourmet Norte</channel>
<channel lang="es" xmltv_id="ElTiempoTV.co" site_id="497">El Tiempo TV</channel>
<channel lang="es" xmltv_id="Enlace.cr" site_id="493">Enlace</channel>
<channel lang="es" xmltv_id="ESNETV.us" site_id="486">ESNE TV</channel>
<channel lang="es" xmltv_id="EWTNEspanaLatinAmerica.us" site_id="500">EWTN España - Latinoamérica</channel>
<channel lang="es" xmltv_id="FoodNetworkPanregional.us" site_id="991">Food Network Latinoamérica</channel>
<channel lang="es" xmltv_id="FoxSports2South.us" site_id="701">Fox Sports 2 Latin America</channel>
<channel lang="es" xmltv_id="FoxSports3Panregional.us" site_id="651">Fox Sports 3 Latin America</channel>
<channel lang="es" xmltv_id="FoxSportsSouth.us" site_id="506">Fox Sports Latin America</channel>
<channel lang="es" xmltv_id="FXChile.cl" site_id="509">FX Chile</channel>
<channel lang="es" xmltv_id="FXMChile.cl" site_id="586">FXM Chile</channel>
<channel lang="es" xmltv_id="GlitzPanregional.ar" site_id="510">Glitz</channel>
<channel lang="es" xmltv_id="GoldenPanregional.mx" site_id="513">Golden</channel>
<channel lang="es" xmltv_id="History2Panregional.us" site_id="894">History 2</channel>
<channel lang="es" xmltv_id="HistoryPanregional.us" site_id="521">History</channel>
<channel lang="es" xmltv_id="HTV.us" site_id="523">HTV</channel>
<channel lang="es" xmltv_id="InvestigationDiscoveryPanregional.us" site_id="528">Investigation Discovery</channel>
<channel lang="es" xmltv_id="LasEstrellasLatinAmerica.mx" site_id="396">Las Estrellas</channel>
<channel lang="es" xmltv_id="LifetimePanregional.us" site_id="893">Lifetime</channel>
<channel lang="es" xmltv_id="MeGusta.co" site_id="527">Me Gusta</channel>
<channel lang="es" xmltv_id="MTVSouth.us" site_id="544">MTV Latino Sud</channel>
<channel lang="es" xmltv_id="MultiPremier.mx" site_id="547">MultiPremier</channel>
<channel lang="es" xmltv_id="NatGeoKidsPanregional.us" site_id="1066">Nat Geo Kids</channel>
<channel lang="es" xmltv_id="NationalGeographicPanregional.us" site_id="550">National Geographic</channel>
<channel lang="es" xmltv_id="NationalGeographicWildPanregional.us" site_id="548">National Geographic Wild</channel>
<channel lang="es" xmltv_id="NickelodeonPanregional.us" site_id="552">Nickelodeon</channel>
<channel lang="es" xmltv_id="NickJrPanregional.us" site_id="551">Nick Jr</channel>
<channel lang="es" xmltv_id="NickMusic.us" site_id="745">NickMusic</channel>
<channel lang="es" xmltv_id="NTN24.co" site_id="554">NTN 24</channel>
<channel lang="es" xmltv_id="ParamountNetworkPanregional.us" site_id="937">Paramount Network</channel>
<channel lang="es" xmltv_id="PasionesLatinAmerica.us" site_id="555">Pasiones</channel>
<channel lang="es" xmltv_id="PenthouseTV.us" site_id="626">Penthouse TV</channel>
<channel lang="es" xmltv_id="PlayboyTVLatinAmerica.us" site_id="556">Playboy TV</channel>
<channel lang="es" xmltv_id="RCNNovelas.co" site_id="859">RCN Novelas</channel>
<channel lang="es" xmltv_id="CanalRCN.co" site_id="399">RCN TV</channel>
<channel lang="es" xmltv_id="RedPlus.co" site_id="421">Red+</channel>
<channel lang="es" xmltv_id="SenalColombia.co" site_id="570">Señal Colombia</channel>
<channel lang="es" xmltv_id="Sextreme.br" site_id="565">Sextreme</channel>
<channel lang="es" xmltv_id="SinLimites.co" site_id="526">Sin Límites</channel>
<channel lang="es" xmltv_id="SonyChannelAndes.us" site_id="571">Sony Channel Andes</channel>
<channel lang="es" xmltv_id="SpaceAlternate.us" site_id="574">Space Chile</channel>
<channel lang="es" xmltv_id="StarChannelColombia.co" site_id="505">Star Channel</channel>
<channel lang="es" xmltv_id="StarLifePanregional.us" site_id="502">Star Life</channel>
<channel lang="es" xmltv_id="StudioUniversalChile.cl" site_id="577">Studio Universal Chile</channel>
<channel lang="es" xmltv_id="TBSPanregional.us" site_id="578">TBS</channel>
<channel lang="es" xmltv_id="TeleAmiga.co" site_id="579">Tele Amiga</channel>
<channel lang="es" xmltv_id="Teleantioquia.co" site_id="580">Teleantioquia</channel>
<channel lang="es" xmltv_id="Telecafe.co" site_id="581">Telecafé</channel>
<channel lang="es" xmltv_id="Telecaribe.co" site_id="582">Telecaribe</channel>
<channel lang="es" xmltv_id="Teleislas.co" site_id="922">Teleislas</channel>
<channel lang="es" xmltv_id="TelemundoCentralAmerica.us" site_id="697">Telemundo</channel>
<channel lang="es" xmltv_id="Telepacifico.co" site_id="585">Telepacífico</channel>
<channel lang="es" xmltv_id="TLCLatinAmerica.us" site_id="587">TLC</channel>
<channel lang="es" xmltv_id="TlnovelasLatinAmerica.mx" site_id="584">Tlnovelas</channel>
<channel lang="es" xmltv_id="TNTChile.cl" site_id="589">TNT Chile</channel>
<channel lang="es" xmltv_id="TNTSeriesPanregional.us" site_id="524">TNT Series</channel>
<channel lang="es" xmltv_id="Trece.co" site_id="392">Trece</channel>
<channel lang="es" xmltv_id="truTVLatinAmerica.us" site_id="592">Tru TV</channel>
<channel lang="es" xmltv_id="TVAgro.co" site_id="593">TV Agro</channel>
<channel lang="es" xmltv_id="TVFamilia.ve" site_id="1055">TV Familia</channel>
<channel lang="es" xmltv_id="UniversalTVColombia.co" site_id="598">Universal TV</channel>
<channel lang="es" xmltv_id="Venus.ar" site_id="601">Venus</channel>
<channel lang="es" xmltv_id="VePlusPanregional.ve" site_id="652">Ve Plus Panregional</channel>
<channel lang="es" xmltv_id="WarnerChannelPanregional.us" site_id="608">Warner Channel Panregional</channel>
<channel lang="es" xmltv_id="WinSports.co" site_id="828">Win Sports</channel>
<channel lang="es" xmltv_id="Zoom.co" site_id="611">Zoom</channel>
</channels>
</site>

View File

@@ -0,0 +1,56 @@
const dayjs = require('dayjs')
module.exports = {
site: 'siba.com.co',
days: 2,
url: 'http://devportal.siba.com.co/index.php?action=grilla',
request: {
method: 'POST',
headers: {
'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8'
},
data({ channel, date }) {
const params = new URLSearchParams()
params.append('servicio', '10')
params.append('ini', date.unix())
params.append('end', date.add(1, 'd').unix())
params.append('chn', channel.site_id)
return params
}
},
parser: function ({ content, channel }) {
let programs = []
const items = parseItems(content, channel)
items.forEach(item => {
programs.push({
title: item.nom,
start: parseStart(item).toJSON(),
stop: parseStop(item).toJSON()
})
})
return programs
}
}
function parseStart(item) {
return dayjs.unix(item.ini)
}
function parseStop(item) {
return dayjs.unix(item.fin)
}
function parseContent(content, channel) {
const data = JSON.parse(content)
if (!data || !Array.isArray(data.list)) return null
return data.list.find(i => i.id === channel.site_id)
}
function parseItems(content, channel) {
const data = parseContent(content, channel)
return data ? data.prog : []
}

View File

@@ -0,0 +1,53 @@
// npx epg-grabber --config=sites/siba.com.co/siba.com.co.config.js --channels=sites/siba.com.co/siba.com.co.channels.xml --output=guide.xml --days=2
const { parser, url, request } = require('./siba.com.co.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('2021-11-11', 'YYYY-MM-DD').startOf('d')
const channel = {
site_id: '395',
xmltv_id: 'CanalClaro.cl'
}
const content = `{"list":[{"id":"395","nom":"CANAL CLARO","num":"102","logo":"7c4b9e8566a6e867d1db4c7ce845f1f4.jpg","cat":"Exclusivos Claro","prog":[{"id":"665724465","nom":"Worst Cooks In America","ini":1636588800,"fin":1636592400}]}],"error":null}`
it('can generate valid url', () => {
expect(url).toBe('http://devportal.siba.com.co/index.php?action=grilla')
})
it('can generate valid request headers', () => {
expect(request.headers).toMatchObject({
'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8'
})
})
it('can generate valid request data', () => {
const result = request.data({ channel, date })
expect(result.has('servicio')).toBe(true)
expect(result.has('ini')).toBe(true)
expect(result.has('end')).toBe(true)
expect(result.has('chn')).toBe(true)
})
it('can parse response', () => {
const result = parser({ date, channel, content })
expect(result).toMatchObject([
{
start: '2021-11-11T00:00:00.000Z',
stop: '2021-11-11T01:00:00.000Z',
title: 'Worst Cooks In America'
}
])
})
it('can handle empty guide', () => {
const result = parser({
date,
channel,
content: `{"list":[],"error":null}`
})
expect(result).toMatchObject([])
})