Merge pull request #2567 from fraudiay79/stod2.is

Add Stod2.is
This commit is contained in:
PopeyeTheSai10r 2025-01-04 07:31:29 -08:00 committed by GitHub
commit 904f72254e
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
4 changed files with 187 additions and 0 deletions

21
sites/stod2.is/readme.md Normal file
View file

@ -0,0 +1,21 @@
# stod2.is
https://stod2.is/dagskra/
### Download the guide
```sh
npm run grab --- --site=stod2.is
```
### Update channel list
```sh
npm run channels:parse --- --config=./sites/stod2.is/stod2.is.config.js --output=./sites/stod2.is/stod2.is.channels.xml
```
### Test
```sh
npm test --- stod2.is
```

View file

@ -0,0 +1,15 @@
<?xml version="1.0" encoding="UTF-8"?>
<channels>
<channel site="stod2.is" lang="is" xmltv_id="Stod2.is" site_id="stod2">Stöð 2</channel>
<channel site="stod2.is" lang="is" xmltv_id="Stod2Fjolskylda.is" site_id="stod3">Stöð 2 Fjölskylda</channel>
<channel site="stod2.is" lang="is" xmltv_id="Stod2Sport.is" site_id="sport">Stöð 2 Sport</channel>
<channel site="stod2.is" lang="is" xmltv_id="Stod2Sport2.is" site_id="sport2">Stöð 2 Sport 2</channel>
<channel site="stod2.is" lang="is" xmltv_id="Stod2Sport3.is" site_id="sport3">Stöð 2 Sport 3</channel>
<channel site="stod2.is" lang="is" xmltv_id="Stod2Sport4.is" site_id="sport4">Stöð 2 Sport 4</channel>
<channel site="stod2.is" lang="is" xmltv_id="Stod2Sport5.is" site_id="golfstodin">Stöð 2 Sport 5</channel>
<channel site="stod2.is" lang="is" xmltv_id="Stod2Sport6.is" site_id="sport6">Stöð 2 Sport 6</channel>
<channel site="stod2.is" lang="is" xmltv_id="" site_id="besta01">Besta01</channel>
<channel site="stod2.is" lang="is" xmltv_id="" site_id="besta02">Besta02</channel>
<channel site="stod2.is" lang="is" xmltv_id="" site_id="besta03">Besta03</channel>
<channel site="stod2.is" lang="is" xmltv_id="VodafoneSport.is" site_id="vodasport">Vodafone Sport</channel>
</channels>

View file

@ -0,0 +1,68 @@
const dayjs = require('dayjs')
const utc = require('dayjs/plugin/utc')
const axios = require('axios')
dayjs.extend(utc)
module.exports = {
site: 'stod2.is',
channels: 'stod2.is.channels.xml',
days: 7,
request: {
cache: {
ttl: 60 * 60 * 1000 // 1 hour
}
},
url({ channel, date }) {
return `https://api.stod2.is/dagskra/api/${channel.site_id}/${date.format('YYYY-MM-DD')}`
},
parser: function ({ content }) {
let data
try {
data = JSON.parse(content)
} catch (error) {
console.error('Error parsing JSON:', error)
return []
}
const programs = []
if (data && Array.isArray(data)) {
data.forEach(item => {
if (!item) return
const start = dayjs.utc(item.upphaf)
const stop = start.add(item.slott, 'm')
programs.push({
title: item.isltitill,
sub_title: item.undirtitill,
description: item.lysing,
actors: item.adalhlutverk,
directors: item.leikstjori,
start,
stop
})
})
}
return programs
},
async channels() {
try {
const response = await axios.get('https://api.stod2.is/dagskra/api')
if (!response.data || !Array.isArray(response.data)) {
console.error('Error: No channels data found')
return []
}
return response.data.map(item => {
return {
lang: 'is',
site_id: item
}
})
} catch (error) {
console.error('Error fetching channels:', error)
return []
}
}
}

View file

@ -0,0 +1,83 @@
const { parser, url } = require('./stod2.is.config.js')
const dayjs = require('dayjs')
const utc = require('dayjs/plugin/utc')
const customParseFormat = require('dayjs/plugin/customParseFormat')
const timezone = require('dayjs/plugin/timezone')
const axios = require('axios')
dayjs.extend(utc)
dayjs.extend(customParseFormat)
dayjs.extend(timezone)
jest.mock('axios')
const date = dayjs.utc('2025-01-03', 'YYYY-MM-DD').startOf('day')
const channel = { site_id: 'stod2', xmltv_id: 'Stod2.is' }
const mockEpgData = JSON.stringify([
{
midill: 'STOD2',
midill_heiti: 'Stöð 2',
dagsetning: '2025-01-03T00:00:00Z',
upphaf: '2025-01-03T08:00:00Z',
titill: 'Telma Borgþórsdóttir',
isltitill: 'Heimsókn',
undirtitill: 'Telma Borgþórsdóttir',
seria: 8,
thattur: 5,
thattafjoldi: 10,
birta_thatt: 1,
opin: 0,
beint: 0,
frumsyning: 0,
framundan_i_beinni: 0,
tegund: 'SER',
flokkur: 'Icelandic',
adalhlutverk: '',
leikstjori: '',
ar: '2019',
bannad: 'Green',
recidefni: 592645105,
recidlidur: 592645184,
recidsyning: null,
refno: null,
frelsi: 0,
netdagar: 0,
lysing:
'Frábærir þættir með Sindra Sindrasyni sem lítur inn hjá íslenskum fagurkerum. Heimilin eru jafn ólík og þau eru mörg en eiga það þó eitt sameiginlegt að vera sett saman af alúð og smekklegheitum. Sindri hefur líka einstakt lag á að ná fram því besta í viðmælendum sínum.',
slott: 15,
slotlengd: '00:15'
}
])
it('can generate valid url', () => {
const generatedUrl = url({ date, channel })
expect(generatedUrl).toBe('https://api.stod2.is/dagskra/api/stod2/2025-01-03')
})
it('can parse response', () => {
const content = mockEpgData
const result = parser({ content }).map(p => {
p.start = p.start.toISOString()
p.stop = p.stop.toISOString()
return p
})
expect(result).toMatchObject([
{
title: 'Heimsókn',
sub_title: 'Telma Borgþórsdóttir',
description:
'Frábærir þættir með Sindra Sindrasyni sem lítur inn hjá íslenskum fagurkerum. Heimilin eru jafn ólík og þau eru mörg en eiga það þó eitt sameiginlegt að vera sett saman af alúð og smekklegheitum. Sindri hefur líka einstakt lag á að ná fram því besta í viðmælendum sínum.',
actors: '',
directors: '',
start: '2025-01-03T08:00:00.000Z',
stop: '2025-01-03T08:15:00.000Z'
}
])
})
it('can handle empty guide', () => {
const result = parser({ content: '[]' })
expect(result).toMatchObject([])
})