mirror of
https://github.com/iptv-org/epg
synced 2025-12-16 10:26:41 -05:00
Replace LF line endings with CRLF
This commit is contained in:
@@ -1,21 +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
|
||||
```
|
||||
# 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
|
||||
```
|
||||
|
||||
@@ -1,15 +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="" site_id="vodasport">Vodafone Sport</channel>
|
||||
</channels>
|
||||
<?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="" site_id="vodasport">Vodafone Sport</channel>
|
||||
</channels>
|
||||
|
||||
@@ -1,67 +1,67 @@
|
||||
const dayjs = require('dayjs')
|
||||
const utc = require('dayjs/plugin/utc')
|
||||
const axios = require('axios')
|
||||
|
||||
dayjs.extend(utc)
|
||||
|
||||
module.exports = {
|
||||
site: 'stod2.is',
|
||||
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 []
|
||||
}
|
||||
}
|
||||
}
|
||||
const dayjs = require('dayjs')
|
||||
const utc = require('dayjs/plugin/utc')
|
||||
const axios = require('axios')
|
||||
|
||||
dayjs.extend(utc)
|
||||
|
||||
module.exports = {
|
||||
site: 'stod2.is',
|
||||
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 []
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,46 +1,46 @@
|
||||
const { parser, url } = require('./stod2.is.config.js')
|
||||
const fs = require('fs')
|
||||
const path = require('path')
|
||||
const dayjs = require('dayjs')
|
||||
const utc = require('dayjs/plugin/utc')
|
||||
const customParseFormat = require('dayjs/plugin/customParseFormat')
|
||||
const timezone = require('dayjs/plugin/timezone')
|
||||
|
||||
dayjs.extend(utc)
|
||||
dayjs.extend(customParseFormat)
|
||||
dayjs.extend(timezone)
|
||||
|
||||
const date = dayjs.utc('2025-01-03', 'YYYY-MM-DD').startOf('day')
|
||||
const channel = { site_id: 'stod2', xmltv_id: 'Stod2.is' }
|
||||
|
||||
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 = fs.readFileSync(path.resolve(__dirname, '__data__/content.json'))
|
||||
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([])
|
||||
})
|
||||
const { parser, url } = require('./stod2.is.config.js')
|
||||
const fs = require('fs')
|
||||
const path = require('path')
|
||||
const dayjs = require('dayjs')
|
||||
const utc = require('dayjs/plugin/utc')
|
||||
const customParseFormat = require('dayjs/plugin/customParseFormat')
|
||||
const timezone = require('dayjs/plugin/timezone')
|
||||
|
||||
dayjs.extend(utc)
|
||||
dayjs.extend(customParseFormat)
|
||||
dayjs.extend(timezone)
|
||||
|
||||
const date = dayjs.utc('2025-01-03', 'YYYY-MM-DD').startOf('day')
|
||||
const channel = { site_id: 'stod2', xmltv_id: 'Stod2.is' }
|
||||
|
||||
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 = fs.readFileSync(path.resolve(__dirname, '__data__/content.json'))
|
||||
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([])
|
||||
})
|
||||
|
||||
Reference in New Issue
Block a user