diff --git a/sites/stod2.is/readme.md b/sites/stod2.is/readme.md
deleted file mode 100644
index 0a37bda4..00000000
--- a/sites/stod2.is/readme.md
+++ /dev/null
@@ -1,21 +0,0 @@
-# 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
-```
diff --git a/sites/stod2.is/__data__/content.json b/sites/syn.is/__data__/content.json
similarity index 100%
rename from sites/stod2.is/__data__/content.json
rename to sites/syn.is/__data__/content.json
diff --git a/sites/syn.is/readme.md b/sites/syn.is/readme.md
new file mode 100644
index 00000000..d7a02f6c
--- /dev/null
+++ b/sites/syn.is/readme.md
@@ -0,0 +1,21 @@
+# syn.is
+
+https://www.syn.is/sjonvarp/dagskra
+
+### Download the guide
+
+```sh
+npm run grab --- --site=syn.is
+```
+
+### Update channel list
+
+```sh
+npm run channels:parse --- --config=./sites/syn.is/syn.is.config.js --output=./sites/syn.is/syn.is.channels.xml
+```
+
+### Test
+
+```sh
+npm test --- syn.is
+```
diff --git a/sites/stod2.is/stod2.is.channels.xml b/sites/syn.is/syn.is.channels.xml
similarity index 98%
rename from sites/stod2.is/stod2.is.channels.xml
rename to sites/syn.is/syn.is.channels.xml
index 1126c898..8b2d86ac 100644
--- a/sites/stod2.is/stod2.is.channels.xml
+++ b/sites/syn.is/syn.is.channels.xml
@@ -1,16 +1,16 @@
-
-
-
-
-
- Stöð 2 Sport
- Stöð 2 Sport 2
- Stöð 2 Sport 3
- Stöð 2 Sport 4
- Stöð 2 Sport 5
- Stöð 2 Sport 6
-
-
-
-
-
+
+
+
+
+
+ Stöð 2 Sport
+ Stöð 2 Sport 2
+ Stöð 2 Sport 3
+ Stöð 2 Sport 4
+ Stöð 2 Sport 5
+ Stöð 2 Sport 6
+
+
+
+
+
diff --git a/sites/stod2.is/stod2.is.config.js b/sites/syn.is/syn.is.config.js
similarity index 95%
rename from sites/stod2.is/stod2.is.config.js
rename to sites/syn.is/syn.is.config.js
index c3e84236..7a575b49 100644
--- a/sites/stod2.is/stod2.is.config.js
+++ b/sites/syn.is/syn.is.config.js
@@ -1,67 +1,67 @@
-const dayjs = require('dayjs')
-const utc = require('dayjs/plugin/utc')
-const axios = require('axios')
-
-dayjs.extend(utc)
-
-module.exports = {
- site: 'syn.is',
- days: 7,
- request: {
- cache: {
- ttl: 60 * 60 * 1000 // 1 hour
- }
- },
- url({ channel, date }) {
- return `https://www.syn.is/api/epg/${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://www.syn.is/api/epg/')
- 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: 'syn.is',
+ days: 7,
+ request: {
+ cache: {
+ ttl: 60 * 60 * 1000 // 1 hour
+ }
+ },
+ url({ channel, date }) {
+ return `https://www.syn.is/api/epg/${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://www.syn.is/api/epg/')
+ 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 []
+ }
+ }
+}
diff --git a/sites/stod2.is/stod2.is.test.js b/sites/syn.is/syn.is.test.js
similarity index 97%
rename from sites/stod2.is/stod2.is.test.js
rename to sites/syn.is/syn.is.test.js
index b16bb5eb..068d58aa 100644
--- a/sites/stod2.is/stod2.is.test.js
+++ b/sites/syn.is/syn.is.test.js
@@ -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://www.syn.is/api/epg/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://www.syn.is/api/epg/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([])
+})