Merge branch 'master' into CasperMcFadden95-patch-2

This commit is contained in:
Ismaël Moret
2025-09-28 18:26:22 +02:00
committed by GitHub
1254 changed files with 451543 additions and 455861 deletions

View File

@@ -1,4 +1,4 @@
<?xml version="1.0" encoding="UTF-8"?>
<channels>
<channel site="9tv.co.il" lang="ru" xmltv_id="Channel9.il" site_id="#">9 канал</channel>
</channels>
<?xml version="1.0" encoding="UTF-8"?>
<channels>
<channel site="9tv.co.il" lang="ru" xmltv_id="Channel9.il" site_id="#">9 канал</channel>
</channels>

View File

@@ -1,69 +1,69 @@
const cheerio = require('cheerio')
const dayjs = require('dayjs')
const utc = require('dayjs/plugin/utc')
const timezone = require('dayjs/plugin/timezone')
const customParseFormat = require('dayjs/plugin/customParseFormat')
dayjs.extend(utc)
dayjs.extend(timezone)
dayjs.extend(customParseFormat)
module.exports = {
site: '9tv.co.il',
days: 2,
url: function ({ date }) {
return `https://www.9tv.co.il/BroadcastSchedule/getBrodcastSchedule?date=${date.format(
'DD/MM/YYYY 00:00:00'
)}`
},
parser: function ({ content, date }) {
const programs = []
const items = parseItems(content)
items.forEach(item => {
const prev = programs[programs.length - 1]
const $item = cheerio.load(item)
const start = parseStart($item, date)
if (prev) prev.stop = start
const stop = start.add(1, 'h')
programs.push({
title: parseTitle($item),
image: parseImage($item),
description: parseDescription($item),
start,
stop
})
})
return programs
}
}
function parseStart($item, date) {
let time = $item('a > div.guide_list_time').text().trim()
return dayjs.tz(`${date.format('YYYY-MM-DD')} ${time}`, 'YYYY-MM-DD HH:mm', 'Asia/Jerusalem')
}
function parseImage($item) {
const backgroundImage = $item('a > div.guide_info_group > div.guide_info_pict').css(
'background-image'
)
if (!backgroundImage) return null
const [, relativePath] = backgroundImage.match(/url\((.*)\)/) || [null, null]
return relativePath ? `https://www.9tv.co.il${relativePath}` : null
}
function parseDescription($item) {
return $item('a > div.guide_info_group > div.guide_txt_group > div').text().trim()
}
function parseTitle($item) {
return $item('a > div.guide_info_group > div.guide_txt_group > h3').text().trim()
}
function parseItems(content) {
const $ = cheerio.load(content)
return $('li').toArray()
}
const cheerio = require('cheerio')
const dayjs = require('dayjs')
const utc = require('dayjs/plugin/utc')
const timezone = require('dayjs/plugin/timezone')
const customParseFormat = require('dayjs/plugin/customParseFormat')
dayjs.extend(utc)
dayjs.extend(timezone)
dayjs.extend(customParseFormat)
module.exports = {
site: '9tv.co.il',
days: 2,
url: function ({ date }) {
return `https://www.9tv.co.il/BroadcastSchedule/getBrodcastSchedule?date=${date.format(
'DD/MM/YYYY 00:00:00'
)}`
},
parser: function ({ content, date }) {
const programs = []
const items = parseItems(content)
items.forEach(item => {
const prev = programs[programs.length - 1]
const $item = cheerio.load(item)
const start = parseStart($item, date)
if (prev) prev.stop = start
const stop = start.add(1, 'h')
programs.push({
title: parseTitle($item),
image: parseImage($item),
description: parseDescription($item),
start,
stop
})
})
return programs
}
}
function parseStart($item, date) {
let time = $item('a > div.guide_list_time').text().trim()
return dayjs.tz(`${date.format('YYYY-MM-DD')} ${time}`, 'YYYY-MM-DD HH:mm', 'Asia/Jerusalem')
}
function parseImage($item) {
const backgroundImage = $item('a > div.guide_info_group > div.guide_info_pict').css(
'background-image'
)
if (!backgroundImage) return null
const [, relativePath] = backgroundImage.match(/url\((.*)\)/) || [null, null]
return relativePath ? `https://www.9tv.co.il${relativePath}` : null
}
function parseDescription($item) {
return $item('a > div.guide_info_group > div.guide_txt_group > div').text().trim()
}
function parseTitle($item) {
return $item('a > div.guide_info_group > div.guide_txt_group > h3').text().trim()
}
function parseItems(content) {
const $ = cheerio.load(content)
return $('li').toArray()
}

View File

@@ -1,56 +1,56 @@
const { parser, url } = require('./9tv.co.il.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')
dayjs.extend(customParseFormat)
dayjs.extend(utc)
const date = dayjs.utc('2022-03-06', 'YYYY-MM-DD').startOf('d')
const channel = {
site_id: '#',
xmltv_id: 'Channel9.il'
}
it('can generate valid url', () => {
expect(url({ date })).toBe(
'https://www.9tv.co.il/BroadcastSchedule/getBrodcastSchedule?date=06/03/2022 00:00:00'
)
})
it('can parse response', () => {
const content = fs.readFileSync(path.resolve(__dirname, '__data__/content.html'), 'utf8')
const result = parser({ content, date }).map(p => {
p.start = p.start.toJSON()
p.stop = p.stop.toJSON()
return p
})
expect(result).toMatchObject([
{
start: '2022-03-06T04:30:00.000Z',
stop: '2022-03-06T07:10:00.000Z',
title: 'Слепая',
image: 'https://www.9tv.co.il/download/pictures/img_id=8484.jpg',
description:
'Она не очень любит говорить о себе или о том, кто и зачем к ней обращается. Живет уединенно, в глуши. Но тех, кто приходит -принимает. Она видит судьбы.'
},
{
start: '2022-03-06T07:10:00.000Z',
stop: '2022-03-06T08:10:00.000Z',
image: 'https://www.9tv.co.il/download/pictures/img_id=23694.jpg',
title: 'Орел и решка. Морской сезон',
description: 'Орел и решка. Морской сезон. Ведущие -Алина Астровская и Коля Серга.'
}
])
})
it('can handle empty guide', () => {
const result = parser({
date,
channel,
content: fs.readFileSync(path.resolve(__dirname, '__data__/no_content.html'), 'utf8')
})
expect(result).toMatchObject([])
})
const { parser, url } = require('./9tv.co.il.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')
dayjs.extend(customParseFormat)
dayjs.extend(utc)
const date = dayjs.utc('2022-03-06', 'YYYY-MM-DD').startOf('d')
const channel = {
site_id: '#',
xmltv_id: 'Channel9.il'
}
it('can generate valid url', () => {
expect(url({ date })).toBe(
'https://www.9tv.co.il/BroadcastSchedule/getBrodcastSchedule?date=06/03/2022 00:00:00'
)
})
it('can parse response', () => {
const content = fs.readFileSync(path.resolve(__dirname, '__data__/content.html'), 'utf8')
const result = parser({ content, date }).map(p => {
p.start = p.start.toJSON()
p.stop = p.stop.toJSON()
return p
})
expect(result).toMatchObject([
{
start: '2022-03-06T04:30:00.000Z',
stop: '2022-03-06T07:10:00.000Z',
title: 'Слепая',
image: 'https://www.9tv.co.il/download/pictures/img_id=8484.jpg',
description:
'Она не очень любит говорить о себе или о том, кто и зачем к ней обращается. Живет уединенно, в глуши. Но тех, кто приходит -принимает. Она видит судьбы.'
},
{
start: '2022-03-06T07:10:00.000Z',
stop: '2022-03-06T08:10:00.000Z',
image: 'https://www.9tv.co.il/download/pictures/img_id=23694.jpg',
title: 'Орел и решка. Морской сезон',
description: 'Орел и решка. Морской сезон. Ведущие -Алина Астровская и Коля Серга.'
}
])
})
it('can handle empty guide', () => {
const result = parser({
date,
channel,
content: fs.readFileSync(path.resolve(__dirname, '__data__/no_content.html'), 'utf8')
})
expect(result).toMatchObject([])
})

View File

@@ -1,15 +1,15 @@
# 9tv.co.il
https://www.9tv.co.il/BroadcastSchedule
### Download the guide
```sh
npm run grab --- --site=9tv.co.il
```
### Test
```sh
npm test --- 9tv.co.il
```
# 9tv.co.il
https://www.9tv.co.il/BroadcastSchedule
### Download the guide
```sh
npm run grab --- --site=9tv.co.il
```
### Test
```sh
npm test --- 9tv.co.il
```

View File

@@ -1,122 +1,122 @@
const axios = require('axios')
const dayjs = require('dayjs')
const utc = require('dayjs/plugin/utc')
const timezone = require('dayjs/plugin/timezone')
const customParseFormat = require('dayjs/plugin/customParseFormat')
dayjs.extend(utc)
dayjs.extend(timezone)
dayjs.extend(customParseFormat)
module.exports = {
site: 'abc.net.au',
days: 3,
request: {
cache: {
ttl: 60 * 60 * 1000 // 1 hour
}
},
url({ date, channel }) {
const [region] = channel.site_id.split('#')
return `https://cdn.iview.abc.net.au/epg/processed/${region}_${date.format('YYYY-MM-DD')}.json`
},
parser({ content, channel }) {
let programs = []
const items = parseItems(content, channel)
items.forEach(item => {
programs.push({
title: item.title,
sub_title: item.episode_title,
category: item.genres,
description: item.description,
season: parseSeason(item),
episode: parseEpisode(item),
rating: parseRating(item),
image: parseImage(item),
start: parseTime(item.start_time),
stop: parseTime(item.end_time)
})
})
return programs
},
async channels({ region = 'syd' }) {
const now = dayjs()
const regions = {
syd: 'Sydney',
mel: 'Melbourne',
bri: 'Brisbane',
gc: 'GoldCoast',
per: 'Perth',
adl: 'Adelaide',
hbr: 'Hobart',
drw: 'Darwin',
cbr: 'Canberra',
nsw: 'New South Wales',
vic: 'Victoria',
tsv: 'Townsville',
qld: 'Queensland',
wa: 'Western Australia',
sa: 'South Australia',
tas: 'Tasmania',
nt: 'Northern Territory'
}
let channels = []
const regionName = regions[region]
const data = await axios
.get(
`https://cdn.iview.abc.net.au/epg/processed/${regionName}_${now.format('YYYY-MM-DD')}.json`
)
.then(r => r.data)
.catch(console.log)
for (let item of data.schedule) {
channels.push({
lang: 'en',
site_id: `${regionName}#${item.channel}`,
name: item.channel
})
}
return channels
}
}
function parseItems(content, channel) {
try {
const data = JSON.parse(content)
if (!data) return []
if (!Array.isArray(data.schedule)) return []
const [, channelId] = channel.site_id.split('#')
const channelData = data.schedule.find(i => i.channel == channelId)
return channelData.listing && Array.isArray(channelData.listing) ? channelData.listing : []
} catch {
return []
}
}
function parseSeason(item) {
return item.series_num || null
}
function parseEpisode(item) {
return item.episode_num || null
}
function parseTime(time) {
return dayjs.tz(time, 'YYYY-MM-DD HH:mm', 'Australia/Sydney')
}
function parseImage(item) {
return item.image_file
? `https://www.abc.net.au/tv/common/images/publicity/${item.image_file}`
: null
}
function parseRating(item) {
return item.rating
? {
system: 'ACB',
value: item.rating
}
: null
}
const axios = require('axios')
const dayjs = require('dayjs')
const utc = require('dayjs/plugin/utc')
const timezone = require('dayjs/plugin/timezone')
const customParseFormat = require('dayjs/plugin/customParseFormat')
dayjs.extend(utc)
dayjs.extend(timezone)
dayjs.extend(customParseFormat)
module.exports = {
site: 'abc.net.au',
days: 3,
request: {
cache: {
ttl: 60 * 60 * 1000 // 1 hour
}
},
url({ date, channel }) {
const [region] = channel.site_id.split('#')
return `https://cdn.iview.abc.net.au/epg/processed/${region}_${date.format('YYYY-MM-DD')}.json`
},
parser({ content, channel }) {
let programs = []
const items = parseItems(content, channel)
items.forEach(item => {
programs.push({
title: item.title,
sub_title: item.episode_title,
category: item.genres,
description: item.description,
season: parseSeason(item),
episode: parseEpisode(item),
rating: parseRating(item),
image: parseImage(item),
start: parseTime(item.start_time),
stop: parseTime(item.end_time)
})
})
return programs
},
async channels({ region = 'syd' }) {
const now = dayjs()
const regions = {
syd: 'Sydney',
mel: 'Melbourne',
bri: 'Brisbane',
gc: 'GoldCoast',
per: 'Perth',
adl: 'Adelaide',
hbr: 'Hobart',
drw: 'Darwin',
cbr: 'Canberra',
nsw: 'New South Wales',
vic: 'Victoria',
tsv: 'Townsville',
qld: 'Queensland',
wa: 'Western Australia',
sa: 'South Australia',
tas: 'Tasmania',
nt: 'Northern Territory'
}
let channels = []
const regionName = regions[region]
const data = await axios
.get(
`https://cdn.iview.abc.net.au/epg/processed/${regionName}_${now.format('YYYY-MM-DD')}.json`
)
.then(r => r.data)
.catch(console.log)
for (let item of data.schedule) {
channels.push({
lang: 'en',
site_id: `${regionName}#${item.channel}`,
name: item.channel
})
}
return channels
}
}
function parseItems(content, channel) {
try {
const data = JSON.parse(content)
if (!data) return []
if (!Array.isArray(data.schedule)) return []
const [, channelId] = channel.site_id.split('#')
const channelData = data.schedule.find(i => i.channel == channelId)
return channelData.listing && Array.isArray(channelData.listing) ? channelData.listing : []
} catch {
return []
}
}
function parseSeason(item) {
return item.series_num || null
}
function parseEpisode(item) {
return item.episode_num || null
}
function parseTime(time) {
return dayjs.tz(time, 'YYYY-MM-DD HH:mm', 'Australia/Sydney')
}
function parseImage(item) {
return item.image_file
? `https://www.abc.net.au/tv/common/images/publicity/${item.image_file}`
: null
}
function parseRating(item) {
return item.rating
? {
system: 'ACB',
value: item.rating
}
: null
}

View File

@@ -1,51 +1,51 @@
const { parser, url } = require('./abc.net.au.config.js')
const fs = require('fs')
const path = require('path')
const dayjs = require('dayjs')
const utc = require('dayjs/plugin/utc')
dayjs.extend(utc)
const date = dayjs.utc('2025-02-04', 'YYYY-MM-DD').startOf('d')
const channel = { site_id: 'Sydney#ABC1' }
it('can generate valid url', () => {
expect(url({ date, channel })).toBe(
'https://cdn.iview.abc.net.au/epg/processed/Sydney_2025-02-04.json'
)
})
it('can parse response', () => {
const content = fs.readFileSync(path.resolve(__dirname, '__data__/content.json'))
const results = parser({ content, channel }).map(p => {
p.start = p.start.toJSON()
p.stop = p.stop.toJSON()
return p
})
expect(results.length).toBe(30)
expect(results[0]).toMatchObject({
title: "Julia Zemiro's Home Delivery",
sub_title: 'Maggie Beer',
description:
"The kitchen Maggie Beer made famous in The Cook and the Chef may be in the heart of the Barossa Valley, but our most beloved foodie meets up with Julia where she grew up in Sydney's Lakemba.",
category: ['Entertainment', 'Factual'],
rating: {
system: 'ACB',
value: 'G'
},
season: null,
episode: null,
image: 'https://www.abc.net.au/tv/common/images/publicity/LE1761H002S00_460.jpg',
start: '2025-02-03T12:40:00.000Z',
stop: '2025-02-03T13:09:00.000Z'
})
})
it('can handle empty guide', () => {
const results = parser({
content: fs.readFileSync(path.resolve(__dirname, '__data__/no_content.html')),
channel
})
expect(results).toMatchObject([])
})
const { parser, url } = require('./abc.net.au.config.js')
const fs = require('fs')
const path = require('path')
const dayjs = require('dayjs')
const utc = require('dayjs/plugin/utc')
dayjs.extend(utc)
const date = dayjs.utc('2025-02-04', 'YYYY-MM-DD').startOf('d')
const channel = { site_id: 'Sydney#ABC1' }
it('can generate valid url', () => {
expect(url({ date, channel })).toBe(
'https://cdn.iview.abc.net.au/epg/processed/Sydney_2025-02-04.json'
)
})
it('can parse response', () => {
const content = fs.readFileSync(path.resolve(__dirname, '__data__/content.json'))
const results = parser({ content, channel }).map(p => {
p.start = p.start.toJSON()
p.stop = p.stop.toJSON()
return p
})
expect(results.length).toBe(30)
expect(results[0]).toMatchObject({
title: "Julia Zemiro's Home Delivery",
sub_title: 'Maggie Beer',
description:
"The kitchen Maggie Beer made famous in The Cook and the Chef may be in the heart of the Barossa Valley, but our most beloved foodie meets up with Julia where she grew up in Sydney's Lakemba.",
category: ['Entertainment', 'Factual'],
rating: {
system: 'ACB',
value: 'G'
},
season: null,
episode: null,
image: 'https://www.abc.net.au/tv/common/images/publicity/LE1761H002S00_460.jpg',
start: '2025-02-03T12:40:00.000Z',
stop: '2025-02-03T13:09:00.000Z'
})
})
it('can handle empty guide', () => {
const results = parser({
content: fs.readFileSync(path.resolve(__dirname, '__data__/no_content.html')),
channel
})
expect(results).toMatchObject([])
})

View File

@@ -1,38 +1,38 @@
<?xml version="1.0" encoding="UTF-8"?>
<channels>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Adelaide#7">7</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Adelaide#7bravo">7bravo</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Adelaide#7flix">7flix</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Adelaide#7HD">7HD</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Adelaide#7MATE">7MATE</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Adelaide#7TWO">7TWO</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Adelaide#9">9</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Adelaide#9HD">9HD</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Adelaide#9Life">9Life</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Adelaide#9Rush">9Rush</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Adelaide#10">10</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Adelaide#11">11</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Adelaide#44">44</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Adelaide#ABC1">ABC1</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Adelaide#ABC2">ABC2</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Adelaide#ABC3">ABC3</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Adelaide#ABC4KIDS">ABC4KIDS</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Adelaide#ABCHD">ABCHD</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Adelaide#ABCN">ABCN</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Adelaide#GEM">GEM</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Adelaide#GO">GO</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Adelaide#NITV">NITV</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Adelaide#ONE">ONE</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Adelaide#RTV">RTV</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Adelaide#SBS">SBS</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Adelaide#SBS2">SBS2</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Adelaide#SBS3">SBS3</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Adelaide#SBSHD">SBSHD</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Adelaide#SBSWW">SBSWW</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Adelaide#SHAKE">SHAKE</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Adelaide#SPREE">SPREE</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Adelaide#TENHD">TENHD</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Adelaide#TVSN">TVSN</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Adelaide#VICHD">VICHD</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Adelaide#YOUTV">YOUTV</channel>
</channels>
<?xml version="1.0" encoding="UTF-8"?>
<channels>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Adelaide#7">7</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Adelaide#7bravo">7bravo</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Adelaide#7flix">7flix</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Adelaide#7HD">7HD</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Adelaide#7MATE">7MATE</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Adelaide#7TWO">7TWO</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Adelaide#9">9</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Adelaide#9HD">9HD</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Adelaide#9Life">9Life</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Adelaide#9Rush">9Rush</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Adelaide#10">10</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Adelaide#11">11</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Adelaide#44">44</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Adelaide#ABC1">ABC1</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Adelaide#ABC2">ABC2</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Adelaide#ABC3">ABC3</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Adelaide#ABC4KIDS">ABC4KIDS</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Adelaide#ABCHD">ABCHD</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Adelaide#ABCN">ABCN</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Adelaide#GEM">GEM</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Adelaide#GO">GO</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Adelaide#NITV">NITV</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Adelaide#ONE">ONE</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Adelaide#RTV">RTV</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Adelaide#SBS">SBS</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Adelaide#SBS2">SBS2</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Adelaide#SBS3">SBS3</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Adelaide#SBSHD">SBSHD</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Adelaide#SBSWW">SBSWW</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Adelaide#SHAKE">SHAKE</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Adelaide#SPREE">SPREE</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Adelaide#TENHD">TENHD</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Adelaide#TVSN">TVSN</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Adelaide#VICHD">VICHD</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Adelaide#YOUTV">YOUTV</channel>
</channels>

View File

@@ -1,37 +1,37 @@
<?xml version="1.0" encoding="UTF-8"?>
<channels>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Brisbane#7">7</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Brisbane#7bravo">7bravo</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Brisbane#7flix">7flix</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Brisbane#7HD">7HD</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Brisbane#7MATE">7MATE</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Brisbane#7TWO">7TWO</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Brisbane#9">9</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Brisbane#9HD">9HD</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Brisbane#9Life">9Life</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Brisbane#9Rush">9Rush</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Brisbane#10">10</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Brisbane#11">11</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Brisbane#ABC1">ABC1</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Brisbane#ABC2">ABC2</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Brisbane#ABC3">ABC3</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Brisbane#ABC4KIDS">ABC4KIDS</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Brisbane#ABCHD">ABCHD</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Brisbane#ABCN">ABCN</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Brisbane#GEM">GEM</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Brisbane#GO">GO</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Brisbane#NITV">NITV</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Brisbane#ONE">ONE</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Brisbane#RTV">RTV</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Brisbane#SBS">SBS</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Brisbane#SBS2">SBS2</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Brisbane#SBS3">SBS3</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Brisbane#SBSHD">SBSHD</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Brisbane#SBSWW">SBSWW</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Brisbane#SHAKE">SHAKE</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Brisbane#SPREE">SPREE</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Brisbane#TENHD">TENHD</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Brisbane#TVSN">TVSN</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Brisbane#VICHD">VICHD</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Brisbane#YOUTV">YOUTV</channel>
</channels>
<?xml version="1.0" encoding="UTF-8"?>
<channels>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Brisbane#7">7</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Brisbane#7bravo">7bravo</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Brisbane#7flix">7flix</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Brisbane#7HD">7HD</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Brisbane#7MATE">7MATE</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Brisbane#7TWO">7TWO</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Brisbane#9">9</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Brisbane#9HD">9HD</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Brisbane#9Life">9Life</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Brisbane#9Rush">9Rush</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Brisbane#10">10</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Brisbane#11">11</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Brisbane#ABC1">ABC1</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Brisbane#ABC2">ABC2</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Brisbane#ABC3">ABC3</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Brisbane#ABC4KIDS">ABC4KIDS</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Brisbane#ABCHD">ABCHD</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Brisbane#ABCN">ABCN</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Brisbane#GEM">GEM</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Brisbane#GO">GO</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Brisbane#NITV">NITV</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Brisbane#ONE">ONE</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Brisbane#RTV">RTV</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Brisbane#SBS">SBS</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Brisbane#SBS2">SBS2</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Brisbane#SBS3">SBS3</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Brisbane#SBSHD">SBSHD</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Brisbane#SBSWW">SBSWW</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Brisbane#SHAKE">SHAKE</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Brisbane#SPREE">SPREE</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Brisbane#TENHD">TENHD</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Brisbane#TVSN">TVSN</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Brisbane#VICHD">VICHD</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Brisbane#YOUTV">YOUTV</channel>
</channels>

View File

@@ -1,35 +1,35 @@
<?xml version="1.0" encoding="UTF-8"?>
<channels>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Canberra#7bravo">7bravo</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Canberra#7flix">7flix</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Canberra#7MATE">7MATE</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Canberra#7TWO">7TWO</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Canberra#9Life">9Life</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Canberra#11">11</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Canberra#ABC1">ABC1</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Canberra#ABC2">ABC2</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Canberra#ABC3">ABC3</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Canberra#ABC4KIDS">ABC4KIDS</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Canberra#ABCHD">ABCHD</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Canberra#ABCN">ABCN</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Canberra#ASPIR">ASPIR</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Canberra#GEM">GEM</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Canberra#GO">GO</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Canberra#NITV">NITV</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Canberra#ONE">ONE</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Canberra#PrimS">PrimS</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Canberra#RTV">RTV</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Canberra#SBS">SBS</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Canberra#SBS2">SBS2</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Canberra#SBS3">SBS3</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Canberra#SBSHD">SBSHD</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Canberra#SBSWW">SBSWW</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Canberra#SCA9">SCA9</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Canberra#SCHD">SCHD</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Canberra#SHAKE">SHAKE</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Canberra#SNR">SNR</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Canberra#TVSN">TVSN</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Canberra#VICHD">VICHD</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Canberra#WIN">WIN</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Canberra#WINHD">WINHD</channel>
</channels>
<?xml version="1.0" encoding="UTF-8"?>
<channels>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Canberra#7bravo">7bravo</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Canberra#7flix">7flix</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Canberra#7MATE">7MATE</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Canberra#7TWO">7TWO</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Canberra#9Life">9Life</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Canberra#11">11</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Canberra#ABC1">ABC1</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Canberra#ABC2">ABC2</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Canberra#ABC3">ABC3</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Canberra#ABC4KIDS">ABC4KIDS</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Canberra#ABCHD">ABCHD</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Canberra#ABCN">ABCN</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Canberra#ASPIR">ASPIR</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Canberra#GEM">GEM</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Canberra#GO">GO</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Canberra#NITV">NITV</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Canberra#ONE">ONE</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Canberra#PrimS">PrimS</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Canberra#RTV">RTV</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Canberra#SBS">SBS</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Canberra#SBS2">SBS2</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Canberra#SBS3">SBS3</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Canberra#SBSHD">SBSHD</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Canberra#SBSWW">SBSWW</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Canberra#SCA9">SCA9</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Canberra#SCHD">SCHD</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Canberra#SHAKE">SHAKE</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Canberra#SNR">SNR</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Canberra#TVSN">TVSN</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Canberra#VICHD">VICHD</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Canberra#WIN">WIN</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Canberra#WINHD">WINHD</channel>
</channels>

View File

@@ -1,29 +1,29 @@
<?xml version="1.0" encoding="UTF-8"?>
<channels>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Darwin#7MATE">7MATE</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Darwin#7TWO">7TWO</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Darwin#9">9</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Darwin#9HD">9HD</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Darwin#9Life">9Life</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Darwin#11">11</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Darwin#ABC1">ABC1</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Darwin#ABC2">ABC2</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Darwin#ABC3">ABC3</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Darwin#ABC4KIDS">ABC4KIDS</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Darwin#ABCHD">ABCHD</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Darwin#ABCN">ABCN</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Darwin#ASPIR">ASPIR</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Darwin#DDT">DDT</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Darwin#GEM">GEM</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Darwin#GO">GO</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Darwin#NITV">NITV</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Darwin#ONE">ONE</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Darwin#RTV">RTV</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Darwin#SBS">SBS</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Darwin#SBS2">SBS2</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Darwin#SBS3">SBS3</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Darwin#SBSHD">SBSHD</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Darwin#SBSWW">SBSWW</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Darwin#SC">SC</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Darwin#VICHD">VICHD</channel>
</channels>
<?xml version="1.0" encoding="UTF-8"?>
<channels>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Darwin#7MATE">7MATE</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Darwin#7TWO">7TWO</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Darwin#9">9</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Darwin#9HD">9HD</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Darwin#9Life">9Life</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Darwin#11">11</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Darwin#ABC1">ABC1</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Darwin#ABC2">ABC2</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Darwin#ABC3">ABC3</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Darwin#ABC4KIDS">ABC4KIDS</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Darwin#ABCHD">ABCHD</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Darwin#ABCN">ABCN</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Darwin#ASPIR">ASPIR</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Darwin#DDT">DDT</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Darwin#GEM">GEM</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Darwin#GO">GO</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Darwin#NITV">NITV</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Darwin#ONE">ONE</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Darwin#RTV">RTV</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Darwin#SBS">SBS</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Darwin#SBS2">SBS2</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Darwin#SBS3">SBS3</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Darwin#SBSHD">SBSHD</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Darwin#SBSWW">SBSWW</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Darwin#SC">SC</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Darwin#VICHD">VICHD</channel>
</channels>

View File

@@ -1,36 +1,36 @@
<?xml version="1.0" encoding="UTF-8"?>
<channels>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="GoldCoast#7bravo">7bravo</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="GoldCoast#7flix">7flix</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="GoldCoast#7MATE">7MATE</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="GoldCoast#7TWO">7TWO</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="GoldCoast#9">9</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="GoldCoast#9HD">9HD</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="GoldCoast#9Life">9Life</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="GoldCoast#10">10</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="GoldCoast#10Nth">10Nth</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="GoldCoast#11">11</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="GoldCoast#ABC1">ABC1</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="GoldCoast#ABC2">ABC2</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="GoldCoast#ABC3">ABC3</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="GoldCoast#ABC4KIDS">ABC4KIDS</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="GoldCoast#ABCHD">ABCHD</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="GoldCoast#ABCN">ABCN</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="GoldCoast#GEM">GEM</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="GoldCoast#GO">GO</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="GoldCoast#NBN">NBN</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="GoldCoast#NITV">NITV</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="GoldCoast#ONE">ONE</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="GoldCoast#Prime">Prime</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="GoldCoast#RTV">RTV</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="GoldCoast#SBS">SBS</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="GoldCoast#SBS2">SBS2</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="GoldCoast#SBS3">SBS3</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="GoldCoast#SBSHD">SBSHD</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="GoldCoast#SBSWW">SBSWW</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="GoldCoast#SHAKE">SHAKE</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="GoldCoast#SNR">SNR</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="GoldCoast#TVSN">TVSN</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="GoldCoast#VICHD">VICHD</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="GoldCoast#YOUTV">YOUTV</channel>
</channels>
<?xml version="1.0" encoding="UTF-8"?>
<channels>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="GoldCoast#7bravo">7bravo</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="GoldCoast#7flix">7flix</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="GoldCoast#7MATE">7MATE</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="GoldCoast#7TWO">7TWO</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="GoldCoast#9">9</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="GoldCoast#9HD">9HD</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="GoldCoast#9Life">9Life</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="GoldCoast#10">10</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="GoldCoast#10Nth">10Nth</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="GoldCoast#11">11</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="GoldCoast#ABC1">ABC1</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="GoldCoast#ABC2">ABC2</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="GoldCoast#ABC3">ABC3</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="GoldCoast#ABC4KIDS">ABC4KIDS</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="GoldCoast#ABCHD">ABCHD</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="GoldCoast#ABCN">ABCN</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="GoldCoast#GEM">GEM</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="GoldCoast#GO">GO</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="GoldCoast#NBN">NBN</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="GoldCoast#NITV">NITV</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="GoldCoast#ONE">ONE</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="GoldCoast#Prime">Prime</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="GoldCoast#RTV">RTV</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="GoldCoast#SBS">SBS</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="GoldCoast#SBS2">SBS2</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="GoldCoast#SBS3">SBS3</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="GoldCoast#SBSHD">SBSHD</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="GoldCoast#SBSWW">SBSWW</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="GoldCoast#SHAKE">SHAKE</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="GoldCoast#SNR">SNR</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="GoldCoast#TVSN">TVSN</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="GoldCoast#VICHD">VICHD</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="GoldCoast#YOUTV">YOUTV</channel>
</channels>

View File

@@ -1,35 +1,35 @@
<?xml version="1.0" encoding="UTF-8"?>
<channels>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Hobart#7MATE">7MATE</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Hobart#7TWO">7TWO</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Hobart#9Life">9Life</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Hobart#11">11</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Hobart#ABC1">ABC1</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Hobart#ABC2">ABC2</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Hobart#ABC3">ABC3</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Hobart#ABC4KIDS">ABC4KIDS</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Hobart#ABCHD">ABCHD</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Hobart#ABCN">ABCN</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Hobart#GEM">GEM</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Hobart#GO">GO</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Hobart#NITV">NITV</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Hobart#ONE">ONE</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Hobart#RTV">RTV</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Hobart#SBS">SBS</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Hobart#SBS2">SBS2</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Hobart#SBS3">SBS3</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Hobart#SBSHD">SBSHD</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Hobart#SBSWW">SBSWW</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Hobart#SC">SC</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Hobart#SCA9">SCA9</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Hobart#SCHD">SCHD</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Hobart#SHAKE">SHAKE</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Hobart#SHD7">SHD7</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Hobart#TDHD">TDHD</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Hobart#TDT">TDT</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Hobart#TVSN">TVSN</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Hobart#VICHD">VICHD</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Hobart#WIN">WIN</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Hobart#WINHD">WINHD</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Hobart#YOUTV">YOUTV</channel>
</channels>
<?xml version="1.0" encoding="UTF-8"?>
<channels>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Hobart#7MATE">7MATE</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Hobart#7TWO">7TWO</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Hobart#9Life">9Life</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Hobart#11">11</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Hobart#ABC1">ABC1</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Hobart#ABC2">ABC2</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Hobart#ABC3">ABC3</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Hobart#ABC4KIDS">ABC4KIDS</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Hobart#ABCHD">ABCHD</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Hobart#ABCN">ABCN</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Hobart#GEM">GEM</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Hobart#GO">GO</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Hobart#NITV">NITV</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Hobart#ONE">ONE</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Hobart#RTV">RTV</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Hobart#SBS">SBS</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Hobart#SBS2">SBS2</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Hobart#SBS3">SBS3</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Hobart#SBSHD">SBSHD</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Hobart#SBSWW">SBSWW</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Hobart#SC">SC</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Hobart#SCA9">SCA9</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Hobart#SCHD">SCHD</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Hobart#SHAKE">SHAKE</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Hobart#SHD7">SHD7</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Hobart#TDHD">TDHD</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Hobart#TDT">TDT</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Hobart#TVSN">TVSN</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Hobart#VICHD">VICHD</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Hobart#WIN">WIN</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Hobart#WINHD">WINHD</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Hobart#YOUTV">YOUTV</channel>
</channels>

View File

@@ -1,38 +1,38 @@
<?xml version="1.0" encoding="UTF-8"?>
<channels>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Melbourne#7">7</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Melbourne#7bravo">7bravo</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Melbourne#7flix">7flix</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Melbourne#7HD">7HD</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Melbourne#7MATE">7MATE</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Melbourne#7TWO">7TWO</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Melbourne#9">9</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Melbourne#9HD">9HD</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Melbourne#9Life">9Life</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Melbourne#9Rush">9Rush</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Melbourne#10">10</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Melbourne#11">11</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Melbourne#31">31</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Melbourne#ABC1">ABC1</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Melbourne#ABC2">ABC2</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Melbourne#ABC3">ABC3</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Melbourne#ABC4KIDS">ABC4KIDS</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Melbourne#ABCHD">ABCHD</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Melbourne#ABCN">ABCN</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Melbourne#GEM">GEM</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Melbourne#GO">GO</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Melbourne#NITV">NITV</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Melbourne#ONE">ONE</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Melbourne#RTV">RTV</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Melbourne#SBS">SBS</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Melbourne#SBS2">SBS2</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Melbourne#SBS3">SBS3</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Melbourne#SBSHD">SBSHD</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Melbourne#SBSWW">SBSWW</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Melbourne#SHAKE">SHAKE</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Melbourne#SPREE">SPREE</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Melbourne#TENHD">TENHD</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Melbourne#TVSN">TVSN</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Melbourne#VICHD">VICHD</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Melbourne#YOUTV">YOUTV</channel>
</channels>
<?xml version="1.0" encoding="UTF-8"?>
<channels>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Melbourne#7">7</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Melbourne#7bravo">7bravo</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Melbourne#7flix">7flix</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Melbourne#7HD">7HD</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Melbourne#7MATE">7MATE</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Melbourne#7TWO">7TWO</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Melbourne#9">9</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Melbourne#9HD">9HD</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Melbourne#9Life">9Life</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Melbourne#9Rush">9Rush</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Melbourne#10">10</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Melbourne#11">11</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Melbourne#31">31</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Melbourne#ABC1">ABC1</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Melbourne#ABC2">ABC2</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Melbourne#ABC3">ABC3</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Melbourne#ABC4KIDS">ABC4KIDS</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Melbourne#ABCHD">ABCHD</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Melbourne#ABCN">ABCN</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Melbourne#GEM">GEM</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Melbourne#GO">GO</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Melbourne#NITV">NITV</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Melbourne#ONE">ONE</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Melbourne#RTV">RTV</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Melbourne#SBS">SBS</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Melbourne#SBS2">SBS2</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Melbourne#SBS3">SBS3</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Melbourne#SBSHD">SBSHD</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Melbourne#SBSWW">SBSWW</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Melbourne#SHAKE">SHAKE</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Melbourne#SPREE">SPREE</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Melbourne#TENHD">TENHD</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Melbourne#TVSN">TVSN</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Melbourne#VICHD">VICHD</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Melbourne#YOUTV">YOUTV</channel>
</channels>

View File

@@ -1,41 +1,41 @@
<?xml version="1.0" encoding="UTF-8"?>
<channels>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="New South Wales#7">7</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="New South Wales#7bravo">7bravo</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="New South Wales#7flix">7flix</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="New South Wales#7GTS">7GTS</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="New South Wales#7MATE">7MATE</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="New South Wales#7TWO">7TWO</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="New South Wales#9Life">9Life</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="New South Wales#10Nth">10Nth</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="New South Wales#11">11</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="New South Wales#ABC1">ABC1</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="New South Wales#ABC2">ABC2</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="New South Wales#ABC3">ABC3</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="New South Wales#ABC4KIDS">ABC4KIDS</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="New South Wales#ABCHD">ABCHD</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="New South Wales#ABCN">ABCN</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="New South Wales#ASPIR">ASPIR</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="New South Wales#GEM">GEM</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="New South Wales#GO">GO</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="New South Wales#Imp">Imp</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="New South Wales#NBN">NBN</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="New South Wales#NITV">NITV</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="New South Wales#ONE">ONE</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="New South Wales#PrimN">PrimN</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="New South Wales#PrimS">PrimS</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="New South Wales#RTV">RTV</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="New South Wales#SBS">SBS</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="New South Wales#SBS2">SBS2</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="New South Wales#SBS3">SBS3</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="New South Wales#SBSHD">SBSHD</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="New South Wales#SBSWW">SBSWW</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="New South Wales#SCA9">SCA9</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="New South Wales#SCHD">SCHD</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="New South Wales#SNR">SNR</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="New South Wales#TVSN">TVSN</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="New South Wales#VICHD">VICHD</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="New South Wales#WIN">WIN</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="New South Wales#WINHD">WINHD</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="New South Wales#YOUTV">YOUTV</channel>
</channels>
<?xml version="1.0" encoding="UTF-8"?>
<channels>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="New South Wales#7">7</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="New South Wales#7bravo">7bravo</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="New South Wales#7flix">7flix</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="New South Wales#7GTS">7GTS</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="New South Wales#7MATE">7MATE</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="New South Wales#7TWO">7TWO</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="New South Wales#9Life">9Life</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="New South Wales#10Nth">10Nth</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="New South Wales#11">11</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="New South Wales#ABC1">ABC1</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="New South Wales#ABC2">ABC2</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="New South Wales#ABC3">ABC3</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="New South Wales#ABC4KIDS">ABC4KIDS</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="New South Wales#ABCHD">ABCHD</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="New South Wales#ABCN">ABCN</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="New South Wales#ASPIR">ASPIR</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="New South Wales#GEM">GEM</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="New South Wales#GO">GO</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="New South Wales#Imp">Imp</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="New South Wales#NBN">NBN</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="New South Wales#NITV">NITV</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="New South Wales#ONE">ONE</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="New South Wales#PrimN">PrimN</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="New South Wales#PrimS">PrimS</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="New South Wales#RTV">RTV</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="New South Wales#SBS">SBS</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="New South Wales#SBS2">SBS2</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="New South Wales#SBS3">SBS3</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="New South Wales#SBSHD">SBSHD</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="New South Wales#SBSWW">SBSWW</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="New South Wales#SCA9">SCA9</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="New South Wales#SCHD">SCHD</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="New South Wales#SNR">SNR</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="New South Wales#TVSN">TVSN</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="New South Wales#VICHD">VICHD</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="New South Wales#WIN">WIN</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="New South Wales#WINHD">WINHD</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="New South Wales#YOUTV">YOUTV</channel>
</channels>

View File

@@ -1,25 +1,25 @@
<?xml version="1.0" encoding="UTF-8"?>
<channels>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Northern Territory#7C">7C</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Northern Territory#7MATE">7MATE</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Northern Territory#7TWO">7TWO</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Northern Territory#10">10</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Northern Territory#11">11</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Northern Territory#ABC1">ABC1</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Northern Territory#ABC2">ABC2</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Northern Territory#ABC3">ABC3</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Northern Territory#ABC4KIDS">ABC4KIDS</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Northern Territory#ABCHD">ABCHD</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Northern Territory#ABCN">ABCN</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Northern Territory#GEM">GEM</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Northern Territory#GO">GO</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Northern Territory#Imp">Imp</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Northern Territory#NITV">NITV</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Northern Territory#ONE">ONE</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Northern Territory#SBS">SBS</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Northern Territory#SBS2">SBS2</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Northern Territory#SBS3">SBS3</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Northern Territory#SBSHD">SBSHD</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Northern Territory#SBSWW">SBSWW</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Northern Territory#VICHD">VICHD</channel>
</channels>
<?xml version="1.0" encoding="UTF-8"?>
<channels>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Northern Territory#7C">7C</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Northern Territory#7MATE">7MATE</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Northern Territory#7TWO">7TWO</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Northern Territory#10">10</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Northern Territory#11">11</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Northern Territory#ABC1">ABC1</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Northern Territory#ABC2">ABC2</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Northern Territory#ABC3">ABC3</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Northern Territory#ABC4KIDS">ABC4KIDS</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Northern Territory#ABCHD">ABCHD</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Northern Territory#ABCN">ABCN</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Northern Territory#GEM">GEM</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Northern Territory#GO">GO</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Northern Territory#Imp">Imp</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Northern Territory#NITV">NITV</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Northern Territory#ONE">ONE</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Northern Territory#SBS">SBS</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Northern Territory#SBS2">SBS2</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Northern Territory#SBS3">SBS3</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Northern Territory#SBSHD">SBSHD</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Northern Territory#SBSWW">SBSWW</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Northern Territory#VICHD">VICHD</channel>
</channels>

View File

@@ -1,37 +1,37 @@
<?xml version="1.0" encoding="UTF-8"?>
<channels>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Perth#7">7</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Perth#7bravo">7bravo</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Perth#7flix">7flix</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Perth#7HD">7HD</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Perth#7MATE">7MATE</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Perth#7TWO">7TWO</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Perth#9">9</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Perth#9HD">9HD</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Perth#9Life">9Life</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Perth#9Rush">9Rush</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Perth#10">10</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Perth#11">11</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Perth#ABC1">ABC1</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Perth#ABC2">ABC2</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Perth#ABC3">ABC3</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Perth#ABC4KIDS">ABC4KIDS</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Perth#ABCHD">ABCHD</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Perth#ABCN">ABCN</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Perth#GEM">GEM</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Perth#GO">GO</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Perth#NITV">NITV</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Perth#ONE">ONE</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Perth#RTV">RTV</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Perth#SBS">SBS</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Perth#SBS2">SBS2</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Perth#SBS3">SBS3</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Perth#SBSHD">SBSHD</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Perth#SBSWW">SBSWW</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Perth#SHAKE">SHAKE</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Perth#SPREE">SPREE</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Perth#TENHD">TENHD</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Perth#TVSN">TVSN</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Perth#VICHD">VICHD</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Perth#YOUTV">YOUTV</channel>
</channels>
<?xml version="1.0" encoding="UTF-8"?>
<channels>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Perth#7">7</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Perth#7bravo">7bravo</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Perth#7flix">7flix</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Perth#7HD">7HD</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Perth#7MATE">7MATE</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Perth#7TWO">7TWO</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Perth#9">9</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Perth#9HD">9HD</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Perth#9Life">9Life</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Perth#9Rush">9Rush</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Perth#10">10</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Perth#11">11</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Perth#ABC1">ABC1</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Perth#ABC2">ABC2</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Perth#ABC3">ABC3</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Perth#ABC4KIDS">ABC4KIDS</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Perth#ABCHD">ABCHD</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Perth#ABCN">ABCN</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Perth#GEM">GEM</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Perth#GO">GO</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Perth#NITV">NITV</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Perth#ONE">ONE</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Perth#RTV">RTV</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Perth#SBS">SBS</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Perth#SBS2">SBS2</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Perth#SBS3">SBS3</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Perth#SBSHD">SBSHD</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Perth#SBSWW">SBSWW</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Perth#SHAKE">SHAKE</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Perth#SPREE">SPREE</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Perth#TENHD">TENHD</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Perth#TVSN">TVSN</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Perth#VICHD">VICHD</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Perth#YOUTV">YOUTV</channel>
</channels>

View File

@@ -1,39 +1,39 @@
<?xml version="1.0" encoding="UTF-8"?>
<channels>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Queensland#7bravo">7bravo</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Queensland#7C">7C</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Queensland#7flix">7flix</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Queensland#7MATE">7MATE</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Queensland#7QLD">7QLD</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Queensland#7TWO">7TWO</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Queensland#7TWOQ">7TWOQ</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Queensland#9Life">9Life</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Queensland#10">10</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Queensland#11">11</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Queensland#ABC1">ABC1</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Queensland#ABC2">ABC2</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Queensland#ABC3">ABC3</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Queensland#ABC4KIDS">ABC4KIDS</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Queensland#ABCHD">ABCHD</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Queensland#ABCN">ABCN</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Queensland#ASPIR">ASPIR</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Queensland#GEM">GEM</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Queensland#GO">GO</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Queensland#Imp">Imp</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Queensland#NITV">NITV</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Queensland#ONE">ONE</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Queensland#RTV">RTV</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Queensland#SBS">SBS</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Queensland#SBS2">SBS2</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Queensland#SBS3">SBS3</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Queensland#SBSHD">SBSHD</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Queensland#SBSWW">SBSWW</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Queensland#SCA9">SCA9</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Queensland#SCHD">SCHD</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Queensland#SHAKE">SHAKE</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Queensland#SNR">SNR</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Queensland#TVSN">TVSN</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Queensland#VICHD">VICHD</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Queensland#WIN">WIN</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Queensland#WINHD">WINHD</channel>
</channels>
<?xml version="1.0" encoding="UTF-8"?>
<channels>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Queensland#7bravo">7bravo</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Queensland#7C">7C</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Queensland#7flix">7flix</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Queensland#7MATE">7MATE</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Queensland#7QLD">7QLD</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Queensland#7TWO">7TWO</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Queensland#7TWOQ">7TWOQ</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Queensland#9Life">9Life</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Queensland#10">10</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Queensland#11">11</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Queensland#ABC1">ABC1</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Queensland#ABC2">ABC2</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Queensland#ABC3">ABC3</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Queensland#ABC4KIDS">ABC4KIDS</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Queensland#ABCHD">ABCHD</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Queensland#ABCN">ABCN</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Queensland#ASPIR">ASPIR</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Queensland#GEM">GEM</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Queensland#GO">GO</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Queensland#Imp">Imp</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Queensland#NITV">NITV</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Queensland#ONE">ONE</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Queensland#RTV">RTV</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Queensland#SBS">SBS</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Queensland#SBS2">SBS2</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Queensland#SBS3">SBS3</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Queensland#SBSHD">SBSHD</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Queensland#SBSWW">SBSWW</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Queensland#SCA9">SCA9</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Queensland#SCHD">SCHD</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Queensland#SHAKE">SHAKE</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Queensland#SNR">SNR</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Queensland#TVSN">TVSN</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Queensland#VICHD">VICHD</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Queensland#WIN">WIN</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Queensland#WINHD">WINHD</channel>
</channels>

View File

@@ -1,35 +1,35 @@
<?xml version="1.0" encoding="UTF-8"?>
<channels>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="South Australia#7C">7C</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="South Australia#7GTS">7GTS</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="South Australia#7MATE">7MATE</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="South Australia#7TWO">7TWO</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="South Australia#9Life">9Life</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="South Australia#10">10</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="South Australia#11">11</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="South Australia#ABC1">ABC1</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="South Australia#ABC2">ABC2</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="South Australia#ABC3">ABC3</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="South Australia#ABC4KIDS">ABC4KIDS</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="South Australia#ABCHD">ABCHD</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="South Australia#ABCN">ABCN</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="South Australia#ASPIR">ASPIR</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="South Australia#GEM">GEM</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="South Australia#GO">GO</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="South Australia#Imp">Imp</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="South Australia#NITV">NITV</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="South Australia#ONE">ONE</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="South Australia#RTV">RTV</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="South Australia#SBS">SBS</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="South Australia#SBS2">SBS2</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="South Australia#SBS3">SBS3</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="South Australia#SBSHD">SBSHD</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="South Australia#SBSWW">SBSWW</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="South Australia#SC9">SC9</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="South Australia#SNR">SNR</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="South Australia#VICHD">VICHD</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="South Australia#WIN">WIN</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="South Australia#WIN9">WIN9</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="South Australia#WIN10">WIN10</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="South Australia#WINHD">WINHD</channel>
</channels>
<?xml version="1.0" encoding="UTF-8"?>
<channels>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="South Australia#7C">7C</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="South Australia#7GTS">7GTS</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="South Australia#7MATE">7MATE</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="South Australia#7TWO">7TWO</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="South Australia#9Life">9Life</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="South Australia#10">10</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="South Australia#11">11</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="South Australia#ABC1">ABC1</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="South Australia#ABC2">ABC2</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="South Australia#ABC3">ABC3</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="South Australia#ABC4KIDS">ABC4KIDS</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="South Australia#ABCHD">ABCHD</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="South Australia#ABCN">ABCN</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="South Australia#ASPIR">ASPIR</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="South Australia#GEM">GEM</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="South Australia#GO">GO</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="South Australia#Imp">Imp</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="South Australia#NITV">NITV</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="South Australia#ONE">ONE</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="South Australia#RTV">RTV</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="South Australia#SBS">SBS</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="South Australia#SBS2">SBS2</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="South Australia#SBS3">SBS3</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="South Australia#SBSHD">SBSHD</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="South Australia#SBSWW">SBSWW</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="South Australia#SC9">SC9</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="South Australia#SNR">SNR</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="South Australia#VICHD">VICHD</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="South Australia#WIN">WIN</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="South Australia#WIN9">WIN9</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="South Australia#WIN10">WIN10</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="South Australia#WINHD">WINHD</channel>
</channels>

View File

@@ -1,37 +1,37 @@
<?xml version="1.0" encoding="UTF-8"?>
<channels>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Sydney#7">7</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Sydney#7bravo">7bravo</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Sydney#7flix">7flix</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Sydney#7HD">7HD</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Sydney#7MATE">7MATE</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Sydney#7TWO">7TWO</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Sydney#9">9</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Sydney#9HD">9HD</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Sydney#9Life">9Life</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Sydney#9Rush">9Rush</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Sydney#10">10</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Sydney#11">11</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Sydney#ABC1">ABC1</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Sydney#ABC2">ABC2</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Sydney#ABC3">ABC3</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Sydney#ABC4KIDS">ABC4KIDS</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Sydney#ABCHD">ABCHD</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Sydney#ABCN">ABCN</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Sydney#GEM">GEM</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Sydney#GO">GO</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Sydney#NITV">NITV</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Sydney#ONE">ONE</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Sydney#RTV">RTV</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Sydney#SBS">SBS</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Sydney#SBS2">SBS2</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Sydney#SBS3">SBS3</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Sydney#SBSHD">SBSHD</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Sydney#SBSWW">SBSWW</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Sydney#SHAKE">SHAKE</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Sydney#SPREE">SPREE</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Sydney#TENHD">TENHD</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Sydney#TVSN">TVSN</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Sydney#VICHD">VICHD</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Sydney#YOUTV">YOUTV</channel>
</channels>
<?xml version="1.0" encoding="UTF-8"?>
<channels>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Sydney#7">7</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Sydney#7bravo">7bravo</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Sydney#7flix">7flix</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Sydney#7HD">7HD</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Sydney#7MATE">7MATE</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Sydney#7TWO">7TWO</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Sydney#9">9</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Sydney#9HD">9HD</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Sydney#9Life">9Life</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Sydney#9Rush">9Rush</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Sydney#10">10</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Sydney#11">11</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Sydney#ABC1">ABC1</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Sydney#ABC2">ABC2</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Sydney#ABC3">ABC3</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Sydney#ABC4KIDS">ABC4KIDS</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Sydney#ABCHD">ABCHD</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Sydney#ABCN">ABCN</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Sydney#GEM">GEM</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Sydney#GO">GO</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Sydney#NITV">NITV</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Sydney#ONE">ONE</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Sydney#RTV">RTV</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Sydney#SBS">SBS</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Sydney#SBS2">SBS2</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Sydney#SBS3">SBS3</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Sydney#SBSHD">SBSHD</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Sydney#SBSWW">SBSWW</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Sydney#SHAKE">SHAKE</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Sydney#SPREE">SPREE</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Sydney#TENHD">TENHD</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Sydney#TVSN">TVSN</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Sydney#VICHD">VICHD</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Sydney#YOUTV">YOUTV</channel>
</channels>

View File

@@ -1,36 +1,36 @@
<?xml version="1.0" encoding="UTF-8"?>
<channels>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Tasmania#7MATE">7MATE</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Tasmania#7TWO">7TWO</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Tasmania#9Life">9Life</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Tasmania#11">11</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Tasmania#ABC1">ABC1</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Tasmania#ABC2">ABC2</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Tasmania#ABC3">ABC3</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Tasmania#ABC4KIDS">ABC4KIDS</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Tasmania#ABCHD">ABCHD</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Tasmania#ABCN">ABCN</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Tasmania#ASPIR">ASPIR</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Tasmania#GEM">GEM</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Tasmania#GO">GO</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Tasmania#NITV">NITV</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Tasmania#ONE">ONE</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Tasmania#RTV">RTV</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Tasmania#SBS">SBS</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Tasmania#SBS2">SBS2</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Tasmania#SBS3">SBS3</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Tasmania#SBSHD">SBSHD</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Tasmania#SBSWW">SBSWW</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Tasmania#SC">SC</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Tasmania#SCA9">SCA9</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Tasmania#SCHD">SCHD</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Tasmania#SHAKE">SHAKE</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Tasmania#SHD7">SHD7</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Tasmania#TDHD">TDHD</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Tasmania#TDT">TDT</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Tasmania#TVSN">TVSN</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Tasmania#VICHD">VICHD</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Tasmania#WIN">WIN</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Tasmania#WINHD">WINHD</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Tasmania#YOUTV">YOUTV</channel>
</channels>
<?xml version="1.0" encoding="UTF-8"?>
<channels>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Tasmania#7MATE">7MATE</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Tasmania#7TWO">7TWO</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Tasmania#9Life">9Life</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Tasmania#11">11</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Tasmania#ABC1">ABC1</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Tasmania#ABC2">ABC2</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Tasmania#ABC3">ABC3</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Tasmania#ABC4KIDS">ABC4KIDS</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Tasmania#ABCHD">ABCHD</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Tasmania#ABCN">ABCN</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Tasmania#ASPIR">ASPIR</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Tasmania#GEM">GEM</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Tasmania#GO">GO</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Tasmania#NITV">NITV</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Tasmania#ONE">ONE</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Tasmania#RTV">RTV</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Tasmania#SBS">SBS</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Tasmania#SBS2">SBS2</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Tasmania#SBS3">SBS3</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Tasmania#SBSHD">SBSHD</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Tasmania#SBSWW">SBSWW</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Tasmania#SC">SC</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Tasmania#SCA9">SCA9</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Tasmania#SCHD">SCHD</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Tasmania#SHAKE">SHAKE</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Tasmania#SHD7">SHD7</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Tasmania#TDHD">TDHD</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Tasmania#TDT">TDT</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Tasmania#TVSN">TVSN</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Tasmania#VICHD">VICHD</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Tasmania#WIN">WIN</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Tasmania#WINHD">WINHD</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Tasmania#YOUTV">YOUTV</channel>
</channels>

View File

@@ -1,34 +1,34 @@
<?xml version="1.0" encoding="UTF-8"?>
<channels>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Townsville#7">7</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Townsville#7bravo">7bravo</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Townsville#7flix">7flix</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Townsville#7MATE">7MATE</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Townsville#7TWO">7TWO</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Townsville#9Life">9Life</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Townsville#10">10</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Townsville#11">11</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Townsville#ABC1">ABC1</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Townsville#ABC2">ABC2</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Townsville#ABC3">ABC3</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Townsville#ABC4KIDS">ABC4KIDS</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Townsville#ABCHD">ABCHD</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Townsville#ABCN">ABCN</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Townsville#GEM">GEM</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Townsville#GO">GO</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Townsville#NITV">NITV</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Townsville#ONE">ONE</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Townsville#RTV">RTV</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Townsville#SBS">SBS</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Townsville#SBS2">SBS2</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Townsville#SBS3">SBS3</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Townsville#SBSHD">SBSHD</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Townsville#SBSWW">SBSWW</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Townsville#SCA9">SCA9</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Townsville#SCHD">SCHD</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Townsville#SHAKE">SHAKE</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Townsville#TVSN">TVSN</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Townsville#VICHD">VICHD</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Townsville#WIN">WIN</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Townsville#WINHD">WINHD</channel>
</channels>
<?xml version="1.0" encoding="UTF-8"?>
<channels>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Townsville#7">7</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Townsville#7bravo">7bravo</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Townsville#7flix">7flix</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Townsville#7MATE">7MATE</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Townsville#7TWO">7TWO</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Townsville#9Life">9Life</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Townsville#10">10</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Townsville#11">11</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Townsville#ABC1">ABC1</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Townsville#ABC2">ABC2</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Townsville#ABC3">ABC3</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Townsville#ABC4KIDS">ABC4KIDS</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Townsville#ABCHD">ABCHD</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Townsville#ABCN">ABCN</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Townsville#GEM">GEM</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Townsville#GO">GO</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Townsville#NITV">NITV</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Townsville#ONE">ONE</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Townsville#RTV">RTV</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Townsville#SBS">SBS</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Townsville#SBS2">SBS2</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Townsville#SBS3">SBS3</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Townsville#SBSHD">SBSHD</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Townsville#SBSWW">SBSWW</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Townsville#SCA9">SCA9</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Townsville#SCHD">SCHD</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Townsville#SHAKE">SHAKE</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Townsville#TVSN">TVSN</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Townsville#VICHD">VICHD</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Townsville#WIN">WIN</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Townsville#WINHD">WINHD</channel>
</channels>

View File

@@ -1,38 +1,38 @@
<?xml version="1.0" encoding="UTF-8"?>
<channels>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Victoria#7bravo">7bravo</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Victoria#7flix">7flix</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Victoria#7MATE">7MATE</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Victoria#7TWO">7TWO</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Victoria#9Life">9Life</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Victoria#10">10</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Victoria#11">11</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Victoria#ABC1">ABC1</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Victoria#ABC2">ABC2</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Victoria#ABC3">ABC3</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Victoria#ABC4KIDS">ABC4KIDS</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Victoria#ABCHD">ABCHD</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Victoria#ABCN">ABCN</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Victoria#ASPIR">ASPIR</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Victoria#GEM">GEM</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Victoria#GO">GO</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Victoria#NITV">NITV</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Victoria#ONE">ONE</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Victoria#Prime">Prime</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Victoria#RTV">RTV</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Victoria#SBS">SBS</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Victoria#SBS2">SBS2</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Victoria#SBS3">SBS3</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Victoria#SBSHD">SBSHD</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Victoria#SBSWW">SBSWW</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Victoria#SCA9">SCA9</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Victoria#SCHD">SCHD</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Victoria#SHAKE">SHAKE</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Victoria#SNR">SNR</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Victoria#TVSN">TVSN</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Victoria#VICHD">VICHD</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Victoria#WIN">WIN</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Victoria#WINHD">WINHD</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Victoria#WinSA">WinSA</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Victoria#YOUTV">YOUTV</channel>
</channels>
<?xml version="1.0" encoding="UTF-8"?>
<channels>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Victoria#7bravo">7bravo</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Victoria#7flix">7flix</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Victoria#7MATE">7MATE</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Victoria#7TWO">7TWO</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Victoria#9Life">9Life</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Victoria#10">10</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Victoria#11">11</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Victoria#ABC1">ABC1</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Victoria#ABC2">ABC2</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Victoria#ABC3">ABC3</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Victoria#ABC4KIDS">ABC4KIDS</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Victoria#ABCHD">ABCHD</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Victoria#ABCN">ABCN</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Victoria#ASPIR">ASPIR</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Victoria#GEM">GEM</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Victoria#GO">GO</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Victoria#NITV">NITV</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Victoria#ONE">ONE</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Victoria#Prime">Prime</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Victoria#RTV">RTV</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Victoria#SBS">SBS</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Victoria#SBS2">SBS2</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Victoria#SBS3">SBS3</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Victoria#SBSHD">SBSHD</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Victoria#SBSWW">SBSWW</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Victoria#SCA9">SCA9</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Victoria#SCHD">SCHD</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Victoria#SHAKE">SHAKE</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Victoria#SNR">SNR</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Victoria#TVSN">TVSN</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Victoria#VICHD">VICHD</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Victoria#WIN">WIN</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Victoria#WINHD">WINHD</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Victoria#WinSA">WinSA</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Victoria#YOUTV">YOUTV</channel>
</channels>

View File

@@ -1,29 +1,29 @@
<?xml version="1.0" encoding="UTF-8"?>
<channels>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Western Australia#7MATE">7MATE</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Western Australia#7TWO">7TWO</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Western Australia#9Life">9Life</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Western Australia#10">10</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Western Australia#11">11</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Western Australia#ABC1">ABC1</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Western Australia#ABC2">ABC2</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Western Australia#ABC3">ABC3</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Western Australia#ABC4KIDS">ABC4KIDS</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Western Australia#ABCHD">ABCHD</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Western Australia#ABCN">ABCN</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Western Australia#GEM">GEM</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Western Australia#GO">GO</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Western Australia#GWN">GWN</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Western Australia#NITV">NITV</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Western Australia#ONE">ONE</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Western Australia#RTV">RTV</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Western Australia#SBS">SBS</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Western Australia#SBS2">SBS2</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Western Australia#SBS3">SBS3</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Western Australia#SBSHD">SBSHD</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Western Australia#SBSWW">SBSWW</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Western Australia#VICHD">VICHD</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Western Australia#WDT">WDT</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Western Australia#WIN">WIN</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Western Australia#WINHD">WINHD</channel>
</channels>
<?xml version="1.0" encoding="UTF-8"?>
<channels>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Western Australia#7MATE">7MATE</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Western Australia#7TWO">7TWO</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Western Australia#9Life">9Life</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Western Australia#10">10</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Western Australia#11">11</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Western Australia#ABC1">ABC1</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Western Australia#ABC2">ABC2</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Western Australia#ABC3">ABC3</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Western Australia#ABC4KIDS">ABC4KIDS</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Western Australia#ABCHD">ABCHD</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Western Australia#ABCN">ABCN</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Western Australia#GEM">GEM</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Western Australia#GO">GO</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Western Australia#GWN">GWN</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Western Australia#NITV">NITV</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Western Australia#ONE">ONE</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Western Australia#RTV">RTV</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Western Australia#SBS">SBS</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Western Australia#SBS2">SBS2</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Western Australia#SBS3">SBS3</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Western Australia#SBSHD">SBSHD</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Western Australia#SBSWW">SBSWW</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Western Australia#VICHD">VICHD</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Western Australia#WDT">WDT</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Western Australia#WIN">WIN</channel>
<channel site="abc.net.au" lang="en" xmltv_id="" site_id="Western Australia#WINHD">WINHD</channel>
</channels>

View File

@@ -1,41 +1,41 @@
# abc.net.au
https://www.abc.net.au/tv/epg/
| Region | Code |
| ------------------ | ----- |
| Sydney | `syd` |
| Melbourne | `mel` |
| Brisbane | `bri` |
| Gold Coast | `gc` |
| Perth | `per` |
| Adelaide | `adl` |
| Hobart | `hbr` |
| Darwin | `drw` |
| Canberra | `cbr` |
| New South Wales | `nsw` |
| Victoria | `vic` |
| Townsville | `tsv` |
| Queensland | `qld` |
| Western Australia | `wa` |
| South Australia | `sa` |
| Tasmania | `tas` |
| Northern Territory | `nt` |
### Download the guide
```sh
npm run grab --- --channels=sites/abc.net.au/abc.net.au_<REGION_CODE>.channels.xml
```
### Update channel list
```sh
npm run channels:parse --- --config=./sites/abc.net.au/abc.net.au.config.js --output=./sites/abc.net.au/abc.net.au_<REGION_CODE>.channels.xml --set=region:<REGION_CODE>
```
### Test
```sh
npm test --- abc.net.au
```
# abc.net.au
https://www.abc.net.au/tv/epg/
| Region | Code |
| ------------------ | ----- |
| Sydney | `syd` |
| Melbourne | `mel` |
| Brisbane | `bri` |
| Gold Coast | `gc` |
| Perth | `per` |
| Adelaide | `adl` |
| Hobart | `hbr` |
| Darwin | `drw` |
| Canberra | `cbr` |
| New South Wales | `nsw` |
| Victoria | `vic` |
| Townsville | `tsv` |
| Queensland | `qld` |
| Western Australia | `wa` |
| South Australia | `sa` |
| Tasmania | `tas` |
| Northern Territory | `nt` |
### Download the guide
```sh
npm run grab --- --channels=sites/abc.net.au/abc.net.au_<REGION_CODE>.channels.xml
```
### Update channel list
```sh
npm run channels:parse --- --config=./sites/abc.net.au/abc.net.au.config.js --output=./sites/abc.net.au/abc.net.au_<REGION_CODE>.channels.xml --set=region:<REGION_CODE>
```
### Test
```sh
npm test --- abc.net.au
```

View File

@@ -1 +0,0 @@
{"channels":[{"id":"0148","icon":"//images.ctfassets.net/989y85n5kcxs/5uT9g9pdQWRZeDPQXVI9g6/9cc44da567f591822ed645c99ecdcb64/SVT_1_black_new__2_.png","name":"SVT1 HD (T)","events":[{"id":"0086202208220710","live":false,"time":"2022-08-22T07:10:00Z","title":"Hemmagympa med Sofia","details":{"title":"Hemmagympa med Sofia","image":"https://viasatps.api.comspace.se/PS/channeldate/image/viasat.ps/21/2022-08-22/se.cs.svt1.event.A_41214031600.jpg?size=2560x1440","description":"Svenskt träningsprogram från 2021. Styrka. Sofia Åhman leder SVT:s hemmagympapass. Denna gång fokuserar vi på styrka.","season":4,"episode":1,"categories":["other"],"duration":"20"}}]}]}

View File

@@ -1 +0,0 @@
{"date":"2001-11-17","categories":[],"channels":[]}

View File

@@ -1,77 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<channels>
<channel site="allente.dk" lang="da" xmltv_id="" site_id="0086">Nickelodeon (Nordic) (T)</channel>
<channel site="allente.dk" lang="da" xmltv_id="" site_id="0148">SVT1 HD (T)</channel>
<channel site="allente.dk" lang="da" xmltv_id="" site_id="0255">V sport live 1 (T)</channel>
<channel site="allente.dk" lang="da" xmltv_id="" site_id="0256">V sport live 2 (T)</channel>
<channel site="allente.dk" lang="da" xmltv_id="" site_id="0257">V sport live 3 (T)</channel>
<channel site="allente.dk" lang="da" xmltv_id="" site_id="0258">V sport live 4 (T)</channel>
<channel site="allente.dk" lang="da" xmltv_id="" site_id="0259">V sport live 5 (T)</channel>
<channel site="allente.dk" lang="da" xmltv_id="" site_id="0282">SVT2 HD (T)</channel>
<channel site="allente.dk" lang="da" xmltv_id="" site_id="0288">NRK2 HD (T)</channel>
<channel site="allente.dk" lang="da" xmltv_id="" site_id="0289">NRK3/ NRK Super HD (T)</channel>
<channel site="allente.dk" lang="da" xmltv_id="" site_id="0356">Viasat Nature HD (T)</channel>
<channel site="allente.dk" lang="da" xmltv_id="" site_id="596">Sky News (T)</channel>
<channel site="allente.dk" lang="da" xmltv_id="" site_id="668">Horse &amp; Country HD -IP</channel>
<channel site="allente.dk" lang="da" xmltv_id="" site_id="718">TV 2 Sport X HD (D) (T)</channel>
<channel site="allente.dk" lang="da" xmltv_id="" site_id="1001">SkyShowtime 2 (T)</channel>
<channel site="allente.dk" lang="da" xmltv_id="" site_id="1002">SkyShowtime 1 (T)</channel>
<channel site="allente.dk" lang="da" xmltv_id="" site_id="1003">HISTORY HD (N/D/F) (T)</channel>
<channel site="allente.dk" lang="da" xmltv_id="" site_id="1004">HISTORY 2 HD (T)</channel>
<channel site="allente.dk" lang="da" xmltv_id="" site_id="1005">Animal Planet HD (T)</channel>
<channel site="allente.dk" lang="da" xmltv_id="" site_id="1006">Discovery Science (T)</channel>
<channel site="allente.dk" lang="da" xmltv_id="" site_id="1007">DW English (T)</channel>
<channel site="allente.dk" lang="da" xmltv_id="" site_id="1008">Bloomberg (T)</channel>
<channel site="allente.dk" lang="da" xmltv_id="" site_id="1009">MOTORVISION TV HD (T)</channel>
<channel site="allente.dk" lang="da" xmltv_id="" site_id="1013">ID Investigation Discovery (D) (T)</channel>
<channel site="allente.dk" lang="da" xmltv_id="" site_id="1014">TLC Danmark (T)</channel>
<channel site="allente.dk" lang="da" xmltv_id="" site_id="1015">Sport Live (D) (T)</channel>
<channel site="allente.dk" lang="da" xmltv_id="" site_id="1016">BBC Nordic HD (S/D/F) (T)</channel>
<channel site="allente.dk" lang="da" xmltv_id="" site_id="1033">France 24 (T)</channel>
<channel site="allente.dk" lang="da" xmltv_id="" site_id="1074">Discovery Channel HD (D) (T)</channel>
<channel site="allente.dk" lang="da" xmltv_id="" site_id="1075">Eurosport 1 HD (D) (T)</channel>
<channel site="allente.dk" lang="da" xmltv_id="6eren.dk" site_id="568">6'eren HD (D) (T)</channel>
<channel site="allente.dk" lang="en" xmltv_id="AlJazeera.qa@English" site_id="0344">Al Jazeera English -OTT</channel>
<channel site="allente.dk" lang="en" xmltv_id="BBCNews.uk@Europe" site_id="0016">BBC News (T)</channel>
<channel site="allente.dk" lang="da" xmltv_id="BoomerangNordic.uk" site_id="0017">Cartoonito (T)</channel>
<channel site="allente.dk" lang="da" xmltv_id="Canal9.dk" site_id="0368">CANAL9 HD (D) (T)</channel>
<channel site="allente.dk" lang="da" xmltv_id="" site_id="0028">Cartoon Network (T)</channel>
<channel site="allente.dk" lang="en" xmltv_id="CNBCEurope.uk" site_id="0032">CNBC (T)</channel>
<channel site="allente.dk" lang="en" xmltv_id="CNNInternational.us@MENA" site_id="0033">CNN (T)</channel>
<channel site="allente.dk" lang="da" xmltv_id="dk4.dk" site_id="0376">dk4 (T)</channel>
<channel site="allente.dk" lang="da" xmltv_id="DR1.dk" site_id="452">DR1 HD (T)</channel>
<channel site="allente.dk" lang="da" xmltv_id="DR2.dk" site_id="0051">DR2 HD (T)</channel>
<channel site="allente.dk" lang="da" xmltv_id="DRRamasjang.dk" site_id="0048">DR Ramasjang (T)</channel>
<channel site="allente.dk" lang="da" xmltv_id="Eurosport2.fr@Denmark" site_id="0367">Eurosport 2 HD (D) (T)</channel>
<channel site="allente.dk" lang="da" xmltv_id="Kanal4.dk" site_id="0064">Kanal 4 HD (D) (T)</channel>
<channel site="allente.dk" lang="da" xmltv_id="Kanal5.dk" site_id="0065">Kanal 5 HD (D) (T)</channel>
<channel site="allente.dk" lang="en" xmltv_id="MTV00s.uk" site_id="0246">MTV 00s (T)</channel>
<channel site="allente.dk" lang="en" xmltv_id="MTV80s.uk" site_id="604">MTV 80s (T)</channel>
<channel site="allente.dk" lang="da" xmltv_id="MTVGlobal.uk" site_id="0076">MTV (Nordic) (T)</channel>
<channel site="allente.dk" lang="da" xmltv_id="NationalGeographic.dk" site_id="0317">National Geographic HD (D) (T)</channel>
<channel site="allente.dk" lang="da" xmltv_id="NickJrScandinavia.nl" site_id="0088">Nick Jr. (T)</channel>
<channel site="allente.dk" lang="da" xmltv_id="NicktoonsScandinavia.nl" site_id="570">Nicktoons (T)</channel>
<channel site="allente.dk" lang="da" xmltv_id="NRK1.no" site_id="0090">NRK1 HD (T)</channel>
<channel site="allente.dk" lang="da" xmltv_id="TV2.dk" site_id="0297">TV 2 HD (D) (T)</channel>
<channel site="allente.dk" lang="da" xmltv_id="TV2Charlie.dk" site_id="0180">TV 2 Charlie HD (D) (T)</channel>
<channel site="allente.dk" lang="da" xmltv_id="TV2Fri.dk" site_id="0378">TV 2 Fri HD (D) (T)</channel>
<channel site="allente.dk" lang="da" xmltv_id="TV2News.dk" site_id="0190">TV 2 News HD (D) (T)</channel>
<channel site="allente.dk" lang="da" xmltv_id="TV2Sport.dk" site_id="454">TV 2 Sport HD (D) (T)</channel>
<channel site="allente.dk" lang="da" xmltv_id="TV2Zulu.dk" site_id="0209">TV 2 Echo HD (D) (T)</channel>
<channel site="allente.dk" lang="da" xmltv_id="TV3.dk" site_id="0359">TV3 HD (D) (T)</channel>
<channel site="allente.dk" lang="da" xmltv_id="TV3Max.dk" site_id="0374">TV3 MAX HD (D) (T)</channel>
<channel site="allente.dk" lang="da" xmltv_id="TV3Plus.dk" site_id="0248">TV3+ HD (D) (T)</channel>
<channel site="allente.dk" lang="da" xmltv_id="TV3Puls.dk" site_id="665">TV3 Puls HD (D) (T)</channel>
<channel site="allente.dk" lang="da" xmltv_id="TV3Sport.dk" site_id="0200">TV3 Sport HD (D) (T)</channel>
<channel site="allente.dk" lang="sv" xmltv_id="TV4.se" site_id="0227">TV4 HD (T)</channel>
<channel site="allente.dk" lang="da" xmltv_id="VFilmAction.se" site_id="0299">V film action HD (T)</channel>
<channel site="allente.dk" lang="da" xmltv_id="VFilmFamily.se" site_id="0308">V film family (T)</channel>
<channel site="allente.dk" lang="da" xmltv_id="VFilmHits.se" site_id="0322">V film hits HD (T)</channel>
<channel site="allente.dk" lang="da" xmltv_id="VFilmPremiere.se" site_id="0321">V film premiere HD (T)</channel>
<channel site="allente.dk" lang="da" xmltv_id="ViasatExplore.se" site_id="0358">Viasat Explore HD (T)</channel>
<channel site="allente.dk" lang="da" xmltv_id="ViasatHistory.se" site_id="0357">Viasat History HD (T)</channel>
<channel site="allente.dk" lang="da" xmltv_id="VSeries.se" site_id="0320">V series HD (T)</channel>
<channel site="allente.dk" lang="da" xmltv_id="VSportGolf.se" site_id="0364">V sport golf HD (T)</channel>
<channel site="allente.dk" lang="da" xmltv_id="VSportUltraHD.se" site_id="418">V sport ultra HD (T)</channel>
<channel site="allente.dk" lang="da" xmltv_id="Xee.dk" site_id="707">See (D) (T)</channel>
</channels>

View File

@@ -1,65 +0,0 @@
const dayjs = require('dayjs')
module.exports = {
site: 'allente.dk',
days: 2,
request: {
cache: {
ttl: 60 * 60 * 1000 // 1 hour
}
},
url({ date }) {
return `https://cs-vcb.allente.dk/epg/events?date=${date.format('YYYY-MM-DD')}`
},
parser({ content, channel }) {
let programs = []
const items = parseItems(content, channel)
items.forEach(item => {
if (!item.details) return
const start = dayjs(item.time)
const stop = start.add(item.details.duration, 'm')
programs.push({
title: item.title,
category: item.details.categories,
description: item.details.description,
image: item.details.image,
season: parseSeason(item),
episode: parseEpisode(item),
start,
stop
})
})
return programs
},
async channels() {
const axios = require('axios')
const data = await axios
.get(`https://cs-vcb.allente.dk/epg/events?date=${dayjs().format('YYYY-MM-DD')}`)
.then(r => r.data)
.catch(console.log)
return data.channels.map(item => {
return {
lang: 'da',
site_id: item.id,
name: item.name
}
})
}
}
function parseItems(content, channel) {
const data = JSON.parse(content)
if (!data || !Array.isArray(data.channels)) return []
const channelData = data.channels.find(i => i.id === channel.site_id)
return channelData && Array.isArray(channelData.events) ? channelData.events : []
}
function parseSeason(item) {
return item.details.season || null
}
function parseEpisode(item) {
return item.details.episode || null
}

View File

@@ -1,51 +0,0 @@
const { parser, url } = require('./allente.dk.config.js')
const dayjs = require('dayjs')
const utc = require('dayjs/plugin/utc')
const customParseFormat = require('dayjs/plugin/customParseFormat')
const { readFileSync } = require('fs')
const { resolve } = require('path')
dayjs.extend(customParseFormat)
dayjs.extend(utc)
const date = dayjs.utc('2021-11-17', 'YYYY-MM-DD').startOf('d')
const channel = {
site_id: '0148',
xmltv_id: 'SVT1.se'
}
it('can generate valid url', () => {
expect(url({ date, channel })).toBe('https://cs-vcb.allente.dk/epg/events?date=2021-11-17')
})
it('can parse response', () => {
const content = readFileSync(resolve(__dirname, '__data__/content.json'))
const result = parser({ content, channel }).map(p => {
p.start = p.start.toJSON()
p.stop = p.stop.toJSON()
return p
})
expect(result).toMatchObject([
{
start: '2022-08-22T07:10:00.000Z',
stop: '2022-08-22T07:30:00.000Z',
title: 'Hemmagympa med Sofia',
category: ['other'],
description:
'Svenskt träningsprogram från 2021. Styrka. Sofia Åhman leder SVT:s hemmagympapass. Denna gång fokuserar vi på styrka.',
image:
'https://viasatps.api.comspace.se/PS/channeldate/image/viasat.ps/21/2022-08-22/se.cs.svt1.event.A_41214031600.jpg?size=2560x1440',
season: 4,
episode: 1
}
])
})
it('can handle empty guide', () => {
const result = parser({
date,
channel,
content: '{"date":"2001-11-17","categories":[],"channels":[]}'
})
expect(result).toMatchObject([])
})

View File

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

View File

@@ -1 +0,0 @@
{"channels":[{"id":"0148","icon":"//images.ctfassets.net/989y85n5kcxs/5uT9g9pdQWRZeDPQXVI9g6/9cc44da567f591822ed645c99ecdcb64/SVT_1_black_new__2_.png","name":"SVT1 HD (T)","events":[{"id":"0086202208220710","live":false,"time":"2022-08-22T07:10:00Z","title":"Hemmagympa med Sofia","details":{"title":"Hemmagympa med Sofia","image":"https://viasatps.api.comspace.se/PS/channeldate/image/viasat.ps/21/2022-08-22/se.cs.svt1.event.A_41214031600.jpg?size=2560x1440","description":"Svenskt träningsprogram från 2021. Styrka. Sofia Åhman leder SVT:s hemmagympapass. Denna gång fokuserar vi på styrka.","season":4,"episode":1,"categories":["other"],"duration":"20"}}]}]}

View File

@@ -1 +0,0 @@
{"date":"2001-11-17","categories":[],"channels":[]}

View File

@@ -1,74 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<channels>
<channel site="allente.fi" lang="fi" xmltv_id="" site_id="0016">BBC News (T)</channel>
<channel site="allente.fi" lang="fi" xmltv_id="" site_id="0086">Nickelodeon (Nordic) (T)</channel>
<channel site="allente.fi" lang="fi" xmltv_id="" site_id="0147">SVT Barn HD (T)</channel>
<channel site="allente.fi" lang="fi" xmltv_id="" site_id="0148">SVT1 HD (T)</channel>
<channel site="allente.fi" lang="fi" xmltv_id="" site_id="0149">Kunskapskanalen HD (T)</channel>
<channel site="allente.fi" lang="fi" xmltv_id="" site_id="0274">V sport+ Suomi HD (T)</channel>
<channel site="allente.fi" lang="fi" xmltv_id="" site_id="0282">SVT2 HD (T)</channel>
<channel site="allente.fi" lang="fi" xmltv_id="" site_id="0344">Al Jazeera English -OTT</channel>
<channel site="allente.fi" lang="fi" xmltv_id="" site_id="0356">Viasat Nature HD (T)</channel>
<channel site="allente.fi" lang="fi" xmltv_id="" site_id="0357">Viasat History HD (T)</channel>
<channel site="allente.fi" lang="fi" xmltv_id="" site_id="0358">Viasat Explore HD (T)</channel>
<channel site="allente.fi" lang="fi" xmltv_id="" site_id="570">Nicktoons (T)</channel>
<channel site="allente.fi" lang="fi" xmltv_id="" site_id="596">Sky News (T)</channel>
<channel site="allente.fi" lang="fi" xmltv_id="" site_id="604">MTV 80s (T)</channel>
<channel site="allente.fi" lang="fi" xmltv_id="" site_id="668">Horse &amp; Country HD -IP</channel>
<channel site="allente.fi" lang="fi" xmltv_id="" site_id="686">YLE 1 (F) (T)</channel>
<channel site="allente.fi" lang="fi" xmltv_id="" site_id="687">YLE 2 (F) (T)</channel>
<channel site="allente.fi" lang="fi" xmltv_id="" site_id="689">YLE Teema &amp; Fem (F) (T)</channel>
<channel site="allente.fi" lang="fi" xmltv_id="" site_id="968">MTV Aitio (F) (T)</channel>
<channel site="allente.fi" lang="fi" xmltv_id="" site_id="971">MTV Viihde (F) (T)</channel>
<channel site="allente.fi" lang="fi" xmltv_id="" site_id="972">SF Kanalen (T)</channel>
<channel site="allente.fi" lang="fi" xmltv_id="" site_id="1001">SkyShowtime 2 (T)</channel>
<channel site="allente.fi" lang="fi" xmltv_id="" site_id="1002">SkyShowtime 1 (T)</channel>
<channel site="allente.fi" lang="fi" xmltv_id="" site_id="1003">HISTORY HD (N/D/F) (T)</channel>
<channel site="allente.fi" lang="fi" xmltv_id="" site_id="1004">HISTORY 2 HD (T)</channel>
<channel site="allente.fi" lang="fi" xmltv_id="" site_id="1005">Animal Planet HD (T)</channel>
<channel site="allente.fi" lang="fi" xmltv_id="" site_id="1006">Discovery Science (T)</channel>
<channel site="allente.fi" lang="fi" xmltv_id="" site_id="1007">DW English (T)</channel>
<channel site="allente.fi" lang="fi" xmltv_id="" site_id="1008">Bloomberg (T)</channel>
<channel site="allente.fi" lang="fi" xmltv_id="" site_id="1009">MOTORVISION TV HD (T)</channel>
<channel site="allente.fi" lang="fi" xmltv_id="" site_id="1011">ID Investigation Discovery (N/F) (T)</channel>
<channel site="allente.fi" lang="fi" xmltv_id="" site_id="1016">BBC Nordic HD (S/D/F) (T)</channel>
<channel site="allente.fi" lang="fi" xmltv_id="" site_id="1024">Eurosport 2 HD (S/F) (T)</channel>
<channel site="allente.fi" lang="fi" xmltv_id="" site_id="1033">France 24 (T)</channel>
<channel site="allente.fi" lang="fi" xmltv_id="" site_id="1076">MTV3 HD (F) (T)</channel>
<channel site="allente.fi" lang="fi" xmltv_id="" site_id="1077">Nelonen (F) (T)</channel>
<channel site="allente.fi" lang="fi" xmltv_id="" site_id="1078">MTV Sub (F) (T)</channel>
<channel site="allente.fi" lang="fi" xmltv_id="" site_id="1079">TV5 (F) (T)</channel>
<channel site="allente.fi" lang="fi" xmltv_id="" site_id="1080">liv (F) (T)</channel>
<channel site="allente.fi" lang="fi" xmltv_id="" site_id="1081">JIM (F) (T)</channel>
<channel site="allente.fi" lang="fi" xmltv_id="" site_id="1083">Discovery Channel (F) (T)</channel>
<channel site="allente.fi" lang="fi" xmltv_id="" site_id="1084">MTV Juniori (F) (T)</channel>
<channel site="allente.fi" lang="fi" xmltv_id="" site_id="1085">MTV Max HD (F) (T)</channel>
<channel site="allente.fi" lang="fi" xmltv_id="" site_id="1086">MTV Urheilu 1 HD (F) (T)</channel>
<channel site="allente.fi" lang="fi" xmltv_id="" site_id="1087">MTV Urheilu 2 HD (F) (T)</channel>
<channel site="allente.fi" lang="fi" xmltv_id="" site_id="1088">Eurosport 1 HD (F) (T)</channel>
<channel site="allente.fi" lang="da" xmltv_id="BoomerangNordic.uk" site_id="0017">Cartoonito (T)</channel>
<channel site="allente.fi" lang="en" xmltv_id="" site_id="0028">Cartoon Network (T)</channel>
<channel site="allente.fi" lang="en" xmltv_id="CNBCEurope.uk" site_id="0032">CNBC (T)</channel>
<channel site="allente.fi" lang="en" xmltv_id="CNNInternational.us@MENA" site_id="0033">CNN (T)</channel>
<channel site="allente.fi" lang="en" xmltv_id="MTV00s.uk" site_id="0246">MTV 00s (T)</channel>
<channel site="allente.fi" lang="fi" xmltv_id="MTVGlobal.uk" site_id="0080">MTV (Nordic) (T)</channel>
<channel site="allente.fi" lang="sv" xmltv_id="NationalGeographic.fi" site_id="0084">National Geographic HD (S/F) (T)</channel>
<channel site="allente.fi" lang="fi" xmltv_id="NickJrScandinavia.nl" site_id="0088">Nick Jr. (T)</channel>
<channel site="allente.fi" lang="fi" xmltv_id="VFilmAction.se" site_id="0299">V film action HD (T)</channel>
<channel site="allente.fi" lang="fi" xmltv_id="VFilmFamily.se" site_id="0308">V film family (T)</channel>
<channel site="allente.fi" lang="fi" xmltv_id="VFilmHits.se" site_id="0322">V film hits HD (T)</channel>
<channel site="allente.fi" lang="fi" xmltv_id="VFilmPremiere.se" site_id="0321">V film premiere HD (T)</channel>
<channel site="allente.fi" lang="fi" xmltv_id="VSport1.se@Finland" site_id="0159">V sport 1 Suomi HD (T)</channel>
<channel site="allente.fi" lang="fi" xmltv_id="VSport1.se" site_id="0362">V sport 1 HD (S/F) (T)</channel>
<channel site="allente.fi" lang="fi" xmltv_id="VSport2.se@Finland" site_id="488">V sport 2 Suomi HD (T)</channel>
<channel site="allente.fi" lang="fi" xmltv_id="VSportFootball.se" site_id="0269">V sport football HD (T)</channel>
<channel site="allente.fi" lang="fi" xmltv_id="VSportGolf.se" site_id="0364">V sport golf HD (T)</channel>
<channel site="allente.fi" lang="fi" xmltv_id="VSportLive1.se" site_id="0255">V sport live 1 (T)</channel>
<channel site="allente.fi" lang="fi" xmltv_id="VSportLive2.se" site_id="0256">V sport live 2 (T)</channel>
<channel site="allente.fi" lang="fi" xmltv_id="VSportLive3.se" site_id="0257">V sport live 3 (T)</channel>
<channel site="allente.fi" lang="fi" xmltv_id="VSportLive4.se" site_id="0258">V sport live 4 (T)</channel>
<channel site="allente.fi" lang="fi" xmltv_id="VSportLive5.se" site_id="0259">V sport live 5 (T)</channel>
<channel site="allente.fi" lang="fi" xmltv_id="VSportPremium.se" site_id="527">V sport premium HD (T)</channel>
<channel site="allente.fi" lang="fi" xmltv_id="VSportUltraHD.se" site_id="418">V sport ultra HD (T)</channel>
<channel site="allente.fi" lang="fi" xmltv_id="VSportVinter.se" site_id="0363">V sport vinter HD (T)</channel>
</channels>

View File

@@ -1,65 +0,0 @@
const dayjs = require('dayjs')
module.exports = {
site: 'allente.fi',
days: 2,
request: {
cache: {
ttl: 60 * 60 * 1000 // 1 hour
}
},
url({ date }) {
return `https://cs-vcb.allente.fi/epg/events?date=${date.format('YYYY-MM-DD')}`
},
parser({ content, channel }) {
let programs = []
const items = parseItems(content, channel)
items.forEach(item => {
if (!item.details) return
const start = dayjs(item.time)
const stop = start.add(item.details.duration, 'm')
programs.push({
title: item.title,
category: item.details.categories,
description: item.details.description,
image: item.details.image,
season: parseSeason(item),
episode: parseEpisode(item),
start,
stop
})
})
return programs
},
async channels() {
const axios = require('axios')
const data = await axios
.get(`https://cs-vcb.allente.fi/epg/events?date=${dayjs().format('YYYY-MM-DD')}`)
.then(r => r.data)
.catch(console.log)
return data.channels.map(item => {
return {
lang: 'fi',
site_id: item.id,
name: item.name
}
})
}
}
function parseItems(content, channel) {
const data = JSON.parse(content)
if (!data || !Array.isArray(data.channels)) return []
const channelData = data.channels.find(i => i.id === channel.site_id)
return channelData && Array.isArray(channelData.events) ? channelData.events : []
}
function parseSeason(item) {
return item.details.season || null
}
function parseEpisode(item) {
return item.details.episode || null
}

View File

@@ -1,51 +0,0 @@
const { parser, url } = require('./allente.fi.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')
dayjs.extend(customParseFormat)
dayjs.extend(utc)
const date = dayjs.utc('2021-11-17', 'YYYY-MM-DD').startOf('d')
const channel = {
site_id: '0148',
xmltv_id: 'SVT1.se'
}
it('can generate valid url', () => {
expect(url({ date, channel })).toBe('https://cs-vcb.allente.fi/epg/events?date=2021-11-17')
})
it('can parse response', () => {
const content = fs.readFileSync(path.resolve(__dirname, '__data__/content.json'))
const result = parser({ content, channel }).map(p => {
p.start = p.start.toJSON()
p.stop = p.stop.toJSON()
return p
})
expect(result).toMatchObject([
{
start: '2022-08-22T07:10:00.000Z',
stop: '2022-08-22T07:30:00.000Z',
title: 'Hemmagympa med Sofia',
category: ['other'],
description:
'Svenskt träningsprogram från 2021. Styrka. Sofia Åhman leder SVT:s hemmagympapass. Denna gång fokuserar vi på styrka.',
image:
'https://viasatps.api.comspace.se/PS/channeldate/image/viasat.ps/21/2022-08-22/se.cs.svt1.event.A_41214031600.jpg?size=2560x1440',
season: 4,
episode: 1
}
])
})
it('can handle empty guide', () => {
const result = parser({
date,
channel,
content: fs.readFileSync(path.resolve(__dirname, '__data__/no_content.json'))
})
expect(result).toMatchObject([])
})

View File

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

View File

@@ -1,87 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<channels>
<channel site="allente.no" lang="no" xmltv_id="" site_id="0017">Cartoonito (T)</channel>
<channel site="allente.no" lang="no" xmltv_id="" site_id="0086">Nickelodeon (Nordic) (T)</channel>
<channel site="allente.no" lang="no" xmltv_id="" site_id="0187">TV2 Direkte (N) (T)</channel>
<channel site="allente.no" lang="no" xmltv_id="" site_id="0198">TV2 Sport Premium 2 HD (N) (T)</channel>
<channel site="allente.no" lang="no" xmltv_id="" site_id="0356">Viasat Nature HD (T)</channel>
<channel site="allente.no" lang="no" xmltv_id="" site_id="0361">TV3+ (N) (T)</channel>
<channel site="allente.no" lang="no" xmltv_id="" site_id="1001">SkyShowtime 2 (T)</channel>
<channel site="allente.no" lang="no" xmltv_id="" site_id="1002">SkyShowtime 1 (T)</channel>
<channel site="allente.no" lang="no" xmltv_id="" site_id="1003">HISTORY HD (N/D/F) (T)</channel>
<channel site="allente.no" lang="no" xmltv_id="" site_id="1004">HISTORY 2 HD (T)</channel>
<channel site="allente.no" lang="no" xmltv_id="" site_id="1005">Animal Planet HD (T)</channel>
<channel site="allente.no" lang="no" xmltv_id="" site_id="1006">Discovery Science (T)</channel>
<channel site="allente.no" lang="no" xmltv_id="" site_id="1007">DW English (T)</channel>
<channel site="allente.no" lang="no" xmltv_id="" site_id="1008">Bloomberg (T)</channel>
<channel site="allente.no" lang="no" xmltv_id="" site_id="1009">MOTORVISION TV HD (T)</channel>
<channel site="allente.no" lang="no" xmltv_id="" site_id="1010">Bilkanalen Auto Motor og Sport TV (N) (T)</channel>
<channel site="allente.no" lang="no" xmltv_id="" site_id="1011">ID Investigation Discovery (N/F) (T)</channel>
<channel site="allente.no" lang="no" xmltv_id="" site_id="1012">TLC Norge HD (T)</channel>
<channel site="allente.no" lang="no" xmltv_id="" site_id="1017">BBC Nordic HD (N) (T)</channel>
<channel site="allente.no" lang="no" xmltv_id="" site_id="1033">France 24 (T)</channel>
<channel site="allente.no" lang="no" xmltv_id="" site_id="1034">VGTV HD (T)</channel>
<channel site="allente.no" lang="no" xmltv_id="" site_id="1047">V sport Premier League HD (T)</channel>
<channel site="allente.no" lang="no" xmltv_id="" site_id="1048">V sport Premier League 1 HD (T)</channel>
<channel site="allente.no" lang="no" xmltv_id="" site_id="1049">V sport Premier League 2 HD (T)</channel>
<channel site="allente.no" lang="no" xmltv_id="" site_id="1089">Heim HD (T)</channel>
<channel site="allente.no" lang="no" xmltv_id="" site_id="1090">Stars HD (N) (T)</channel>
<channel site="allente.no" lang="no" xmltv_id="" site_id="1091">Hits HD (N) (T)</channel>
<channel site="allente.no" lang="no" xmltv_id="" site_id="452">DR1 HD (T)</channel>
<channel site="allente.no" lang="no" xmltv_id="" site_id="596">Sky News (T)</channel>
<channel site="allente.no" lang="no" xmltv_id="" site_id="668">Horse &amp; Country HD -IP</channel>
<channel site="allente.no" lang="no" xmltv_id="" site_id="972">SF Kanalen (T)</channel>
<channel site="allente.no" lang="en" xmltv_id="AlJazeera.qa@English" site_id="0344">Al Jazeera English -OTT</channel>
<channel site="allente.no" lang="en" xmltv_id="BBCNews.uk@Europe" site_id="0016">BBC News (T)</channel>
<channel site="allente.no" lang="no" xmltv_id="" site_id="0028">Cartoon Network (T)</channel>
<channel site="allente.no" lang="en" xmltv_id="CNBCEurope.uk" site_id="0032">CNBC (T)</channel>
<channel site="allente.no" lang="en" xmltv_id="CNNInternational.us@MENA" site_id="0033">CNN (T)</channel>
<channel site="allente.no" lang="no" xmltv_id="DiscoveryChannel.no" site_id="532">Discovery Channel HD (N) (T)</channel>
<channel site="allente.no" lang="da" xmltv_id="DR2.dk" site_id="0051">DR2 HD (T)</channel>
<channel site="allente.no" lang="no" xmltv_id="Eurosport.no" site_id="530">Eurosport Norge HD (T)</channel>
<channel site="allente.no" lang="no" xmltv_id="Eurosport1.fr@Norway" site_id="531">Eurosport 1 HD (N) (T)</channel>
<channel site="allente.no" lang="no" xmltv_id="FEM.no" site_id="0056">FEM HD (T)</channel>
<channel site="allente.no" lang="sv" xmltv_id="Kunskapskanalen.se" site_id="0149">Kunskapskanalen HD (T)</channel>
<channel site="allente.no" lang="no" xmltv_id="MAX.no" site_id="533">MAX HD (T)</channel>
<channel site="allente.no" lang="en" xmltv_id="MTV00s.uk" site_id="0246">MTV 00s (T)</channel>
<channel site="allente.no" lang="en" xmltv_id="MTV80s.uk" site_id="604">MTV 80s (T)</channel>
<channel site="allente.no" lang="no" xmltv_id="MTVGlobal.uk" site_id="0080">MTV (Nordic) (T)</channel>
<channel site="allente.no" lang="no" xmltv_id="NationalGeographic.no" site_id="0316">National Geographic HD (N) (T)</channel>
<channel site="allente.no" lang="no" xmltv_id="NickJrScandinavia.nl" site_id="0088">Nick Jr. (T)</channel>
<channel site="allente.no" lang="no" xmltv_id="NicktoonsScandinavia.nl" site_id="570">Nicktoons (T)</channel>
<channel site="allente.no" lang="no" xmltv_id="NRK1.no" site_id="0090">NRK1 HD (T)</channel>
<channel site="allente.no" lang="no" xmltv_id="NRK2.no" site_id="0288">NRK2 HD (T)</channel>
<channel site="allente.no" lang="no" xmltv_id="NRK3.no" site_id="0289">NRK3/ NRK Super HD (T)</channel>
<channel site="allente.no" lang="sv" xmltv_id="SVT1.se" site_id="0121">SVT1 HD (T)</channel>
<channel site="allente.no" lang="sv" xmltv_id="SVT2.se" site_id="0141">SVT2 HD (T)</channel>
<channel site="allente.no" lang="sv" xmltv_id="SVTBarn.se" site_id="0147">SVT Barn HD (T)</channel>
<channel site="allente.no" lang="da" xmltv_id="TV2.dk" site_id="0188">TV 2 HD (D) (T)</channel>
<channel site="allente.no" lang="no" xmltv_id="TV2Livsstil.no" site_id="0277">TV2 Livsstil HD (N) (T)</channel>
<channel site="allente.no" lang="no" xmltv_id="TV2Nyhetskanalen.no" site_id="457">TV2 Nyheter (N) (T)</channel>
<channel site="allente.no" lang="no" xmltv_id="TV2Sport1.no" site_id="0199">TV2 Sport 1 HD (N) (T)</channel>
<channel site="allente.no" lang="no" xmltv_id="TV2Sport2.no" site_id="0406">TV2 Sport 2 HD (N) (T)</channel>
<channel site="allente.no" lang="no" xmltv_id="TV2SportPremium.no" site_id="0197">TV2 Sport Premium HD (N) (T)</channel>
<channel site="allente.no" lang="no" xmltv_id="TV2Zebra.no" site_id="0405">TV2 Zebra HD (N) (T)</channel>
<channel site="allente.no" lang="no" xmltv_id="TV3.no" site_id="0298">TV3 HD (N) (T)</channel>
<channel site="allente.no" lang="no" xmltv_id="TV6.no" site_id="0206">TV6 (N) (T)</channel>
<channel site="allente.no" lang="no" xmltv_id="TVNorge.no" site_id="534">TV Norge HD (T)</channel>
<channel site="allente.no" lang="no" xmltv_id="VFilmAction.se" site_id="0299">V film action HD (T)</channel>
<channel site="allente.no" lang="no" xmltv_id="VFilmFamily.se" site_id="0308">V film family (T)</channel>
<channel site="allente.no" lang="no" xmltv_id="VFilmHits.se" site_id="0322">V film hits HD (T)</channel>
<channel site="allente.no" lang="no" xmltv_id="VFilmPremiere.se" site_id="0321">V film premiere HD (T)</channel>
<channel site="allente.no" lang="no" xmltv_id="ViasatExplore.se" site_id="0358">Viasat Explore HD (T)</channel>
<channel site="allente.no" lang="no" xmltv_id="ViasatHistory.se" site_id="0357">Viasat History HD (T)</channel>
<channel site="allente.no" lang="no" xmltv_id="VOX.no" site_id="535">VOX HD (T)</channel>
<channel site="allente.no" lang="no" xmltv_id="VSeries.se" site_id="0320">V series HD (T)</channel>
<channel site="allente.no" lang="no" xmltv_id="VSport1.se@Norway" site_id="0365">V sport 1 HD (N) (T)</channel>
<channel site="allente.no" lang="no" xmltv_id="VSport2.se@Norway" site_id="608">V sport 2 HD (N) (T)</channel>
<channel site="allente.no" lang="no" xmltv_id="VSport3.se@Norway" site_id="609">V sport 3 HD (N) (T)</channel>
<channel site="allente.no" lang="no" xmltv_id="VSportGolf.se" site_id="0364">V sport golf HD (T)</channel>
<channel site="allente.no" lang="no" xmltv_id="VSportLive1.se" site_id="0255">V sport live 1 (T)</channel>
<channel site="allente.no" lang="no" xmltv_id="VSportLive2.se" site_id="0256">V sport live 2 (T)</channel>
<channel site="allente.no" lang="no" xmltv_id="VSportLive3.se" site_id="0257">V sport live 3 (T)</channel>
<channel site="allente.no" lang="no" xmltv_id="VSportLive4.se" site_id="0258">V sport live 4 (T)</channel>
<channel site="allente.no" lang="no" xmltv_id="VSportLive5.se" site_id="0259">V sport live 5 (T)</channel>
<channel site="allente.no" lang="no" xmltv_id="VSportPlus.se@Norway" site_id="0271">V sport+ HD (N) (T)</channel>
<channel site="allente.no" lang="no" xmltv_id="VSportUltraHD.se" site_id="418">V sport ultra HD (T)</channel>
</channels>

View File

@@ -1,65 +1,68 @@
const dayjs = require('dayjs')
module.exports = {
site: 'allente.no',
days: 2,
request: {
cache: {
ttl: 60 * 60 * 1000 // 1 hour
}
},
url({ date }) {
return `https://cs-vcb.allente.no/epg/events?date=${date.format('YYYY-MM-DD')}`
},
parser({ content, channel }) {
let programs = []
const items = parseItems(content, channel)
items.forEach(item => {
if (!item.details) return
const start = dayjs(item.time)
const stop = start.add(item.details.duration, 'm')
programs.push({
title: item.title,
category: item.details.categories,
description: item.details.description,
image: item.details.image,
season: parseSeason(item),
episode: parseEpisode(item),
start,
stop
})
})
return programs
},
async channels() {
const axios = require('axios')
const data = await axios
.get(`https://cs-vcb.allente.no/epg/events?date=${dayjs().format('YYYY-MM-DD')}`)
.then(r => r.data)
.catch(console.log)
return data.channels.map(item => {
return {
lang: 'no',
site_id: item.id,
name: item.name
}
})
}
}
function parseItems(content, channel) {
const data = JSON.parse(content)
if (!data || !Array.isArray(data.channels)) return []
const channelData = data.channels.find(i => i.id === channel.site_id)
return channelData && Array.isArray(channelData.events) ? channelData.events : []
}
function parseSeason(item) {
return item.details.season || null
}
function parseEpisode(item) {
return item.details.episode || null
}
const dayjs = require('dayjs')
module.exports = {
site: 'allente.no',
days: 2,
request: {
cache: {
ttl: 60 * 60 * 1000 // 1 hour
}
},
url({ channel, date }) {
const country = channel.site_id.split('#')[0]
return `https://cs-vcb.allente.${country}/epg/events?date=${date.format('YYYY-MM-DD')}`
},
parser({ content, channel }) {
let programs = []
const items = parseItems(content, channel)
items.forEach(item => {
if (!item.details) return
const start = dayjs(item.time)
const stop = start.add(item.details.duration, 'm')
programs.push({
title: item.title,
category: item.details.categories,
description: item.details.description,
image: item.details.image,
season: parseSeason(item),
episode: parseEpisode(item),
start,
stop
})
})
return programs
},
async channels({ country }) {
const axios = require('axios')
const date = dayjs().format('YYYY-MM-DD')
const res = await axios.get(`https://cs-vcb.allente.${country}/epg/events?date=${date}`)
const data = res.data
if (!data || !Array.isArray(data.channels)) return []
const lang = country === 'dk' ? 'da' : country
return data.channels.map(item => ({
lang: lang,
site_id: `${country}#${item.id}`,
name: item.name
}))
}
}
function parseItems(content, channel) {
const data = JSON.parse(content)
if (!data || !Array.isArray(data.channels)) return []
const channelId = (channel.site_id || '').split('#')[1] || channel.site_id
const channelData = data.channels.find(i => i.id === channelId)
return channelData && Array.isArray(channelData.events) ? channelData.events : []
}
function parseSeason(item) {
return item.details.season || null
}
function parseEpisode(item) {
return item.details.episode || null
}

View File

@@ -1,51 +1,59 @@
const { parser, url } = require('./allente.no.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')
dayjs.extend(customParseFormat)
dayjs.extend(utc)
const date = dayjs.utc('2021-11-17', 'YYYY-MM-DD').startOf('d')
const channel = {
site_id: '0148',
xmltv_id: 'SVT1.se'
}
it('can generate valid url', () => {
expect(url({ date, channel })).toBe('https://cs-vcb.allente.no/epg/events?date=2021-11-17')
})
it('can parse response', () => {
const content = fs.readFileSync(path.resolve(__dirname, '__data__/content.json'))
const result = parser({ content, channel }).map(p => {
p.start = p.start.toJSON()
p.stop = p.stop.toJSON()
return p
})
expect(result).toMatchObject([
{
start: '2022-08-22T07:10:00.000Z',
stop: '2022-08-22T07:30:00.000Z',
title: 'Hemmagympa med Sofia',
category: ['other'],
description:
'Svenskt träningsprogram från 2021. Styrka. Sofia Åhman leder SVT:s hemmagympapass. Denna gång fokuserar vi på styrka.',
image:
'https://viasatps.api.comspace.se/PS/channeldate/image/viasat.ps/21/2022-08-22/se.cs.svt1.event.A_41214031600.jpg?size=2560x1440',
season: 4,
episode: 1
}
])
})
it('can handle empty guide', () => {
const result = parser({
date,
channel,
content: fs.readFileSync(path.resolve(__dirname, '__data__/no_content.json'))
})
expect(result).toMatchObject([])
})
const { parser, url } = require('./allente.no.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')
dayjs.extend(customParseFormat)
dayjs.extend(utc)
const date = dayjs.utc('2021-11-17', 'YYYY-MM-DD').startOf('d')
const channel = {
site_id: 'se#0148',
xmltv_id: 'SVT1.se'
}
it('can generate valid url', () => {
if (channel.site_id.split('#')[0] !== 'se') {
expect(url({ channel, date })).toBe('https://cs-vcb.allente.se/epg/events?date=2021-11-17')
} else if (channel.site_id.split('#')[0] === 'fi') {
expect(url({ channel, date })).toBe('https://cs-vcb.allente.fi/epg/events?date=2021-11-17')
} else if (channel.site_id.split('#')[0] === 'no') {
expect(url({ channel, date })).toBe('https://cs-vcb.allente.no/epg/events?date=2021-11-17')
} else if (channel.site_id.split('#')[0] === 'dk') {
expect(url({ channel, date })).toBe('https://cs-vcb.allente.dk/epg/events?date=2021-11-17')
}
})
it('can parse response', () => {
const content = fs.readFileSync(path.resolve(__dirname, '__data__/content.json'))
const result = parser({ content, channel }).map(p => {
p.start = p.start.toJSON()
p.stop = p.stop.toJSON()
return p
})
expect(result).toMatchObject([
{
start: '2022-08-22T07:10:00.000Z',
stop: '2022-08-22T07:30:00.000Z',
title: 'Hemmagympa med Sofia',
category: ['other'],
description:
'Svenskt träningsprogram från 2021. Styrka. Sofia Åhman leder SVT:s hemmagympapass. Denna gång fokuserar vi på styrka.',
image:
'https://viasatps.api.comspace.se/PS/channeldate/image/viasat.ps/21/2022-08-22/se.cs.svt1.event.A_41214031600.jpg?size=2560x1440',
season: 4,
episode: 1
}
])
})
it('can handle empty guide', () => {
const result = parser({
date,
channel,
content: fs.readFileSync(path.resolve(__dirname, '__data__/no_content.json'))
})
expect(result).toMatchObject([])
})

View File

@@ -0,0 +1,75 @@
<?xml version="1.0" encoding="UTF-8"?>
<channels>
<channel site="allente.no" lang="da" xmltv_id="" site_id="dk#0016">BBC News (T)</channel>
<channel site="allente.no" lang="da" xmltv_id="" site_id="dk#0028">Cartoon Network (T)</channel>
<channel site="allente.no" lang="da" xmltv_id="" site_id="dk#0032">CNBC (T)</channel>
<channel site="allente.no" lang="da" xmltv_id="" site_id="dk#0033">CNN (T)</channel>
<channel site="allente.no" lang="da" xmltv_id="" site_id="dk#0048">DR Ramasjang (T)</channel>
<channel site="allente.no" lang="da" xmltv_id="" site_id="dk#0051">DR2 HD (T)</channel>
<channel site="allente.no" lang="da" xmltv_id="" site_id="dk#0064">Kanal 4 HD (D) (T)</channel>
<channel site="allente.no" lang="da" xmltv_id="" site_id="dk#0065">Kanal 5 HD (D) (T)</channel>
<channel site="allente.no" lang="da" xmltv_id="" site_id="dk#0076">MTV (Nordic) (T)</channel>
<channel site="allente.no" lang="da" xmltv_id="" site_id="dk#0086">Nickelodeon (Nordic) (T)</channel>
<channel site="allente.no" lang="da" xmltv_id="" site_id="dk#0088">Nick Jr. (T)</channel>
<channel site="allente.no" lang="da" xmltv_id="" site_id="dk#0090">NRK1 HD (T)</channel>
<channel site="allente.no" lang="da" xmltv_id="" site_id="dk#0148">SVT1 HD (T)</channel>
<channel site="allente.no" lang="da" xmltv_id="" site_id="dk#0180">TV 2 Charlie HD (D) (T)</channel>
<channel site="allente.no" lang="da" xmltv_id="" site_id="dk#0190">TV 2 News HD (D) (T)</channel>
<channel site="allente.no" lang="da" xmltv_id="" site_id="dk#0200">TV3 Sport HD (D) (T)</channel>
<channel site="allente.no" lang="da" xmltv_id="" site_id="dk#0209">TV 2 Echo HD (D) (T)</channel>
<channel site="allente.no" lang="da" xmltv_id="" site_id="dk#0227">TV4 HD (T)</channel>
<channel site="allente.no" lang="da" xmltv_id="" site_id="dk#0246">MTV 00s (T)</channel>
<channel site="allente.no" lang="da" xmltv_id="" site_id="dk#0248">TV3+ HD (D) (T)</channel>
<channel site="allente.no" lang="da" xmltv_id="" site_id="dk#0255">V sport live 1 (T)</channel>
<channel site="allente.no" lang="da" xmltv_id="" site_id="dk#0256">V sport live 2 (T)</channel>
<channel site="allente.no" lang="da" xmltv_id="" site_id="dk#0257">V sport live 3 (T)</channel>
<channel site="allente.no" lang="da" xmltv_id="" site_id="dk#0258">V sport live 4 (T)</channel>
<channel site="allente.no" lang="da" xmltv_id="" site_id="dk#0259">V sport live 5 (T)</channel>
<channel site="allente.no" lang="da" xmltv_id="" site_id="dk#0282">SVT2 HD (T)</channel>
<channel site="allente.no" lang="da" xmltv_id="" site_id="dk#0288">NRK2 HD (T)</channel>
<channel site="allente.no" lang="da" xmltv_id="" site_id="dk#0289">NRK3/ NRK Super HD (T)</channel>
<channel site="allente.no" lang="da" xmltv_id="" site_id="dk#0297">TV 2 HD (D) (T)</channel>
<channel site="allente.no" lang="da" xmltv_id="" site_id="dk#0299">V film action HD (T)</channel>
<channel site="allente.no" lang="da" xmltv_id="" site_id="dk#0308">V film family (T)</channel>
<channel site="allente.no" lang="da" xmltv_id="" site_id="dk#0317">National Geographic HD (D) (T)</channel>
<channel site="allente.no" lang="da" xmltv_id="" site_id="dk#0320">V series HD (T)</channel>
<channel site="allente.no" lang="da" xmltv_id="" site_id="dk#0321">V film premiere HD (T)</channel>
<channel site="allente.no" lang="da" xmltv_id="" site_id="dk#0322">V film hits HD (T)</channel>
<channel site="allente.no" lang="da" xmltv_id="" site_id="dk#0344">Al Jazeera English (T)</channel>
<channel site="allente.no" lang="da" xmltv_id="" site_id="dk#0356">Viasat Nature HD (T)</channel>
<channel site="allente.no" lang="da" xmltv_id="" site_id="dk#0357">Viasat History HD (T)</channel>
<channel site="allente.no" lang="da" xmltv_id="" site_id="dk#0358">Viasat Explore HD (T)</channel>
<channel site="allente.no" lang="da" xmltv_id="" site_id="dk#0359">TV3 HD (D) (T)</channel>
<channel site="allente.no" lang="da" xmltv_id="" site_id="dk#0364">V sport golf HD (T)</channel>
<channel site="allente.no" lang="da" xmltv_id="" site_id="dk#0367">Eurosport 2 HD (D) (T)</channel>
<channel site="allente.no" lang="da" xmltv_id="" site_id="dk#0368">CANAL9 HD (D) (T)</channel>
<channel site="allente.no" lang="da" xmltv_id="" site_id="dk#0374">TV3 MAX HD (D) (T)</channel>
<channel site="allente.no" lang="da" xmltv_id="" site_id="dk#0376">dk4 (T)</channel>
<channel site="allente.no" lang="da" xmltv_id="" site_id="dk#0378">TV 2 Fri HD (D) (T)</channel>
<channel site="allente.no" lang="da" xmltv_id="" site_id="dk#418">V sport ultra HD (T)</channel>
<channel site="allente.no" lang="da" xmltv_id="" site_id="dk#452">DR1 HD (T)</channel>
<channel site="allente.no" lang="da" xmltv_id="" site_id="dk#454">TV 2 Sport HD (D) (T)</channel>
<channel site="allente.no" lang="da" xmltv_id="" site_id="dk#568">6&apos;eren HD (D) (T)</channel>
<channel site="allente.no" lang="da" xmltv_id="" site_id="dk#570">Nicktoons (T)</channel>
<channel site="allente.no" lang="da" xmltv_id="" site_id="dk#596">Sky News (T)</channel>
<channel site="allente.no" lang="da" xmltv_id="" site_id="dk#604">MTV 80s (T)</channel>
<channel site="allente.no" lang="da" xmltv_id="" site_id="dk#665">TV3 Puls HD (D) (T)</channel>
<channel site="allente.no" lang="da" xmltv_id="" site_id="dk#668">Horse &amp; Country (T)</channel>
<channel site="allente.no" lang="da" xmltv_id="" site_id="dk#707">See HD (D) (T)</channel>
<channel site="allente.no" lang="da" xmltv_id="" site_id="dk#718">TV 2 Sport X HD (D) (T)</channel>
<channel site="allente.no" lang="da" xmltv_id="" site_id="dk#1001">SkyShowtime 2 HD (T)</channel>
<channel site="allente.no" lang="da" xmltv_id="" site_id="dk#1002">SkyShowtime 1 HD (T)</channel>
<channel site="allente.no" lang="da" xmltv_id="" site_id="dk#1007">DW English (T)</channel>
<channel site="allente.no" lang="da" xmltv_id="" site_id="dk#1008">Bloomberg (T)</channel>
<channel site="allente.no" lang="da" xmltv_id="" site_id="dk#1013">ID Investigation Discovery (D) (T)</channel>
<channel site="allente.no" lang="da" xmltv_id="" site_id="dk#1014">TLC Danmark (T)</channel>
<channel site="allente.no" lang="da" xmltv_id="" site_id="dk#1015">Sport Live (D) (T)</channel>
<channel site="allente.no" lang="da" xmltv_id="" site_id="dk#1016">BBC Nordic HD (D/F) (T)</channel>
<channel site="allente.no" lang="da" xmltv_id="" site_id="dk#1074">Discovery Channel HD (D) (T)</channel>
<channel site="allente.no" lang="da" xmltv_id="" site_id="dk#1075">Eurosport 1 HD (D) (T)</channel>
<channel site="allente.no" lang="da" xmltv_id="" site_id="dk#1094">Love Nature HD (T)</channel>
<channel site="allente.no" lang="da" xmltv_id="" site_id="dk#1096">Moonbug (T)</channel>
<channel site="allente.no" lang="da" xmltv_id="" site_id="dk#1097">Mezzo Live (T)</channel>
<channel site="allente.no" lang="da" xmltv_id="" site_id="dk#1101">Dizi</channel>
<channel site="allente.no" lang="da" xmltv_id="" site_id="dk#1222">Viaplay Sport News HD (D) (T)</channel>
</channels>

View File

@@ -0,0 +1,71 @@
<?xml version="1.0" encoding="UTF-8"?>
<channels>
<channel site="allente.no" lang="fi" xmltv_id="" site_id="fi#0016">BBC News (T)</channel>
<channel site="allente.no" lang="fi" xmltv_id="" site_id="fi#0028">Cartoon Network (T)</channel>
<channel site="allente.no" lang="fi" xmltv_id="" site_id="fi#0032">CNBC (T)</channel>
<channel site="allente.no" lang="fi" xmltv_id="" site_id="fi#0033">CNN (T)</channel>
<channel site="allente.no" lang="fi" xmltv_id="" site_id="fi#0080">MTV (Nordic) (T)</channel>
<channel site="allente.no" lang="fi" xmltv_id="" site_id="fi#0084">National Geographic HD (S/F) (T)</channel>
<channel site="allente.no" lang="fi" xmltv_id="" site_id="fi#0086">Nickelodeon (Nordic) (T)</channel>
<channel site="allente.no" lang="fi" xmltv_id="" site_id="fi#0088">Nick Jr. (T)</channel>
<channel site="allente.no" lang="fi" xmltv_id="" site_id="fi#0147">SVT Barn HD (T)</channel>
<channel site="allente.no" lang="fi" xmltv_id="" site_id="fi#0148">SVT1 HD (T)</channel>
<channel site="allente.no" lang="fi" xmltv_id="" site_id="fi#0149">Kunskapskanalen HD (T)</channel>
<channel site="allente.no" lang="fi" xmltv_id="" site_id="fi#0159">Viaplay 1 Urheilu HD (T)</channel>
<channel site="allente.no" lang="fi" xmltv_id="" site_id="fi#0246">MTV 00s (T)</channel>
<channel site="allente.no" lang="fi" xmltv_id="" site_id="fi#0255">V sport live 1 (T)</channel>
<channel site="allente.no" lang="fi" xmltv_id="" site_id="fi#0256">V sport live 2 (T)</channel>
<channel site="allente.no" lang="fi" xmltv_id="" site_id="fi#0257">V sport live 3 (T)</channel>
<channel site="allente.no" lang="fi" xmltv_id="" site_id="fi#0258">V sport live 4 (T)</channel>
<channel site="allente.no" lang="fi" xmltv_id="" site_id="fi#0259">V sport live 5 (T)</channel>
<channel site="allente.no" lang="fi" xmltv_id="" site_id="fi#0269">V sport football HD (T)</channel>
<channel site="allente.no" lang="fi" xmltv_id="" site_id="fi#0274">Viaplay 3 Urheilu HD (T)</channel>
<channel site="allente.no" lang="fi" xmltv_id="" site_id="fi#0282">SVT2 HD (T)</channel>
<channel site="allente.no" lang="fi" xmltv_id="" site_id="fi#0299">V film action HD (T)</channel>
<channel site="allente.no" lang="fi" xmltv_id="" site_id="fi#0308">V film family (T)</channel>
<channel site="allente.no" lang="fi" xmltv_id="" site_id="fi#0321">V film premiere HD (T)</channel>
<channel site="allente.no" lang="fi" xmltv_id="" site_id="fi#0322">V film hits HD (T)</channel>
<channel site="allente.no" lang="fi" xmltv_id="" site_id="fi#0344">Al Jazeera English (T)</channel>
<channel site="allente.no" lang="fi" xmltv_id="" site_id="fi#0356">Viasat Nature HD (T)</channel>
<channel site="allente.no" lang="fi" xmltv_id="" site_id="fi#0357">Viasat History HD (T)</channel>
<channel site="allente.no" lang="fi" xmltv_id="" site_id="fi#0358">Viasat Explore HD (T)</channel>
<channel site="allente.no" lang="fi" xmltv_id="" site_id="fi#0362">V sport 1 HD (S/F) (T)</channel>
<channel site="allente.no" lang="fi" xmltv_id="" site_id="fi#0363">V sport vinter HD (T)</channel>
<channel site="allente.no" lang="fi" xmltv_id="" site_id="fi#0364">V sport golf HD (T)</channel>
<channel site="allente.no" lang="fi" xmltv_id="" site_id="fi#418">V sport ultra HD (T)</channel>
<channel site="allente.no" lang="fi" xmltv_id="" site_id="fi#488">Viaplay 2 Urheilu HD (T)</channel>
<channel site="allente.no" lang="fi" xmltv_id="" site_id="fi#527">V sport premium HD (T)</channel>
<channel site="allente.no" lang="fi" xmltv_id="" site_id="fi#570">Nicktoons (T)</channel>
<channel site="allente.no" lang="fi" xmltv_id="" site_id="fi#596">Sky News (T)</channel>
<channel site="allente.no" lang="fi" xmltv_id="" site_id="fi#604">MTV 80s (T)</channel>
<channel site="allente.no" lang="fi" xmltv_id="" site_id="fi#668">Horse &amp; Country (T)</channel>
<channel site="allente.no" lang="fi" xmltv_id="" site_id="fi#686">YLE TV1 HD (F) (T)</channel>
<channel site="allente.no" lang="fi" xmltv_id="" site_id="fi#687">YLE TV2 HD (F) (T)</channel>
<channel site="allente.no" lang="fi" xmltv_id="" site_id="fi#689">YLE Teema &amp; Fem HD (F) (T)</channel>
<channel site="allente.no" lang="fi" xmltv_id="" site_id="fi#968">MTV Aitio HD (F) (T)</channel>
<channel site="allente.no" lang="fi" xmltv_id="" site_id="fi#971">MTV Viihde HD (F) (T)</channel>
<channel site="allente.no" lang="fi" xmltv_id="" site_id="fi#972">SF Kanalen (T)</channel>
<channel site="allente.no" lang="fi" xmltv_id="" site_id="fi#1001">SkyShowtime 2 HD (T)</channel>
<channel site="allente.no" lang="fi" xmltv_id="" site_id="fi#1002">SkyShowtime 1 HD (T)</channel>
<channel site="allente.no" lang="fi" xmltv_id="" site_id="fi#1007">DW English (T)</channel>
<channel site="allente.no" lang="fi" xmltv_id="" site_id="fi#1008">Bloomberg (T)</channel>
<channel site="allente.no" lang="fi" xmltv_id="" site_id="fi#1016">BBC Nordic HD (D/F) (T)</channel>
<channel site="allente.no" lang="fi" xmltv_id="" site_id="fi#1024">Eurosport 2 HD (S/F) (T)</channel>
<channel site="allente.no" lang="fi" xmltv_id="" site_id="fi#1039">ID Investigation Discovery (S/F) (T)</channel>
<channel site="allente.no" lang="fi" xmltv_id="" site_id="fi#1076">MTV3 HD (F) (T)</channel>
<channel site="allente.no" lang="fi" xmltv_id="" site_id="fi#1077">Nelonen HD (F) (T)</channel>
<channel site="allente.no" lang="fi" xmltv_id="" site_id="fi#1078">MTV Sub HD (F) (T)</channel>
<channel site="allente.no" lang="fi" xmltv_id="" site_id="fi#1079">TV5 HD (F) (T)</channel>
<channel site="allente.no" lang="fi" xmltv_id="" site_id="fi#1080">liv HD (F) (T)</channel>
<channel site="allente.no" lang="fi" xmltv_id="" site_id="fi#1081">JIM HD (F) (T)</channel>
<channel site="allente.no" lang="fi" xmltv_id="" site_id="fi#1083">Discovery Channel HD (F) (T)</channel>
<channel site="allente.no" lang="fi" xmltv_id="" site_id="fi#1084">MTV Juniori HD (F) (T)</channel>
<channel site="allente.no" lang="fi" xmltv_id="" site_id="fi#1085">MTV Max HD (F) (T)</channel>
<channel site="allente.no" lang="fi" xmltv_id="" site_id="fi#1086">MTV Urheilu 1 HD (F) (T)</channel>
<channel site="allente.no" lang="fi" xmltv_id="" site_id="fi#1087">MTV Urheilu 2 HD (F) (T)</channel>
<channel site="allente.no" lang="fi" xmltv_id="" site_id="fi#1088">Eurosport 1 HD (F) (T)</channel>
<channel site="allente.no" lang="fi" xmltv_id="" site_id="fi#1094">Love Nature HD (T)</channel>
<channel site="allente.no" lang="fi" xmltv_id="" site_id="fi#1096">Moonbug (T)</channel>
<channel site="allente.no" lang="fi" xmltv_id="" site_id="fi#1097">Mezzo Live (T)</channel>
<channel site="allente.no" lang="fi" xmltv_id="" site_id="fi#1101">Dizi</channel>
</channels>

View File

@@ -0,0 +1,85 @@
<?xml version="1.0" encoding="UTF-8"?>
<channels>
<channel site="allente.no" lang="no" xmltv_id="" site_id="no#0016">BBC News (T)</channel>
<channel site="allente.no" lang="no" xmltv_id="" site_id="no#0028">Cartoon Network (T)</channel>
<channel site="allente.no" lang="no" xmltv_id="" site_id="no#0032">CNBC (T)</channel>
<channel site="allente.no" lang="no" xmltv_id="" site_id="no#0033">CNN (T)</channel>
<channel site="allente.no" lang="no" xmltv_id="" site_id="no#0051">DR2 HD (T)</channel>
<channel site="allente.no" lang="no" xmltv_id="" site_id="no#0056">FEM HD (T)</channel>
<channel site="allente.no" lang="no" xmltv_id="" site_id="no#0080">MTV (Nordic) (T)</channel>
<channel site="allente.no" lang="no" xmltv_id="" site_id="no#0086">Nickelodeon (Nordic) (T)</channel>
<channel site="allente.no" lang="no" xmltv_id="" site_id="no#0088">Nick Jr. (T)</channel>
<channel site="allente.no" lang="no" xmltv_id="" site_id="no#0090">NRK1 HD (T)</channel>
<channel site="allente.no" lang="no" xmltv_id="" site_id="no#0121">SVT1 HD (T)</channel>
<channel site="allente.no" lang="no" xmltv_id="" site_id="no#0141">SVT2 HD (T)</channel>
<channel site="allente.no" lang="no" xmltv_id="" site_id="no#0147">SVT Barn HD (T)</channel>
<channel site="allente.no" lang="no" xmltv_id="" site_id="no#0149">Kunskapskanalen HD (T)</channel>
<channel site="allente.no" lang="no" xmltv_id="" site_id="no#0187">TV 2 Direkte HD (N) (T)</channel>
<channel site="allente.no" lang="no" xmltv_id="" site_id="no#0188">TV 2 HD (D) (T)</channel>
<channel site="allente.no" lang="no" xmltv_id="" site_id="no#0197">TV 2 Sport Premium HD (N) (T)</channel>
<channel site="allente.no" lang="no" xmltv_id="" site_id="no#0198">TV 2 Sport Premium 2 HD (N) (T)</channel>
<channel site="allente.no" lang="no" xmltv_id="" site_id="no#0199">TV 2 Sport 1 HD (N) (T)</channel>
<channel site="allente.no" lang="no" xmltv_id="" site_id="no#0206">TV6 (N) (T)</channel>
<channel site="allente.no" lang="no" xmltv_id="" site_id="no#0246">MTV 00s (T)</channel>
<channel site="allente.no" lang="no" xmltv_id="" site_id="no#0255">V sport live 1 (T)</channel>
<channel site="allente.no" lang="no" xmltv_id="" site_id="no#0256">V sport live 2 (T)</channel>
<channel site="allente.no" lang="no" xmltv_id="" site_id="no#0257">V sport live 3 (T)</channel>
<channel site="allente.no" lang="no" xmltv_id="" site_id="no#0258">V sport live 4 (T)</channel>
<channel site="allente.no" lang="no" xmltv_id="" site_id="no#0259">V sport live 5 (T)</channel>
<channel site="allente.no" lang="no" xmltv_id="" site_id="no#0271">V sport+ HD (N) (T)</channel>
<channel site="allente.no" lang="no" xmltv_id="" site_id="no#0277">TV 2 Livsstil HD (N) (T)</channel>
<channel site="allente.no" lang="no" xmltv_id="" site_id="no#0288">NRK2 HD (T)</channel>
<channel site="allente.no" lang="no" xmltv_id="" site_id="no#0289">NRK3/ NRK Super HD (T)</channel>
<channel site="allente.no" lang="no" xmltv_id="" site_id="no#0298">TV3 HD (N) (T)</channel>
<channel site="allente.no" lang="no" xmltv_id="" site_id="no#0299">V film action HD (T)</channel>
<channel site="allente.no" lang="no" xmltv_id="" site_id="no#0308">V film family (T)</channel>
<channel site="allente.no" lang="no" xmltv_id="" site_id="no#0316">National Geographic HD (N) (T)</channel>
<channel site="allente.no" lang="no" xmltv_id="" site_id="no#0320">V series HD (T)</channel>
<channel site="allente.no" lang="no" xmltv_id="" site_id="no#0321">V film premiere HD (T)</channel>
<channel site="allente.no" lang="no" xmltv_id="" site_id="no#0322">V film hits HD (T)</channel>
<channel site="allente.no" lang="no" xmltv_id="" site_id="no#0344">Al Jazeera English (T)</channel>
<channel site="allente.no" lang="no" xmltv_id="" site_id="no#0356">Viasat Nature HD (T)</channel>
<channel site="allente.no" lang="no" xmltv_id="" site_id="no#0357">Viasat History HD (T)</channel>
<channel site="allente.no" lang="no" xmltv_id="" site_id="no#0358">Viasat Explore HD (T)</channel>
<channel site="allente.no" lang="no" xmltv_id="" site_id="no#0361">TV3+ HD (N) (T)</channel>
<channel site="allente.no" lang="no" xmltv_id="" site_id="no#0364">V sport golf HD (T)</channel>
<channel site="allente.no" lang="no" xmltv_id="" site_id="no#0365">V sport 1 HD (N) (T)</channel>
<channel site="allente.no" lang="no" xmltv_id="" site_id="no#0405">TV 2 Zebra HD (N) (T)</channel>
<channel site="allente.no" lang="no" xmltv_id="" site_id="no#0406">TV 2 Sport 2 HD (N) (T)</channel>
<channel site="allente.no" lang="no" xmltv_id="" site_id="no#418">V sport ultra HD (T)</channel>
<channel site="allente.no" lang="no" xmltv_id="" site_id="no#452">DR1 HD (T)</channel>
<channel site="allente.no" lang="no" xmltv_id="" site_id="no#457">TV 2 Nyheter HD (N) (T)</channel>
<channel site="allente.no" lang="no" xmltv_id="" site_id="no#530">Eurosport Norge HD (T)</channel>
<channel site="allente.no" lang="no" xmltv_id="" site_id="no#531">Eurosport 1 HD (N) (T)</channel>
<channel site="allente.no" lang="no" xmltv_id="" site_id="no#532">Discovery Channel HD (N) (T)</channel>
<channel site="allente.no" lang="no" xmltv_id="" site_id="no#533">REX HD (T)</channel>
<channel site="allente.no" lang="no" xmltv_id="" site_id="no#534">TVNorge HD (T)</channel>
<channel site="allente.no" lang="no" xmltv_id="" site_id="no#535">VOX HD (T)</channel>
<channel site="allente.no" lang="no" xmltv_id="" site_id="no#570">Nicktoons (T)</channel>
<channel site="allente.no" lang="no" xmltv_id="" site_id="no#596">Sky News (T)</channel>
<channel site="allente.no" lang="no" xmltv_id="" site_id="no#604">MTV 80s (T)</channel>
<channel site="allente.no" lang="no" xmltv_id="" site_id="no#608">V sport 2 HD (N) (T)</channel>
<channel site="allente.no" lang="no" xmltv_id="" site_id="no#609">V sport 3 HD (N) (T)</channel>
<channel site="allente.no" lang="no" xmltv_id="" site_id="no#668">Horse &amp; Country (T)</channel>
<channel site="allente.no" lang="no" xmltv_id="" site_id="no#972">SF Kanalen (T)</channel>
<channel site="allente.no" lang="no" xmltv_id="" site_id="no#1001">SkyShowtime 2 HD (T)</channel>
<channel site="allente.no" lang="no" xmltv_id="" site_id="no#1002">SkyShowtime 1 HD (T)</channel>
<channel site="allente.no" lang="no" xmltv_id="" site_id="no#1007">DW English (T)</channel>
<channel site="allente.no" lang="no" xmltv_id="" site_id="no#1008">Bloomberg (T)</channel>
<channel site="allente.no" lang="no" xmltv_id="" site_id="no#1011">ID Investigation Discovery (N) (T)</channel>
<channel site="allente.no" lang="no" xmltv_id="" site_id="no#1012">TLC Norge HD (T)</channel>
<channel site="allente.no" lang="no" xmltv_id="" site_id="no#1017">BBC Nordic HD (N) (T)</channel>
<channel site="allente.no" lang="no" xmltv_id="" site_id="no#1034">VGTV HD (T)</channel>
<channel site="allente.no" lang="no" xmltv_id="" site_id="no#1047">V sport Premier League HD (T)</channel>
<channel site="allente.no" lang="no" xmltv_id="" site_id="no#1048">V sport Premier League 1 HD (T)</channel>
<channel site="allente.no" lang="no" xmltv_id="" site_id="no#1049">V sport Premier League 2 HD (T)</channel>
<channel site="allente.no" lang="no" xmltv_id="" site_id="no#1050">V sport Premier League 3 HD (T)</channel>
<channel site="allente.no" lang="no" xmltv_id="" site_id="no#1051">V sport Premier League 4 HD (T)</channel>
<channel site="allente.no" lang="no" xmltv_id="" site_id="no#1089">Heim HD (T)</channel>
<channel site="allente.no" lang="no" xmltv_id="" site_id="no#1090">Stars HD (N) (T)</channel>
<channel site="allente.no" lang="no" xmltv_id="" site_id="no#1091">Hits HD (N) (T)</channel>
<channel site="allente.no" lang="no" xmltv_id="" site_id="no#1094">Love Nature HD (T)</channel>
<channel site="allente.no" lang="no" xmltv_id="" site_id="no#1096">Moonbug (T)</channel>
<channel site="allente.no" lang="no" xmltv_id="" site_id="no#1097">Mezzo Live (T)</channel>
<channel site="allente.no" lang="no" xmltv_id="" site_id="no#1101">Dizi</channel>
</channels>

View File

@@ -0,0 +1,100 @@
<?xml version="1.0" encoding="UTF-8"?>
<channels>
<channel site="allente.no" lang="se" xmltv_id="" site_id="se#0016">BBC News (T)</channel>
<channel site="allente.no" lang="se" xmltv_id="" site_id="se#0028">Cartoon Network (T)</channel>
<channel site="allente.no" lang="se" xmltv_id="" site_id="se#0032">CNBC (T)</channel>
<channel site="allente.no" lang="se" xmltv_id="" site_id="se#0033">CNN (T)</channel>
<channel site="allente.no" lang="se" xmltv_id="" site_id="se#0048">DR Ramasjang (T)</channel>
<channel site="allente.no" lang="se" xmltv_id="" site_id="se#0051">DR2 HD (T)</channel>
<channel site="allente.no" lang="se" xmltv_id="" site_id="se#0080">MTV (Nordic) (T)</channel>
<channel site="allente.no" lang="se" xmltv_id="" site_id="se#0084">National Geographic HD (S/F) (T)</channel>
<channel site="allente.no" lang="se" xmltv_id="" site_id="se#0086">Nickelodeon (Nordic) (T)</channel>
<channel site="allente.no" lang="se" xmltv_id="" site_id="se#0088">Nick Jr. (T)</channel>
<channel site="allente.no" lang="se" xmltv_id="" site_id="se#0090">NRK1 HD (T)</channel>
<channel site="allente.no" lang="se" xmltv_id="" site_id="se#0099">MTV 80s (T)</channel>
<channel site="allente.no" lang="se" xmltv_id="" site_id="se#146">SVT24 HD (T)</channel>
<channel site="allente.no" lang="se" xmltv_id="" site_id="se#0147">SVT Barn HD (T)</channel>
<channel site="allente.no" lang="se" xmltv_id="" site_id="se#0148">SVT1 HD (T)</channel>
<channel site="allente.no" lang="se" xmltv_id="" site_id="se#0149">Kunskapskanalen HD (T)</channel>
<channel site="allente.no" lang="se" xmltv_id="" site_id="se#0227">TV4 HD (T)</channel>
<channel site="allente.no" lang="se" xmltv_id="" site_id="se#0228">TV4 Fakta (T)</channel>
<channel site="allente.no" lang="se" xmltv_id="" site_id="se#0229">TV4 Film (T)</channel>
<channel site="allente.no" lang="se" xmltv_id="" site_id="se#0230">TV4 Guld (T)</channel>
<channel site="allente.no" lang="se" xmltv_id="" site_id="se#0232">Sjuan HD (S) (T)</channel>
<channel site="allente.no" lang="se" xmltv_id="" site_id="se#0235">Kanal 11 HD (S) (T)</channel>
<channel site="allente.no" lang="se" xmltv_id="" site_id="se#0246">MTV 00s (T)</channel>
<channel site="allente.no" lang="se" xmltv_id="" site_id="se#0255">V sport live 1 (T)</channel>
<channel site="allente.no" lang="se" xmltv_id="" site_id="se#0256">V sport live 2 (T)</channel>
<channel site="allente.no" lang="se" xmltv_id="" site_id="se#0257">V sport live 3 (T)</channel>
<channel site="allente.no" lang="se" xmltv_id="" site_id="se#0258">V sport live 4 (T)</channel>
<channel site="allente.no" lang="se" xmltv_id="" site_id="se#0259">V sport live 5 (T)</channel>
<channel site="allente.no" lang="se" xmltv_id="" site_id="se#0269">V sport football HD (T)</channel>
<channel site="allente.no" lang="se" xmltv_id="" site_id="se#0279">Kanal 5 HD (S) (T)</channel>
<channel site="allente.no" lang="se" xmltv_id="" site_id="se#0282">SVT2 HD (T)</channel>
<channel site="allente.no" lang="se" xmltv_id="" site_id="se#0288">NRK2 HD (T)</channel>
<channel site="allente.no" lang="se" xmltv_id="" site_id="se#0289">NRK3/ NRK Super HD (T)</channel>
<channel site="allente.no" lang="se" xmltv_id="" site_id="se#0290">TV3 HD (S) (T)</channel>
<channel site="allente.no" lang="se" xmltv_id="" site_id="se#0292">V sport motor HD (T)</channel>
<channel site="allente.no" lang="se" xmltv_id="" site_id="se#0297">TV 2 HD (D) (T)</channel>
<channel site="allente.no" lang="se" xmltv_id="" site_id="se#0299">V film action HD (T)</channel>
<channel site="allente.no" lang="se" xmltv_id="" site_id="se#0308">V film family (T)</channel>
<channel site="allente.no" lang="se" xmltv_id="" site_id="se#0320">V series HD (T)</channel>
<channel site="allente.no" lang="se" xmltv_id="" site_id="se#0321">V film premiere HD (T)</channel>
<channel site="allente.no" lang="se" xmltv_id="" site_id="se#0322">V film hits HD (T)</channel>
<channel site="allente.no" lang="se" xmltv_id="" site_id="se#0325">TV4 Sportkanalen HD (T)</channel>
<channel site="allente.no" lang="se" xmltv_id="" site_id="se#0344">Al Jazeera English (T)</channel>
<channel site="allente.no" lang="se" xmltv_id="" site_id="se#0356">Viasat Nature HD (T)</channel>
<channel site="allente.no" lang="se" xmltv_id="" site_id="se#0357">Viasat History HD (T)</channel>
<channel site="allente.no" lang="se" xmltv_id="" site_id="se#0358">Viasat Explore HD (T)</channel>
<channel site="allente.no" lang="se" xmltv_id="" site_id="se#0360">TV6 HD (S) (T)</channel>
<channel site="allente.no" lang="se" xmltv_id="" site_id="se#0362">V sport 1 HD (S/F) (T)</channel>
<channel site="allente.no" lang="se" xmltv_id="" site_id="se#0363">V sport vinter HD (T)</channel>
<channel site="allente.no" lang="se" xmltv_id="" site_id="se#0364">V sport golf HD (T)</channel>
<channel site="allente.no" lang="se" xmltv_id="" site_id="se#418">V sport ultra HD (T)</channel>
<channel site="allente.no" lang="se" xmltv_id="" site_id="se#452">DR1 HD (T)</channel>
<channel site="allente.no" lang="se" xmltv_id="" site_id="se#474">Kanal 9 HD (S) (T)</channel>
<channel site="allente.no" lang="se" xmltv_id="" site_id="se#493">Discovery Channel HD (S) (T)</channel>
<channel site="allente.no" lang="se" xmltv_id="" site_id="se#527">V sport premium HD (T)</channel>
<channel site="allente.no" lang="se" xmltv_id="" site_id="se#570">Nicktoons (T)</channel>
<channel site="allente.no" lang="se" xmltv_id="" site_id="se#596">Sky News (T)</channel>
<channel site="allente.no" lang="se" xmltv_id="" site_id="se#637">HBO Max Extra 1 HD (T)</channel>
<channel site="allente.no" lang="se" xmltv_id="" site_id="se#638">HBO Max Extra 2 HD (T)</channel>
<channel site="allente.no" lang="se" xmltv_id="" site_id="se#639">HBO Max Extra 3 HD (T)</channel>
<channel site="allente.no" lang="se" xmltv_id="" site_id="se#640">HBO Max Extra 4 HD (T)</channel>
<channel site="allente.no" lang="se" xmltv_id="" site_id="se#641">HBO Max Extra 5 HD (T)</channel>
<channel site="allente.no" lang="se" xmltv_id="" site_id="se#642">HBO Max Extra 6 HD (T)</channel>
<channel site="allente.no" lang="se" xmltv_id="" site_id="se#643">HBO Max Extra 7 HD (T)</channel>
<channel site="allente.no" lang="se" xmltv_id="" site_id="se#644">HBO Max Extra 8 HD (T)</channel>
<channel site="allente.no" lang="se" xmltv_id="" site_id="se#656">TV4 Hockey HD (T)</channel>
<channel site="allente.no" lang="se" xmltv_id="" site_id="se#657">TV4 Fotboll HD (T)</channel>
<channel site="allente.no" lang="se" xmltv_id="" site_id="se#658">TV4 Motor HD (T)</channel>
<channel site="allente.no" lang="se" xmltv_id="" site_id="se#659">TV4 Sport Live 1 HD (T)</channel>
<channel site="allente.no" lang="se" xmltv_id="" site_id="se#660">TV4 Sport Live 2 HD (T)</channel>
<channel site="allente.no" lang="se" xmltv_id="" site_id="se#661">TV4 Sport Live 3 HD (T)</channel>
<channel site="allente.no" lang="se" xmltv_id="" site_id="se#662">TV4 Sport Live 4 HD (T)</channel>
<channel site="allente.no" lang="se" xmltv_id="" site_id="se#664">TV12 HD (S) (T)</channel>
<channel site="allente.no" lang="se" xmltv_id="" site_id="se#666">TV8 HD (S) (T)</channel>
<channel site="allente.no" lang="se" xmltv_id="" site_id="se#667">TV10 HD (S) (T)</channel>
<channel site="allente.no" lang="se" xmltv_id="" site_id="se#668">Horse &amp; Country (T)</channel>
<channel site="allente.no" lang="se" xmltv_id="" site_id="se#675">TV4 Tennis HD (T)</channel>
<channel site="allente.no" lang="se" xmltv_id="" site_id="se#715">V sport extra HD (T)</channel>
<channel site="allente.no" lang="se" xmltv_id="" site_id="se#722">Godare (T)</channel>
<channel site="allente.no" lang="se" xmltv_id="" site_id="se#969">TV4 Hits HD (T)</channel>
<channel site="allente.no" lang="se" xmltv_id="" site_id="se#970">TV4 Stars HD (T)</channel>
<channel site="allente.no" lang="se" xmltv_id="" site_id="se#972">SF Kanalen (T)</channel>
<channel site="allente.no" lang="se" xmltv_id="" site_id="se#1000">ATG Live HD (T)</channel>
<channel site="allente.no" lang="se" xmltv_id="" site_id="se#1001">SkyShowtime 2 HD (T)</channel>
<channel site="allente.no" lang="se" xmltv_id="" site_id="se#1002">SkyShowtime 1 HD (T)</channel>
<channel site="allente.no" lang="se" xmltv_id="" site_id="se#1007">DW English (T)</channel>
<channel site="allente.no" lang="se" xmltv_id="" site_id="se#1008">Bloomberg (T)</channel>
<channel site="allente.no" lang="se" xmltv_id="" site_id="se#1016">BBC Nordic HD (D/F) (T)</channel>
<channel site="allente.no" lang="se" xmltv_id="" site_id="se#1023">Eurosport 1 HD (S) (T)</channel>
<channel site="allente.no" lang="se" xmltv_id="" site_id="se#1024">Eurosport 2 HD (S/F) (T)</channel>
<channel site="allente.no" lang="se" xmltv_id="" site_id="se#1038">TLC Sverige HD (T)</channel>
<channel site="allente.no" lang="se" xmltv_id="" site_id="se#1039">ID Investigation Discovery (S/F) (T)</channel>
<channel site="allente.no" lang="se" xmltv_id="" site_id="se#1053">Axess TV HD -IP</channel>
<channel site="allente.no" lang="se" xmltv_id="" site_id="se#1094">Love Nature HD (T)</channel>
<channel site="allente.no" lang="se" xmltv_id="" site_id="se#1096">Moonbug (T)</channel>
<channel site="allente.no" lang="se" xmltv_id="" site_id="se#1097">Mezzo Live (T)</channel>
<channel site="allente.no" lang="se" xmltv_id="" site_id="se#1101">Dizi</channel>
</channels>

View File

@@ -1,21 +1,28 @@
# allente.no
https://www.allente.no/tv-guide/
### Download the guide
```sh
npm run grab --- --site=allente.no
```
### Update channel list
```sh
npm run channels:parse --- --config=./sites/allente.no/allente.no.config.js --output=./sites/allente.no/allente.no.channels.xml
```
### Test
```sh
npm test --- allente.no
```
# allente.no
https://www.allente.no/tv-guide/
### Available countries
no = Norway
fi = Finland
dk = Danemark
se = Sweden
### Download the guide
```sh
npm run grab --- --site=allente.no
```
### Update channel list
```sh
npm run channels:parse --- --config=./sites/allente.no/allente.no.config.js --output=./sites/allente.no/allente.no_<COUNTRY>.channels.xml --set=country:<COUNTRY>
```
### Test
```sh
npm test --- allente.no
```

View File

@@ -1 +0,0 @@
{"channels":[{"id":"0148","icon":"//images.ctfassets.net/989y85n5kcxs/5uT9g9pdQWRZeDPQXVI9g6/9cc44da567f591822ed645c99ecdcb64/SVT_1_black_new__2_.png","name":"SVT1 HD (T)","events":[{"id":"0086202208220710","live":false,"time":"2022-08-22T07:10:00Z","title":"Hemmagympa med Sofia","details":{"title":"Hemmagympa med Sofia","image":"https://viasatps.api.comspace.se/PS/channeldate/image/viasat.ps/21/2022-08-22/se.cs.svt1.event.A_41214031600.jpg?size=2560x1440","description":"Svenskt träningsprogram från 2021. Styrka. Sofia Åhman leder SVT:s hemmagympapass. Denna gång fokuserar vi på styrka.","season":4,"episode":1,"categories":["other"],"duration":"20"}}]}]}

View File

@@ -1 +0,0 @@
{"date":"2001-11-17","categories":[],"channels":[]}

View File

@@ -1,95 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<channels>
<channel site="allente.se" lang="en" xmltv_id="AlJazeera.qa@English" site_id="0344">Al Jazeera English -OTT</channel>
<channel site="allente.se" lang="sv" xmltv_id="AnimalPlanetNordic.uk@HD" site_id="1005">Animal Planet HD (T)</channel>
<channel site="allente.se" lang="sv" xmltv_id="ATGLive.se" site_id="1000">ATG Live HD (T)</channel>
<channel site="allente.se" lang="sv" xmltv_id="AxessTV.se" site_id="1053">Axess TV HD -IP</channel>
<channel site="allente.se" lang="sv" xmltv_id="BBCBrit.uk@Sweden" site_id="1016">BBC Nordic HD (S/D/F) (T)</channel>
<channel site="allente.se" lang="en" xmltv_id="BBCNews.uk@Europe" site_id="0016">BBC News (T)</channel>
<channel site="allente.se" lang="en" xmltv_id="BloombergTV.us@Europe" site_id="1008">Bloomberg (T)</channel>
<channel site="allente.se" lang="sv" xmltv_id="BoomerangNordic.uk" site_id="0017">Cartoonito (T)</channel>
<channel site="allente.se" lang="sv" xmltv_id="" site_id="0028">Cartoon Network (T)</channel>
<channel site="allente.se" lang="sv" xmltv_id="TV4Fotboll.se" site_id="657">TV4 Fotboll (T)</channel>
<channel site="allente.se" lang="sv" xmltv_id="TV4Hits.se" site_id="969">TV4 Hits (T)</channel>
<channel site="allente.se" lang="sv" xmltv_id="TV4Hockey.se" site_id="656">TV4 Hockey (T)</channel>
<channel site="allente.se" lang="sv" xmltv_id="TV4SportLive2.se" site_id="660">TV4 Sport Live 2 (T)</channel>
<channel site="allente.se" lang="sv" xmltv_id="TV4SportLive3.se" site_id="661">TV4 Sport Live 3 (T)</channel>
<channel site="allente.se" lang="sv" xmltv_id="TV4SportLive4.se" site_id="662">TV4 Sport Live 4 (T)</channel>
<channel site="allente.se" lang="sv" xmltv_id="TV4SportLive1.se" site_id="659">TV4 Sport Live 1 (T)</channel>
<channel site="allente.se" lang="sv" xmltv_id="TV4Motor.se" site_id="658">TV4 Motor (T)</channel>
<channel site="allente.se" lang="sv" xmltv_id="TV4Stars.se" site_id="970">TV4 Stars (T)</channel>
<channel site="allente.se" lang="en" xmltv_id="CNBCEurope.uk" site_id="0032">CNBC (T)</channel>
<channel site="allente.se" lang="en" xmltv_id="CNNInternational.us@MENA" site_id="0033">CNN (T)</channel>
<channel site="allente.se" lang="sv" xmltv_id="DiscoveryChannel.se" site_id="493">Discovery Channel HD (S) (T)</channel>
<channel site="allente.se" lang="sv" xmltv_id="DiscoveryScienceEurope.uk@Sweden" site_id="1006">Discovery Science (T)</channel>
<channel site="allente.se" lang="da" xmltv_id="DR1.dk" site_id="452">DR1 HD (T)</channel>
<channel site="allente.se" lang="da" xmltv_id="DR2.dk" site_id="0051">DR2 HD (T)</channel>
<channel site="allente.se" lang="da" xmltv_id="DRRamasjang.dk" site_id="0048">DR Ramasjang (T)</channel>
<channel site="allente.se" lang="en" xmltv_id="DW.de@English" site_id="1007">DW English (T)</channel>
<channel site="allente.se" lang="sv" xmltv_id="Eurosport1.fr" site_id="1023">Eurosport 1 HD (S) (T)</channel>
<channel site="allente.se" lang="sv" xmltv_id="Eurosport2.fr" site_id="1024">Eurosport 2 HD (S/F) (T)</channel>
<channel site="allente.se" lang="en" xmltv_id="France24.fr@English" site_id="1033">France 24 (T)</channel>
<channel site="allente.se" lang="sv" xmltv_id="Godare.se" site_id="722">Godare HD -IP</channel>
<channel site="allente.se" lang="sv" xmltv_id="History2Nordic.us" site_id="1004">HISTORY 2 HD (T)</channel>
<channel site="allente.se" lang="sv" xmltv_id="History.se" site_id="652">HISTORY HD (S) (T)</channel>
<channel site="allente.se" lang="sv" xmltv_id="HorseCountryTV.uk" site_id="668">Horse &amp; Country HD -IP</channel>
<channel site="allente.se" lang="sv" xmltv_id="InvestigationDiscovery.se" site_id="1039">ID Investigation Discovery (S) (T)</channel>
<channel site="allente.se" lang="sv" xmltv_id="Kanal5.se" site_id="0279">Kanal 5 HD (S) (T)</channel>
<channel site="allente.se" lang="sv" xmltv_id="Kanal9.se" site_id="474">Kanal 9 HD (S) (T)</channel>
<channel site="allente.se" lang="sv" xmltv_id="Kanal11.se" site_id="0235">Kanal 11 HD (S) (T)</channel>
<channel site="allente.se" lang="sv" xmltv_id="Kunskapskanalen.se" site_id="0149">Kunskapskanalen HD (T)</channel>
<channel site="allente.se" lang="en" xmltv_id="Motorvision.de" site_id="1009">MOTORVISION TV HD (T)</channel>
<channel site="allente.se" lang="en" xmltv_id="MTV00s.uk" site_id="0246">MTV 00s (T)</channel>
<channel site="allente.se" lang="en" xmltv_id="MTV80s.uk" site_id="0099">MTV 80s (T)</channel>
<channel site="allente.se" lang="sv" xmltv_id="MTVGlobal.uk" site_id="0080">MTV (Nordic) (T)</channel>
<channel site="allente.se" lang="sv" xmltv_id="NationalGeographic.se" site_id="0084">National Geographic HD (S/F) (T)</channel>
<channel site="allente.se" lang="sv" xmltv_id="NickelodeonScandinavia.nl" site_id="0086">Nickelodeon (Nordic) (T)</channel>
<channel site="allente.se" lang="sv" xmltv_id="NickJrScandinavia.nl" site_id="0088">Nick Jr. (T)</channel>
<channel site="allente.se" lang="sv" xmltv_id="NicktoonsScandinavia.nl" site_id="570">Nicktoons (T)</channel>
<channel site="allente.se" lang="sv" xmltv_id="NRK1.no" site_id="0090">NRK1 HD (T)</channel>
<channel site="allente.se" lang="sv" xmltv_id="NRK2.no" site_id="0288">NRK2 HD (T)</channel>
<channel site="allente.se" lang="sv" xmltv_id="NRK3.no" site_id="0289">NRK3/ NRK Super HD (T)</channel>
<channel site="allente.se" lang="sv" xmltv_id="ParamountPlusMovies.se" site_id="1001">SkyShowtime 2 (T)</channel>
<channel site="allente.se" lang="sv" xmltv_id="ParamountPlusSeries.se" site_id="1002">SkyShowtime 1 (T)</channel>
<channel site="allente.se" lang="sv" xmltv_id="SFkanalen.se" site_id="972">SF Kanalen (T)</channel>
<channel site="allente.se" lang="sv" xmltv_id="Sjuan.se" site_id="0232">Sjuan HD (S) (T)</channel>
<channel site="allente.se" lang="en" xmltv_id="SkyNewsInternational.uk" site_id="596">Sky News (T)</channel>
<channel site="allente.se" lang="sv" xmltv_id="Sportkanalen.se" site_id="0325">TV4 Sportkanalen (T)</channel>
<channel site="allente.se" lang="sv" xmltv_id="SVT1.se" site_id="0148">SVT1 HD (T)</channel>
<channel site="allente.se" lang="sv" xmltv_id="SVT2.se" site_id="0282">SVT2 HD (T)</channel>
<channel site="allente.se" lang="sv" xmltv_id="SVT24.se" site_id="146">SVT24 HD (T)</channel>
<channel site="allente.se" lang="sv" xmltv_id="SVTBarn.se" site_id="0147">SVT Barn HD (T)</channel>
<channel site="allente.se" lang="sv" xmltv_id="TLC.se" site_id="1038">TLC Sverige HD (T)</channel>
<channel site="allente.se" lang="da" xmltv_id="TV2.dk" site_id="0297">TV 2 HD (D) (T)</channel>
<channel site="allente.se" lang="sv" xmltv_id="TV3.se" site_id="0290">TV3 HD (S) (T)</channel>
<channel site="allente.se" lang="sv" xmltv_id="TV4.se" site_id="0227">TV4 HD (T)</channel>
<channel site="allente.se" lang="sv" xmltv_id="TV4Fakta.se" site_id="0228">TV4 Fakta (T)</channel>
<channel site="allente.se" lang="sv" xmltv_id="TV4Film.se" site_id="0229">TV4 Film (T)</channel>
<channel site="allente.se" lang="sv" xmltv_id="TV4Guld.se" site_id="0230">TV4 Guld (T)</channel>
<channel site="allente.se" lang="sv" xmltv_id="TV4Tennis.se" site_id="675">TV4 Tennis (T)</channel>
<channel site="allente.se" lang="sv" xmltv_id="TV6.se" site_id="0360">TV6 HD (S) (T)</channel>
<channel site="allente.se" lang="sv" xmltv_id="TV8.se" site_id="666">TV8 HD (S) (T)</channel>
<channel site="allente.se" lang="sv" xmltv_id="TV10.se" site_id="667">TV10 HD (S) (T)</channel>
<channel site="allente.se" lang="sv" xmltv_id="TV12.se" site_id="664">TV12 HD (S) (T)</channel>
<channel site="allente.se" lang="sv" xmltv_id="VFilmAction.se" site_id="0299">V film action HD (T)</channel>
<channel site="allente.se" lang="sv" xmltv_id="VFilmFamily.se" site_id="0308">V film family (T)</channel>
<channel site="allente.se" lang="sv" xmltv_id="VFilmHits.se" site_id="0322">V film hits HD (T)</channel>
<channel site="allente.se" lang="sv" xmltv_id="VFilmPremiere.se" site_id="0321">V film premiere HD (T)</channel>
<channel site="allente.se" lang="sv" xmltv_id="ViasatExplore.se" site_id="0358">Viasat Explore HD (T)</channel>
<channel site="allente.se" lang="sv" xmltv_id="ViasatHistory.se" site_id="0357">Viasat History HD (T)</channel>
<channel site="allente.se" lang="sv" xmltv_id="ViasatNature.se" site_id="0356">Viasat Nature HD (T)</channel>
<channel site="allente.se" lang="sv" xmltv_id="VSeries.se" site_id="0320">V series HD (T)</channel>
<channel site="allente.se" lang="sv" xmltv_id="VSport1.se" site_id="0362">V sport 1 HD (S/F) (T)</channel>
<channel site="allente.se" lang="sv" xmltv_id="VSportExtra.se" site_id="715">V sport extra HD (T)</channel>
<channel site="allente.se" lang="sv" xmltv_id="VSportFootball.se" site_id="0269">V sport football HD (T)</channel>
<channel site="allente.se" lang="sv" xmltv_id="VSportGolf.se" site_id="0364">V sport golf HD (T)</channel>
<channel site="allente.se" lang="sv" xmltv_id="VSportLive1.se" site_id="0255">V sport live 1 (T)</channel>
<channel site="allente.se" lang="sv" xmltv_id="VSportLive2.se" site_id="0256">V sport live 2 (T)</channel>
<channel site="allente.se" lang="sv" xmltv_id="VSportLive3.se" site_id="0257">V sport live 3 (T)</channel>
<channel site="allente.se" lang="sv" xmltv_id="VSportLive4.se" site_id="0258">V sport live 4 (T)</channel>
<channel site="allente.se" lang="sv" xmltv_id="VSportLive5.se" site_id="0259">V sport live 5 (T)</channel>
<channel site="allente.se" lang="sv" xmltv_id="VSportMotor.se" site_id="0292">V sport motor HD (T)</channel>
<channel site="allente.se" lang="sv" xmltv_id="VSportPremium.se" site_id="527">V sport premium HD (T)</channel>
<channel site="allente.se" lang="sv" xmltv_id="VSportUltraHD.se" site_id="418">V sport ultra HD (T)</channel>
<channel site="allente.se" lang="sv" xmltv_id="VSportVinter.se" site_id="0363">V sport vinter HD (T)</channel>
</channels>

View File

@@ -1,65 +0,0 @@
const dayjs = require('dayjs')
module.exports = {
site: 'allente.se',
days: 2,
request: {
cache: {
ttl: 60 * 60 * 1000 // 1 hour
}
},
url({ date }) {
return `https://cs-vcb.allente.se/epg/events?date=${date.format('YYYY-MM-DD')}`
},
parser({ content, channel }) {
let programs = []
const items = parseItems(content, channel)
items.forEach(item => {
if (!item.details) return
const start = dayjs(item.time)
const stop = start.add(item.details.duration, 'm')
programs.push({
title: item.title,
category: item.details.categories,
description: item.details.description,
image: item.details.image,
season: parseSeason(item),
episode: parseEpisode(item),
start,
stop
})
})
return programs
},
async channels() {
const axios = require('axios')
const data = await axios
.get(`https://cs-vcb.allente.se/epg/events?date=${dayjs().format('YYYY-MM-DD')}`)
.then(r => r.data)
.catch(console.log)
return data.channels.map(item => {
return {
lang: 'sv',
site_id: item.id,
name: item.name
}
})
}
}
function parseItems(content, channel) {
const data = JSON.parse(content)
if (!data || !Array.isArray(data.channels)) return []
const channelData = data.channels.find(i => i.id === channel.site_id)
return channelData && Array.isArray(channelData.events) ? channelData.events : []
}
function parseSeason(item) {
return item.details.season || null
}
function parseEpisode(item) {
return item.details.episode || null
}

View File

@@ -1,51 +0,0 @@
const { parser, url } = require('./allente.se.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')
dayjs.extend(customParseFormat)
dayjs.extend(utc)
const date = dayjs.utc('2021-11-17', 'YYYY-MM-DD').startOf('d')
const channel = {
site_id: '0148',
xmltv_id: 'SVT1.se'
}
it('can generate valid url', () => {
expect(url({ date, channel })).toBe('https://cs-vcb.allente.se/epg/events?date=2021-11-17')
})
it('can parse response', () => {
const content = fs.readFileSync(path.resolve(__dirname, '__data__/content.json'))
const result = parser({ content, channel }).map(p => {
p.start = p.start.toJSON()
p.stop = p.stop.toJSON()
return p
})
expect(result).toMatchObject([
{
start: '2022-08-22T07:10:00.000Z',
stop: '2022-08-22T07:30:00.000Z',
title: 'Hemmagympa med Sofia',
category: ['other'],
description:
'Svenskt träningsprogram från 2021. Styrka. Sofia Åhman leder SVT:s hemmagympapass. Denna gång fokuserar vi på styrka.',
image:
'https://viasatps.api.comspace.se/PS/channeldate/image/viasat.ps/21/2022-08-22/se.cs.svt1.event.A_41214031600.jpg?size=2560x1440',
season: 4,
episode: 1
}
])
})
it('can handle empty guide', () => {
const result = parser({
date,
channel,
content: fs.readFileSync(path.resolve(__dirname, '__data__/no_content.json'))
})
expect(result).toMatchObject([])
})

View File

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

View File

@@ -1,4 +1,4 @@
<?xml version="1.0" encoding="UTF-8"?>
<channels>
<channel site="andorradifusio.ad" lang="ca" xmltv_id="AndorraTV.ad" site_id="atv">ATV</channel>
<?xml version="1.0" encoding="UTF-8"?>
<channels>
<channel site="andorradifusio.ad" lang="ca" xmltv_id="AndorraTV.ad" site_id="atv">ATV</channel>
</channels>

View File

@@ -1,59 +1,59 @@
const cheerio = require('cheerio')
const { DateTime } = require('luxon')
module.exports = {
site: 'andorradifusio.ad',
days: 2,
url({ channel }) {
return `https://www.andorradifusio.ad/programacio/${channel.site_id}`
},
parser({ content, date }) {
const programs = []
const items = parseItems(content, date)
items.forEach(item => {
const prev = programs[programs.length - 1]
let start = parseStart(item, date)
if (prev) {
if (start < prev.start) {
start = start.plus({ days: 1 })
date = date.add(1, 'd')
}
prev.stop = start
}
const stop = start.plus({ hours: 1 })
programs.push({
title: item.title,
start,
stop
})
})
return programs
}
}
function parseStart(item, date) {
const dateString = `${date.format('MM/DD/YYYY')} ${item.time}`
return DateTime.fromFormat(dateString, 'MM/dd/yyyy HH:mm', { zone: 'Europe/Madrid' }).toUTC()
}
function parseItems(content, date) {
const $ = cheerio.load(content)
const day = DateTime.fromMillis(date.valueOf()).setLocale('ca').toFormat('dd LLLL').toLowerCase()
const column = $('.programacio-dia > h3 > .dia')
.filter((i, el) => $(el).text() === day.slice(0, 6) + '.')
.first()
.parent()
.parent()
const items = []
const titles = column.find('p').toArray()
column.find('h4').each((i, time) => {
items.push({
time: $(time).text(),
title: $(titles[i]).text()
})
})
return items
}
const cheerio = require('cheerio')
const { DateTime } = require('luxon')
module.exports = {
site: 'andorradifusio.ad',
days: 2,
url({ channel }) {
return `https://www.andorradifusio.ad/programacio/${channel.site_id}`
},
parser({ content, date }) {
const programs = []
const items = parseItems(content, date)
items.forEach(item => {
const prev = programs[programs.length - 1]
let start = parseStart(item, date)
if (prev) {
if (start < prev.start) {
start = start.plus({ days: 1 })
date = date.add(1, 'd')
}
prev.stop = start
}
const stop = start.plus({ hours: 1 })
programs.push({
title: item.title,
start,
stop
})
})
return programs
}
}
function parseStart(item, date) {
const dateString = `${date.format('MM/DD/YYYY')} ${item.time}`
return DateTime.fromFormat(dateString, 'MM/dd/yyyy HH:mm', { zone: 'Europe/Madrid' }).toUTC()
}
function parseItems(content, date) {
const $ = cheerio.load(content)
const day = DateTime.fromMillis(date.valueOf()).setLocale('ca').toFormat('dd LLLL').toLowerCase()
const column = $('.programacio-dia > h3 > .dia')
.filter((i, el) => $(el).text() === day.slice(0, 6) + '.')
.first()
.parent()
.parent()
const items = []
const titles = column.find('p').toArray()
column.find('h4').each((i, time) => {
items.push({
time: $(time).text(),
title: $(titles[i]).text()
})
})
return items
}

View File

@@ -1,47 +1,47 @@
const { parser, url } = require('./andorradifusio.ad.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')
dayjs.extend(customParseFormat)
dayjs.extend(utc)
const date = dayjs.utc('2023-06-07', 'YYYY-MM-DD').startOf('d')
const channel = {
site_id: 'atv',
xmltv_id: 'AndorraTV.ad'
}
it('can generate valid url', () => {
expect(url({ channel })).toBe('https://www.andorradifusio.ad/programacio/atv')
})
it('can parse response', () => {
const content = fs.readFileSync(path.resolve(__dirname, '__data__/content.html'))
const results = parser({ content, date }).map(p => {
p.start = p.start.toJSON()
p.stop = p.stop.toJSON()
return p
})
expect(results[0]).toMatchObject({
start: '2023-06-07T05:00:00.000Z',
stop: '2023-06-07T06:00:00.000Z',
title: 'Club Piolet'
})
expect(results[20]).toMatchObject({
start: '2023-06-07T23:00:00.000Z',
stop: '2023-06-08T00:00:00.000Z',
title: 'Àrea Andorra Difusió'
})
})
it('can handle empty guide', () => {
const result = parser({
date,
content: '<!DOCTYPE html><html><head></head><body></body></html>'
})
expect(result).toMatchObject([])
})
const { parser, url } = require('./andorradifusio.ad.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')
dayjs.extend(customParseFormat)
dayjs.extend(utc)
const date = dayjs.utc('2023-06-07', 'YYYY-MM-DD').startOf('d')
const channel = {
site_id: 'atv',
xmltv_id: 'AndorraTV.ad'
}
it('can generate valid url', () => {
expect(url({ channel })).toBe('https://www.andorradifusio.ad/programacio/atv')
})
it('can parse response', () => {
const content = fs.readFileSync(path.resolve(__dirname, '__data__/content.html'))
const results = parser({ content, date }).map(p => {
p.start = p.start.toJSON()
p.stop = p.stop.toJSON()
return p
})
expect(results[0]).toMatchObject({
start: '2023-06-07T05:00:00.000Z',
stop: '2023-06-07T06:00:00.000Z',
title: 'Club Piolet'
})
expect(results[20]).toMatchObject({
start: '2023-06-07T23:00:00.000Z',
stop: '2023-06-08T00:00:00.000Z',
title: 'Àrea Andorra Difusió'
})
})
it('can handle empty guide', () => {
const result = parser({
date,
content: '<!DOCTYPE html><html><head></head><body></body></html>'
})
expect(result).toMatchObject([])
})

View File

@@ -1,15 +1,15 @@
# andorradifusio.ad
https://andorradifusio.ad/programacio/atv
### Download the guide
```sh
npm run grab --- --site=andorradifusio.ad
```
### Test
```sh
npm test --- andorradifusio.ad
```
# andorradifusio.ad
https://andorradifusio.ad/programacio/atv
### Download the guide
```sh
npm run grab --- --site=andorradifusio.ad
```
### Test
```sh
npm test --- andorradifusio.ad
```

View File

@@ -1,56 +1,57 @@
<?xml version="1.0" encoding="UTF-8"?>
<channels>
<channel site="anteltv.com.uy" lang="es" xmltv_id="" site_id="2s68w">France 24</channel>
<channel site="anteltv.com.uy" lang="es" xmltv_id="" site_id="2sf4f">+DEPORTESUY</channel>
<channel site="anteltv.com.uy" lang="es" xmltv_id="" site_id="2sffq">Eventos TV</channel>
<channel site="anteltv.com.uy" lang="es" xmltv_id="" site_id="2sgl9">Perfiles TV</channel>
<channel site="anteltv.com.uy" lang="es" xmltv_id="" site_id="2srkb">TV ABC</channel>
<channel site="anteltv.com.uy" lang="es" xmltv_id="" site_id="2szm1">Antel</channel>
<channel site="anteltv.com.uy" lang="es" xmltv_id="1000xHoraTV.uy" site_id="2sh8l">1000XHora TV</channel>
<channel site="anteltv.com.uy" lang="es" xmltv_id="ANPITV.uy" site_id="2s6nj">ANPI TV</channel>
<channel site="anteltv.com.uy" lang="es" xmltv_id="AntelEventos.uy" site_id="2st0v">Antel Eventos</channel>
<channel site="anteltv.com.uy" lang="es" xmltv_id="APlusV.uy" site_id="2sh8q">A + V</channel>
<channel site="anteltv.com.uy" lang="es" xmltv_id="ArtigasTelevision.uy" site_id="2s6nt">Artigas Televisión</channel>
<channel site="anteltv.com.uy" lang="es" xmltv_id="CamaradeRepresentantes.uy" site_id="2s68m">Cámara de Representantes</channel>
<channel site="anteltv.com.uy" lang="es" xmltv_id="CamaradeSenadores.uy" site_id="2s68v">Cámara de Senadores</channel>
<channel site="anteltv.com.uy" lang="es" xmltv_id="Canal2Lascano.uy" site_id="2s6nk">Canal 2 Lascano</channel>
<channel site="anteltv.com.uy" lang="es" xmltv_id="Canal2SanCarlos.uy" site_id="2s6n8">Canal 2 HD San Carlos</channel>
<channel site="anteltv.com.uy" lang="es" xmltv_id="Canal2VisionCanaria.uy" site_id="2s6nh">Canal 2 Visión Canaria</channel>
<channel site="anteltv.com.uy" lang="es" xmltv_id="Canal4Chuy.uy" site_id="2s6n1">Canal 4 Chuy</channel>
<channel site="anteltv.com.uy" lang="es" xmltv_id="Canal4JuanLacaze.uy" site_id="2s6nf">Canal 4 Juan Lacaze</channel>
<channel site="anteltv.com.uy" lang="es" xmltv_id="Canal4Paysandu.uy" site_id="2s6pl">Canal 4 Paysandú</channel>
<channel site="anteltv.com.uy" lang="es" xmltv_id="Canal4Salto.uy" site_id="2s6p4">Canal 4 Salto</channel>
<channel site="anteltv.com.uy" lang="es" xmltv_id="Canal4Tacuarembo.uy" site_id="2s6p5">Canal 4 Tacuarembó</channel>
<channel site="anteltv.com.uy" lang="es" xmltv_id="Canal5.uy" site_id="2s6nd">Canal 5</channel>
<channel site="anteltv.com.uy" lang="es" xmltv_id="Canal6Durazno.uy" site_id="2s6pn">Canal 6 Durazno</channel>
<channel site="anteltv.com.uy" lang="es" xmltv_id="Canal7PuntadelEste.uy" site_id="2sh83">Canal 7 Punta</channel>
<channel site="anteltv.com.uy" lang="es" xmltv_id="Canal8Artigas.uy" site_id="2s6p1">Canal 8 Artigas</channel>
<channel site="anteltv.com.uy" lang="es" xmltv_id="Canal8Durazno.uy" site_id="2s6pf">Canal 8 Durazno</channel>
<channel site="anteltv.com.uy" lang="es" xmltv_id="Canal8Rivera.uy" site_id="2sh84">Canal 8 Rivera</channel>
<channel site="anteltv.com.uy" lang="es" xmltv_id="Canal8Salto.uy" site_id="2s6nr">Canal 8 Salto</channel>
<channel site="anteltv.com.uy" lang="es" xmltv_id="Canal9Telerocha.uy" site_id="2s6nn">Canal 9 Telerocha</channel>
<channel site="anteltv.com.uy" lang="es" xmltv_id="Canal11TreintayTres.uy" site_id="2s6nv">Canal 11 Treinta y Tres</channel>
<channel site="anteltv.com.uy" lang="es" xmltv_id="Canal11TV.uy" site_id="2s6nm">Canal 11 Las Piedras</channel>
<channel site="anteltv.com.uy" lang="es" xmltv_id="Canal12Melo.uy" site_id="2s6n0">Canal 12 Melo</channel>
<channel site="anteltv.com.uy" lang="es" xmltv_id="Canal23Florida.uy" site_id="2s6n6">Canal 23 Florida</channel>
<channel site="anteltv.com.uy" lang="es" xmltv_id="CardinalTV.uy" site_id="2s6pw">Cardinal TV</channel>
<channel site="anteltv.com.uy" lang="es" xmltv_id="DuraznoTV.uy" site_id="2s6rm">Durazno TV</channel>
<channel site="anteltv.com.uy" lang="es" xmltv_id="DW.de@Espanol" site_id="2s689">DW (Español)</channel>
<channel site="anteltv.com.uy" lang="es" xmltv_id="ElCanaldelaRegion.uy" site_id="2s6rb">El Canal de la Región - Noreste Canelones</channel>
<channel site="anteltv.com.uy" lang="es" xmltv_id="FTC.uy" site_id="2s6rj">Florida Televisora Color HD</channel>
<channel site="anteltv.com.uy" lang="es" xmltv_id="LatinaTVPaysandu.uy" site_id="2s6rd">Latina TV Paysandú</channel>
<channel site="anteltv.com.uy" lang="es" xmltv_id="MaronasEntertainment.uy" site_id="2s68s">Maroñas Entertainment</channel>
<channel site="anteltv.com.uy" lang="es" xmltv_id="MIEM.uy" site_id="2str3">MIEM</channel>
<channel site="anteltv.com.uy" lang="es" xmltv_id="MiMovilTV.uy" site_id="2s6gj">Mi Móvil TV</channel>
<channel site="anteltv.com.uy" lang="es" xmltv_id="PantallaIMPO.uy" site_id="2s6r9">Pantalla IMPO</channel>
<channel site="anteltv.com.uy" lang="es" xmltv_id="Plazacanal.uy" site_id="2s6r5">33 TV</channel>
<channel site="anteltv.com.uy" lang="es" xmltv_id="RDTV.uy" site_id="2s6r4">RDTV 24HS</channel>
<channel site="anteltv.com.uy" lang="es" xmltv_id="RioUruguayTV.uy" site_id="2s6rl">Rio Uruguay TV</channel>
<channel site="anteltv.com.uy" lang="es" xmltv_id="Siemprecine.uy" site_id="2s6r3">Siemprecine</channel>
<channel site="anteltv.com.uy" lang="es" xmltv_id="TeleR.uy" site_id="2s6r7">Tele R</channel>
<channel site="anteltv.com.uy" lang="es" xmltv_id="Telesur.ve" site_id="2s68c">Telesur</channel>
<channel site="anteltv.com.uy" lang="es" xmltv_id="TVCiudad.uy" site_id="2s6r2">TV CIUDAD</channel>
<channel site="anteltv.com.uy" lang="es" xmltv_id="TVLPando.uy" site_id="2s6rs">TVL Pando</channel>
<channel site="anteltv.com.uy" lang="es" xmltv_id="UCL.uy" site_id="2s6p7">Canal UCL</channel>
<channel site="anteltv.com.uy" lang="es" xmltv_id="UruguayPresidencia.uy" site_id="2s6ny">Uruguay Presidencia</channel>
</channels>
<?xml version="1.0" encoding="UTF-8"?>
<channels>
<channel site="anteltv.com.uy" lang="es" xmltv_id="" site_id="2s6nx">Adu Live</channel>
<channel site="anteltv.com.uy" lang="es" xmltv_id="" site_id="2s68w">France 24</channel>
<channel site="anteltv.com.uy" lang="es" xmltv_id="" site_id="2sffq">Eventos TV</channel>
<channel site="anteltv.com.uy" lang="es" xmltv_id="" site_id="2sgl9">Perfiles TV</channel>
<channel site="anteltv.com.uy" lang="es" xmltv_id="" site_id="2srkb">TV ABC</channel>
<channel site="anteltv.com.uy" lang="es" xmltv_id="" site_id="2sss22lm">Autonoma Televisión</channel>
<channel site="anteltv.com.uy" lang="es" xmltv_id="" site_id="2stzy">Inti TV</channel>
<channel site="anteltv.com.uy" lang="es" xmltv_id="" site_id="22s13">T5 SATELITAL</channel>
<channel site="anteltv.com.uy" lang="es" xmltv_id="1000xHoraTV.uy" site_id="2sh8l">1000XHora TV</channel>
<channel site="anteltv.com.uy" lang="es" xmltv_id="ANPITV.uy" site_id="2s6nj">ANPI TV</channel>
<channel site="anteltv.com.uy" lang="es" xmltv_id="AntelEventos.uy" site_id="2st0v">Antel Eventos</channel>
<channel site="anteltv.com.uy" lang="es" xmltv_id="APlusV.uy" site_id="2sh8q">A + V</channel>
<channel site="anteltv.com.uy" lang="es" xmltv_id="ArtigasTelevision.uy" site_id="2s6nt">Artigas Televisión</channel>
<channel site="anteltv.com.uy" lang="es" xmltv_id="CamaradeRepresentantes.uy" site_id="2s68m">Cámara de Representantes</channel>
<channel site="anteltv.com.uy" lang="es" xmltv_id="CamaradeSenadores.uy" site_id="2s68v">Cámara de Senadores</channel>
<channel site="anteltv.com.uy" lang="es" xmltv_id="Canal2Lascano.uy" site_id="2s6nk">Canal 2 Lascano</channel>
<channel site="anteltv.com.uy" lang="es" xmltv_id="Canal2SanCarlos.uy" site_id="2s6n8">Canal 2 HD San Carlos</channel>
<channel site="anteltv.com.uy" lang="es" xmltv_id="Canal2VisionCanaria.uy" site_id="2s6nh">Canal 2 Visión Canaria</channel>
<channel site="anteltv.com.uy" lang="es" xmltv_id="Canal4Chuy.uy" site_id="2s6n1">Canal 4 Chuy</channel>
<channel site="anteltv.com.uy" lang="es" xmltv_id="Canal4JuanLacaze.uy" site_id="2s6nf">Canal 4 Juan Lacaze</channel>
<channel site="anteltv.com.uy" lang="es" xmltv_id="Canal4Paysandu.uy" site_id="2s6pl">Canal 4 Paysandú</channel>
<channel site="anteltv.com.uy" lang="es" xmltv_id="Canal4Salto.uy" site_id="2s6p4">Canal 4 Salto</channel>
<channel site="anteltv.com.uy" lang="es" xmltv_id="Canal4Tacuarembo.uy" site_id="2s6p5">Canal 4 Tacuarembó</channel>
<channel site="anteltv.com.uy" lang="es" xmltv_id="Canal5.uy" site_id="2s6nd">Canal 5</channel>
<channel site="anteltv.com.uy" lang="es" xmltv_id="Canal6Durazno.uy" site_id="2s6pn">Canal 6 Durazno</channel>
<channel site="anteltv.com.uy" lang="es" xmltv_id="Canal7PuntadelEste.uy" site_id="2sh83">Canal 7 Punta</channel>
<channel site="anteltv.com.uy" lang="es" xmltv_id="Canal8Artigas.uy" site_id="2s6p1">Canal 8 Artigas</channel>
<channel site="anteltv.com.uy" lang="es" xmltv_id="Canal8Durazno.uy" site_id="2s6pf">Canal 8 Durazno</channel>
<channel site="anteltv.com.uy" lang="es" xmltv_id="Canal8Rivera.uy" site_id="2sh84">Canal 8 Rivera</channel>
<channel site="anteltv.com.uy" lang="es" xmltv_id="Canal8Salto.uy" site_id="2s6nr">Canal 8 Salto</channel>
<channel site="anteltv.com.uy" lang="es" xmltv_id="Canal9Telerocha.uy" site_id="2s6nn">El 9 de Rocha</channel>
<channel site="anteltv.com.uy" lang="es" xmltv_id="Canal11TreintayTres.uy" site_id="2s6nv">Canal 11 Treinta y Tres</channel>
<channel site="anteltv.com.uy" lang="es" xmltv_id="Canal11TV.uy" site_id="2s6nm">Canal 11 Las Piedras</channel>
<channel site="anteltv.com.uy" lang="es" xmltv_id="Canal12Melo.uy" site_id="2s6n0">Canal 12 Melo</channel>
<channel site="anteltv.com.uy" lang="es" xmltv_id="Canal23Florida.uy" site_id="2s6n6">Canal 23 Florida</channel>
<channel site="anteltv.com.uy" lang="es" xmltv_id="CardinalTV.uy" site_id="2s6pw">Cardinal TV</channel>
<channel site="anteltv.com.uy" lang="es" xmltv_id="DuraznoTV.uy" site_id="2s6rm">Durazno TV</channel>
<channel site="anteltv.com.uy" lang="es" xmltv_id="DW.de@Espanol" site_id="2s689">DW (Español)</channel>
<channel site="anteltv.com.uy" lang="es" xmltv_id="ElCanaldelaRegion.uy" site_id="2s6rb">El Canal de la Región - Noreste Canelones</channel>
<channel site="anteltv.com.uy" lang="es" xmltv_id="FTC.uy" site_id="2s6rj">Florida Televisora Color HD</channel>
<channel site="anteltv.com.uy" lang="es" xmltv_id="LatinaTVPaysandu.uy" site_id="2s6rd">Latina TV Paysandú</channel>
<channel site="anteltv.com.uy" lang="es" xmltv_id="MaronasEntertainment.uy" site_id="2s68s">Maroñas Entertainment</channel>
<channel site="anteltv.com.uy" lang="es" xmltv_id="MIEM.uy" site_id="2str3">MIEM</channel>
<channel site="anteltv.com.uy" lang="es" xmltv_id="MiMovilTV.uy" site_id="2s6gj">Mi Móvil TV</channel>
<channel site="anteltv.com.uy" lang="es" xmltv_id="PantallaIMPO.uy" site_id="2s6r9">Pantalla IMPO</channel>
<channel site="anteltv.com.uy" lang="es" xmltv_id="Plazacanal.uy" site_id="2s6r5">33 TV</channel>
<channel site="anteltv.com.uy" lang="es" xmltv_id="RDTV.uy" site_id="2s6r4">RDTV 24HS</channel>
<channel site="anteltv.com.uy" lang="es" xmltv_id="RioUruguayTV.uy" site_id="2s6rl">Rio Uruguay TV</channel>
<channel site="anteltv.com.uy" lang="es" xmltv_id="Siemprecine.uy" site_id="2s6r3">Siemprecine</channel>
<channel site="anteltv.com.uy" lang="es" xmltv_id="Telesur.ve" site_id="2s68c">Telesur</channel>
<channel site="anteltv.com.uy" lang="es" xmltv_id="TVCiudad.uy" site_id="2s6r2">TV CIUDAD</channel>
<channel site="anteltv.com.uy" lang="es" xmltv_id="TVLPando.uy" site_id="2s6rs">TVL Pando</channel>
<channel site="anteltv.com.uy" lang="es" xmltv_id="UCL.uy" site_id="2s6p7">Canal UCL</channel>
<channel site="anteltv.com.uy" lang="es" xmltv_id="UruguayPresidencia.uy" site_id="2s6ny">Uruguay Presidencia</channel>
</channels>

View File

@@ -1,108 +1,108 @@
const axios = require('axios')
const dayjs = require('dayjs')
const utc = require('dayjs/plugin/utc')
const timezone = require('dayjs/plugin/timezone')
const customParseFormat = require('dayjs/plugin/customParseFormat')
dayjs.extend(utc)
dayjs.extend(timezone)
dayjs.extend(customParseFormat)
const API_ENDPOINT = 'https://cds-frontend.vera.com.uy/api-contenidos'
module.exports = {
site: 'anteltv.com.uy',
days: 2,
async url({ date, channel }) {
const session = await loadSessionDetails()
if (!session || !session.token) return null
return `${API_ENDPOINT}/canales/epg/${
channel.site_id
}?limit=500&dias_siguientes=0&fecha=${date.format('YYYY-MM-DD')}&token=${session.token}`
},
request: {
async headers() {
const session = await loadSessionDetails()
if (!session || !session.jwt) return null
return {
authorization: `Bearer ${session.jwt}`,
'x-frontend-id': 1196,
'x-service-id': 3,
'x-system-id': 1
}
}
},
parser({ content }) {
let programs = []
let items = parseItems(content)
items.forEach(item => {
programs.push({
title: item.nombre_programa,
sub_title: item.subtitle,
description: item.descripcion_programa,
start: parseStart(item),
stop: parseStop(item)
})
})
return programs
},
async channels() {
const session = await loadSessionDetails()
if (!session || !session.jwt || !session.token) return null
const data = await axios
.get(`${API_ENDPOINT}/listas/68?token=${session.token}`, {
headers: {
authorization: `Bearer ${session.jwt}`,
'x-frontend-id': 1196,
'x-service-id': 3,
'x-system-id': 1
}
})
.then(r => r.data)
.catch(console.error)
return data.contenidos.map(c => {
return {
lang: 'es',
site_id: c.public_id,
name: c.nombre
}
})
}
}
function parseStart(item) {
return dayjs.tz(item.fecha_hora_inicio, 'YYYY-MM-DD HH:mm:ss', 'America/Montevideo')
}
function parseStop(item) {
return dayjs.tz(item.fecha_hora_fin, 'YYYY-MM-DD HH:mm:ss', 'America/Montevideo')
}
function parseItems(content) {
const data = JSON.parse(content)
if (!data || !Array.isArray(data.data)) return []
return data.data
}
function loadSessionDetails() {
return axios
.post(
'https://veratv-be.vera.com.uy/api/sesiones',
{
tipo: 'anonima'
},
{
headers: {
'Content-Type': 'application/json'
}
}
)
.then(r => r.data)
.catch(console.log)
}
const axios = require('axios')
const dayjs = require('dayjs')
const utc = require('dayjs/plugin/utc')
const timezone = require('dayjs/plugin/timezone')
const customParseFormat = require('dayjs/plugin/customParseFormat')
dayjs.extend(utc)
dayjs.extend(timezone)
dayjs.extend(customParseFormat)
const API_ENDPOINT = 'https://cds-frontend.vera.com.uy/api-contenidos'
module.exports = {
site: 'anteltv.com.uy',
days: 2,
async url({ date, channel }) {
const session = await loadSessionDetails()
if (!session || !session.token) return null
return `${API_ENDPOINT}/canales/epg/${
channel.site_id
}?limit=500&dias_siguientes=0&fecha=${date.format('YYYY-MM-DD')}&token=${session.token}`
},
request: {
async headers() {
const session = await loadSessionDetails()
if (!session || !session.jwt) return null
return {
authorization: `Bearer ${session.jwt}`,
'x-frontend-id': 1196,
'x-service-id': 3,
'x-system-id': 1
}
}
},
parser({ content }) {
let programs = []
let items = parseItems(content)
items.forEach(item => {
programs.push({
title: item.nombre_programa,
sub_title: item.subtitle,
description: item.descripcion_programa,
start: parseStart(item),
stop: parseStop(item)
})
})
return programs
},
async channels() {
const session = await loadSessionDetails()
if (!session || !session.jwt || !session.token) return null
const data = await axios
.get(`${API_ENDPOINT}/listas/68?token=${session.token}`, {
headers: {
authorization: `Bearer ${session.jwt}`,
'x-frontend-id': 1196,
'x-service-id': 3,
'x-system-id': 1
}
})
.then(r => r.data)
.catch(console.error)
return data.contenidos.map(c => {
return {
lang: 'es',
site_id: c.public_id,
name: c.nombre
}
})
}
}
function parseStart(item) {
return dayjs.tz(item.fecha_hora_inicio, 'YYYY-MM-DD HH:mm:ss', 'America/Montevideo')
}
function parseStop(item) {
return dayjs.tz(item.fecha_hora_fin, 'YYYY-MM-DD HH:mm:ss', 'America/Montevideo')
}
function parseItems(content) {
const data = JSON.parse(content)
if (!data || !Array.isArray(data.data)) return []
return data.data
}
function loadSessionDetails() {
return axios
.post(
'https://veratv-be.vera.com.uy/api/sesiones',
{
tipo: 'anonima'
},
{
headers: {
'Content-Type': 'application/json'
}
}
)
.then(r => r.data)
.catch(console.log)
}

View File

@@ -1,85 +1,85 @@
const { parser, url, request } = require('./anteltv.com.uy.config.js')
const fs = require('fs')
const axios = require('axios')
const path = require('path')
const dayjs = require('dayjs')
const utc = require('dayjs/plugin/utc')
const customParseFormat = require('dayjs/plugin/customParseFormat')
dayjs.extend(customParseFormat)
dayjs.extend(utc)
jest.mock('axios')
axios.post.mockImplementation((url, data, opts) => {
if (
url === 'https://veratv-be.vera.com.uy/api/sesiones' &&
JSON.stringify(opts.headers) ===
JSON.stringify({
'Content-Type': 'application/json'
}) &&
JSON.stringify(data) ===
JSON.stringify({
tipo: 'anonima'
})
) {
return Promise.resolve({
data: JSON.parse(fs.readFileSync(path.resolve(__dirname, '__data__/session.json')))
})
} else {
return Promise.resolve({
data: JSON.parse(fs.readFileSync(path.resolve(__dirname, '__data__/no_session.json')))
})
}
})
const date = dayjs.utc('2023-02-11', 'YYYY-MM-DD').startOf('d')
const channel = {
site_id: '2s6nd',
xmltv_id: 'Canal5.uy'
}
it('can generate valid url', async () => {
const result = await url({ date, channel })
expect(result).toBe(
'https://cds-frontend.vera.com.uy/api-contenidos/canales/epg/2s6nd?limit=500&dias_siguientes=0&fecha=2023-02-11&token=MpDY52p1V6g511VSABp1015B'
)
})
it('can generate valid request headers', async () => {
const result = await request.headers()
expect(result).toMatchObject({
authorization:
'Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOnsidGlwbyI6ImFub25pbWEifSwic3ViIjoiTXBEWTUycDFWNmc1MTFWU0FCcDEwMTVCIiwicHJuIjp7ImlkX3NlcnZpY2lvIjozLCJpZF9mcm9udGVuZCI6MTE5NiwiaXAiOiIxNzkuMjcuMTU0LjI0MiIsImlwX3JlZmVyZW5jaWFkYSI6IjE4OC4yNDIuNDguOTMiLCJpZF9kaXNwb3NpdGl2byI6MH0sImF1ZCI6IkFwcHNcL1dlYnMgRnJvbnRlbmRzIiwiaWF0IjoxNjc1ODI3NDU2LCJleHAiOjE2NzU4NDkwNTZ9.8bAQciQl5DOIZF7GgCl6ad-KJUSpqQREetozGv_IH5s',
'x-frontend-id': 1196,
'x-service-id': 3,
'x-system-id': 1
})
})
it('can parse response', () => {
const content = fs.readFileSync(path.resolve(__dirname, '__data__/content.json'), 'utf8')
let results = parser({ content })
results = results.map(p => {
p.start = p.start.toJSON()
p.stop = p.stop.toJSON()
return p
})
expect(results[0]).toMatchObject({
start: '2023-02-11T02:30:00.000Z',
stop: '2023-02-11T04:00:00.000Z',
title: 'Canal 5 Noticias rep.',
sub_title: '',
description: ''
})
})
it('can handle empty guide', () => {
const results = parser({
content: fs.readFileSync(path.resolve(__dirname, '__data__/no_content.json'), 'utf8')
})
expect(results).toMatchObject([])
})
const { parser, url, request } = require('./anteltv.com.uy.config.js')
const fs = require('fs')
const axios = require('axios')
const path = require('path')
const dayjs = require('dayjs')
const utc = require('dayjs/plugin/utc')
const customParseFormat = require('dayjs/plugin/customParseFormat')
dayjs.extend(customParseFormat)
dayjs.extend(utc)
jest.mock('axios')
axios.post.mockImplementation((url, data, opts) => {
if (
url === 'https://veratv-be.vera.com.uy/api/sesiones' &&
JSON.stringify(opts.headers) ===
JSON.stringify({
'Content-Type': 'application/json'
}) &&
JSON.stringify(data) ===
JSON.stringify({
tipo: 'anonima'
})
) {
return Promise.resolve({
data: JSON.parse(fs.readFileSync(path.resolve(__dirname, '__data__/session.json')))
})
} else {
return Promise.resolve({
data: JSON.parse(fs.readFileSync(path.resolve(__dirname, '__data__/no_session.json')))
})
}
})
const date = dayjs.utc('2023-02-11', 'YYYY-MM-DD').startOf('d')
const channel = {
site_id: '2s6nd',
xmltv_id: 'Canal5.uy'
}
it('can generate valid url', async () => {
const result = await url({ date, channel })
expect(result).toBe(
'https://cds-frontend.vera.com.uy/api-contenidos/canales/epg/2s6nd?limit=500&dias_siguientes=0&fecha=2023-02-11&token=MpDY52p1V6g511VSABp1015B'
)
})
it('can generate valid request headers', async () => {
const result = await request.headers()
expect(result).toMatchObject({
authorization:
'Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOnsidGlwbyI6ImFub25pbWEifSwic3ViIjoiTXBEWTUycDFWNmc1MTFWU0FCcDEwMTVCIiwicHJuIjp7ImlkX3NlcnZpY2lvIjozLCJpZF9mcm9udGVuZCI6MTE5NiwiaXAiOiIxNzkuMjcuMTU0LjI0MiIsImlwX3JlZmVyZW5jaWFkYSI6IjE4OC4yNDIuNDguOTMiLCJpZF9kaXNwb3NpdGl2byI6MH0sImF1ZCI6IkFwcHNcL1dlYnMgRnJvbnRlbmRzIiwiaWF0IjoxNjc1ODI3NDU2LCJleHAiOjE2NzU4NDkwNTZ9.8bAQciQl5DOIZF7GgCl6ad-KJUSpqQREetozGv_IH5s',
'x-frontend-id': 1196,
'x-service-id': 3,
'x-system-id': 1
})
})
it('can parse response', () => {
const content = fs.readFileSync(path.resolve(__dirname, '__data__/content.json'), 'utf8')
let results = parser({ content })
results = results.map(p => {
p.start = p.start.toJSON()
p.stop = p.stop.toJSON()
return p
})
expect(results[0]).toMatchObject({
start: '2023-02-11T02:30:00.000Z',
stop: '2023-02-11T04:00:00.000Z',
title: 'Canal 5 Noticias rep.',
sub_title: '',
description: ''
})
})
it('can handle empty guide', () => {
const results = parser({
content: fs.readFileSync(path.resolve(__dirname, '__data__/no_content.json'), 'utf8')
})
expect(results).toMatchObject([])
})

View File

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

View File

@@ -1,4 +1,4 @@
<?xml version="1.0" encoding="UTF-8"?>
<channels>
<channel site="antennaeurope.gr" lang="el" xmltv_id="ANT1Europe.gr" site_id="#">ANT1 Europe</channel>
</channels>
<?xml version="1.0" encoding="UTF-8"?>
<channels>
<channel site="antennaeurope.gr" lang="el" xmltv_id="ANT1Europe.gr" site_id="#">ANT1 Europe</channel>
</channels>

View File

@@ -1,59 +1,59 @@
const cheerio = require('cheerio')
const dayjs = require('dayjs')
const utc = require('dayjs/plugin/utc')
const timezone = require('dayjs/plugin/timezone')
const customParseFormat = require('dayjs/plugin/customParseFormat')
dayjs.extend(utc)
dayjs.extend(timezone)
dayjs.extend(customParseFormat)
module.exports = {
site: 'antennaeurope.gr',
days: 2,
url({ date }) {
return `https://www.antennaeurope.gr/el/tvguide.html?date=${date.format('YYYY-MM-DD')}`
},
parser({ content, date }) {
const programs = []
const items = parseItems(content, date)
items.forEach(item => {
const $item = cheerio.load(item)
const prev = programs[programs.length - 1]
let start = parseStart($item, date)
if (prev) {
if (start.isBefore(prev.start)) {
start = start.add(1, 'd')
date = date.add(1, 'd')
}
prev.stop = start
}
const stop = start.add(30, 'm')
programs.push({
title: parseTitle($item),
start,
stop
})
})
return programs
}
}
function parseTitle($item) {
return $item('.title').text().trim()
}
function parseStart($item, date) {
const time = $item('dt.col-time').clone().children().remove().end().text().trim()
return time
? dayjs.tz(`${date.format('YYYY-MM-DD')} ${time}`, 'YYYY-MM-DD HH:mm', 'Europe/Athens')
: null
}
function parseItems(content) {
const $ = cheerio.load(content)
return $('dl.show').toArray()
}
const cheerio = require('cheerio')
const dayjs = require('dayjs')
const utc = require('dayjs/plugin/utc')
const timezone = require('dayjs/plugin/timezone')
const customParseFormat = require('dayjs/plugin/customParseFormat')
dayjs.extend(utc)
dayjs.extend(timezone)
dayjs.extend(customParseFormat)
module.exports = {
site: 'antennaeurope.gr',
days: 2,
url({ date }) {
return `https://www.antennaeurope.gr/el/tvguide.html?date=${date.format('YYYY-MM-DD')}`
},
parser({ content, date }) {
const programs = []
const items = parseItems(content, date)
items.forEach(item => {
const $item = cheerio.load(item)
const prev = programs[programs.length - 1]
let start = parseStart($item, date)
if (prev) {
if (start.isBefore(prev.start)) {
start = start.add(1, 'd')
date = date.add(1, 'd')
}
prev.stop = start
}
const stop = start.add(30, 'm')
programs.push({
title: parseTitle($item),
start,
stop
})
})
return programs
}
}
function parseTitle($item) {
return $item('.title').text().trim()
}
function parseStart($item, date) {
const time = $item('dt.col-time').clone().children().remove().end().text().trim()
return time
? dayjs.tz(`${date.format('YYYY-MM-DD')} ${time}`, 'YYYY-MM-DD HH:mm', 'Europe/Athens')
: null
}
function parseItems(content) {
const $ = cheerio.load(content)
return $('dl.show').toArray()
}

View File

@@ -1,46 +1,46 @@
const { parser, url } = require('./antennaeurope.gr.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')
dayjs.extend(customParseFormat)
dayjs.extend(utc)
const date = dayjs.utc('2025-01-21', 'YYYY-MM-DD').startOf('d')
it('can generate valid url', () => {
expect(url({ date })).toBe('https://www.antennaeurope.gr/el/tvguide.html?date=2025-01-21')
})
it('can parse response', () => {
const content = fs.readFileSync(path.resolve(__dirname, '__data__/content.html'), 'utf8')
let results = parser({ content, date })
results = results.map(p => {
p.start = p.start.toJSON()
p.stop = p.stop.toJSON()
return p
})
expect(results.length).toBe(16)
expect(results[0]).toMatchObject({
start: '2025-01-21T03:45:00.000Z',
stop: '2025-01-21T07:50:00.000Z',
title: 'ΚΑΛΗΜΕΡΑ ΕΛΛΑΔΑ'
})
expect(results[15]).toMatchObject({
start: '2025-01-22T01:30:00.000Z',
stop: '2025-01-22T02:00:00.000Z',
title: 'ΤΟ ΠΡΩΙΝΟ'
})
})
it('can handle empty guide', () => {
const results = parser({
date,
content: fs.readFileSync(path.resolve(__dirname, '__data__/no_content.html'), 'utf8')
})
expect(results).toMatchObject([])
})
const { parser, url } = require('./antennaeurope.gr.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')
dayjs.extend(customParseFormat)
dayjs.extend(utc)
const date = dayjs.utc('2025-01-21', 'YYYY-MM-DD').startOf('d')
it('can generate valid url', () => {
expect(url({ date })).toBe('https://www.antennaeurope.gr/el/tvguide.html?date=2025-01-21')
})
it('can parse response', () => {
const content = fs.readFileSync(path.resolve(__dirname, '__data__/content.html'), 'utf8')
let results = parser({ content, date })
results = results.map(p => {
p.start = p.start.toJSON()
p.stop = p.stop.toJSON()
return p
})
expect(results.length).toBe(16)
expect(results[0]).toMatchObject({
start: '2025-01-21T03:45:00.000Z',
stop: '2025-01-21T07:50:00.000Z',
title: 'ΚΑΛΗΜΕΡΑ ΕΛΛΑΔΑ'
})
expect(results[15]).toMatchObject({
start: '2025-01-22T01:30:00.000Z',
stop: '2025-01-22T02:00:00.000Z',
title: 'ΤΟ ΠΡΩΙΝΟ'
})
})
it('can handle empty guide', () => {
const results = parser({
date,
content: fs.readFileSync(path.resolve(__dirname, '__data__/no_content.html'), 'utf8')
})
expect(results).toMatchObject([])
})

View File

@@ -1,15 +1,15 @@
# antennaeurope.gr
https://www.antennaeurope.gr/el/tvguide.html
### Download the guide
```sh
npm run grab --- --site=antennaeurope.gr
```
### Test
```sh
npm test --- antennaeurope.gr
```
# antennaeurope.gr
https://www.antennaeurope.gr/el/tvguide.html
### Download the guide
```sh
npm run grab --- --site=antennaeurope.gr
```
### Test
```sh
npm test --- antennaeurope.gr
```

View File

@@ -1,4 +1,4 @@
<?xml version="1.0" encoding="UTF-8"?>
<channels>
<channel site="antennapacific.gr" lang="el" xmltv_id="ANT1Pacific.gr" site_id="#">ANT1 PACIFIC</channel>
</channels>
<?xml version="1.0" encoding="UTF-8"?>
<channels>
<channel site="antennapacific.gr" lang="el" xmltv_id="ANT1Pacific.gr" site_id="#">ANT1 PACIFIC</channel>
</channels>

View File

@@ -1,59 +1,59 @@
const cheerio = require('cheerio')
const dayjs = require('dayjs')
const utc = require('dayjs/plugin/utc')
const timezone = require('dayjs/plugin/timezone')
const customParseFormat = require('dayjs/plugin/customParseFormat')
dayjs.extend(utc)
dayjs.extend(timezone)
dayjs.extend(customParseFormat)
module.exports = {
site: 'antennapacific.gr',
days: 2,
url({ date }) {
return `https://www.antennapacific.gr/el/tvguide.html?date=${date.format('YYYY-MM-DD')}`
},
parser({ content, date }) {
const programs = []
const items = parseItems(content, date)
items.forEach(item => {
const $item = cheerio.load(item)
const prev = programs[programs.length - 1]
let start = parseStart($item, date)
if (prev) {
if (start.isBefore(prev.start)) {
start = start.add(1, 'd')
date = date.add(1, 'd')
}
prev.stop = start
}
const stop = start.add(30, 'm')
programs.push({
title: parseTitle($item),
start,
stop
})
})
return programs
}
}
function parseTitle($item) {
return $item('.title').text().trim()
}
function parseStart($item, date) {
const time = $item('dt.col-time').clone().children().remove().end().text().trim()
return time
? dayjs.tz(`${date.format('YYYY-MM-DD')} ${time}`, 'YYYY-MM-DD HH:mm', 'Europe/Athens')
: null
}
function parseItems(content) {
const $ = cheerio.load(content)
return $('dl.show').toArray()
}
const cheerio = require('cheerio')
const dayjs = require('dayjs')
const utc = require('dayjs/plugin/utc')
const timezone = require('dayjs/plugin/timezone')
const customParseFormat = require('dayjs/plugin/customParseFormat')
dayjs.extend(utc)
dayjs.extend(timezone)
dayjs.extend(customParseFormat)
module.exports = {
site: 'antennapacific.gr',
days: 2,
url({ date }) {
return `https://www.antennapacific.gr/el/tvguide.html?date=${date.format('YYYY-MM-DD')}`
},
parser({ content, date }) {
const programs = []
const items = parseItems(content, date)
items.forEach(item => {
const $item = cheerio.load(item)
const prev = programs[programs.length - 1]
let start = parseStart($item, date)
if (prev) {
if (start.isBefore(prev.start)) {
start = start.add(1, 'd')
date = date.add(1, 'd')
}
prev.stop = start
}
const stop = start.add(30, 'm')
programs.push({
title: parseTitle($item),
start,
stop
})
})
return programs
}
}
function parseTitle($item) {
return $item('.title').text().trim()
}
function parseStart($item, date) {
const time = $item('dt.col-time').clone().children().remove().end().text().trim()
return time
? dayjs.tz(`${date.format('YYYY-MM-DD')} ${time}`, 'YYYY-MM-DD HH:mm', 'Europe/Athens')
: null
}
function parseItems(content) {
const $ = cheerio.load(content)
return $('dl.show').toArray()
}

View File

@@ -1,46 +1,46 @@
const { parser, url } = require('./antennapacific.gr.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')
dayjs.extend(customParseFormat)
dayjs.extend(utc)
const date = dayjs.utc('2025-01-21', 'YYYY-MM-DD').startOf('d')
it('can generate valid url', () => {
expect(url({ date })).toBe('https://www.antennapacific.gr/el/tvguide.html?date=2025-01-21')
})
it('can parse response', () => {
const content = fs.readFileSync(path.resolve(__dirname, '__data__/content.html'), 'utf8')
let results = parser({ content, date })
results = results.map(p => {
p.start = p.start.toJSON()
p.stop = p.stop.toJSON()
return p
})
expect(results.length).toBe(17)
expect(results[0]).toMatchObject({
start: '2025-01-21T05:00:00.000Z',
stop: '2025-01-21T06:00:00.000Z',
title: 'ANT1 NEWS - ΚΕΝΤΡΙΚΟ ΔΕΛΤΙΟ'
})
expect(results[16]).toMatchObject({
start: '2025-01-22T02:45:00.000Z',
stop: '2025-01-22T03:15:00.000Z',
title: 'ΚΑΛΗΜΕΡΑ ΕΛΛΑΔΑ'
})
})
it('can handle empty guide', () => {
const results = parser({
date,
content: fs.readFileSync(path.resolve(__dirname, '__data__/no_content.html'), 'utf8')
})
expect(results).toMatchObject([])
})
const { parser, url } = require('./antennapacific.gr.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')
dayjs.extend(customParseFormat)
dayjs.extend(utc)
const date = dayjs.utc('2025-01-21', 'YYYY-MM-DD').startOf('d')
it('can generate valid url', () => {
expect(url({ date })).toBe('https://www.antennapacific.gr/el/tvguide.html?date=2025-01-21')
})
it('can parse response', () => {
const content = fs.readFileSync(path.resolve(__dirname, '__data__/content.html'), 'utf8')
let results = parser({ content, date })
results = results.map(p => {
p.start = p.start.toJSON()
p.stop = p.stop.toJSON()
return p
})
expect(results.length).toBe(17)
expect(results[0]).toMatchObject({
start: '2025-01-21T05:00:00.000Z',
stop: '2025-01-21T06:00:00.000Z',
title: 'ANT1 NEWS - ΚΕΝΤΡΙΚΟ ΔΕΛΤΙΟ'
})
expect(results[16]).toMatchObject({
start: '2025-01-22T02:45:00.000Z',
stop: '2025-01-22T03:15:00.000Z',
title: 'ΚΑΛΗΜΕΡΑ ΕΛΛΑΔΑ'
})
})
it('can handle empty guide', () => {
const results = parser({
date,
content: fs.readFileSync(path.resolve(__dirname, '__data__/no_content.html'), 'utf8')
})
expect(results).toMatchObject([])
})

View File

@@ -1,15 +1,15 @@
# antennapacific.gr
https://www.antennapacific.gr/el/tvguide.html
### Download the guide
```sh
npm run grab --- --site=antennapacific.gr
```
### Test
```sh
npm test --- antennapacific.gr
```
# antennapacific.gr
https://www.antennapacific.gr/el/tvguide.html
### Download the guide
```sh
npm run grab --- --site=antennapacific.gr
```
### Test
```sh
npm test --- antennapacific.gr
```

View File

@@ -1,4 +1,4 @@
<?xml version="1.0" encoding="UTF-8"?>
<channels>
<channel site="antennasatellite.gr" lang="el" xmltv_id="ANT1Satellite.gr" site_id="#">ANT1 SATELLITE</channel>
</channels>
<?xml version="1.0" encoding="UTF-8"?>
<channels>
<channel site="antennasatellite.gr" lang="el" xmltv_id="ANT1Satellite.gr" site_id="#">ANT1 SATELLITE</channel>
</channels>

View File

@@ -1,59 +1,59 @@
const cheerio = require('cheerio')
const dayjs = require('dayjs')
const utc = require('dayjs/plugin/utc')
const timezone = require('dayjs/plugin/timezone')
const customParseFormat = require('dayjs/plugin/customParseFormat')
dayjs.extend(utc)
dayjs.extend(timezone)
dayjs.extend(customParseFormat)
module.exports = {
site: 'antennasatellite.gr',
days: 2,
url({ date }) {
return `https://www.antennasatellite.gr/el/tvguide.html?date=${date.format('YYYY-MM-DD')}`
},
parser({ content, date }) {
const programs = []
const items = parseItems(content, date)
items.forEach(item => {
const $item = cheerio.load(item)
const prev = programs[programs.length - 1]
let start = parseStart($item, date)
if (prev) {
if (start.isBefore(prev.start)) {
start = start.add(1, 'd')
date = date.add(1, 'd')
}
prev.stop = start
}
const stop = start.add(30, 'm')
programs.push({
title: parseTitle($item),
start,
stop
})
})
return programs
}
}
function parseTitle($item) {
return $item('.title').text().trim()
}
function parseStart($item, date) {
const time = $item('dt.col-time').clone().children().remove().end().text().trim()
return time
? dayjs.tz(`${date.format('YYYY-MM-DD')} ${time}`, 'YYYY-MM-DD HH:mm', 'Europe/Athens')
: null
}
function parseItems(content) {
const $ = cheerio.load(content)
return $('dl.show').toArray()
}
const cheerio = require('cheerio')
const dayjs = require('dayjs')
const utc = require('dayjs/plugin/utc')
const timezone = require('dayjs/plugin/timezone')
const customParseFormat = require('dayjs/plugin/customParseFormat')
dayjs.extend(utc)
dayjs.extend(timezone)
dayjs.extend(customParseFormat)
module.exports = {
site: 'antennasatellite.gr',
days: 2,
url({ date }) {
return `https://www.antennasatellite.gr/el/tvguide.html?date=${date.format('YYYY-MM-DD')}`
},
parser({ content, date }) {
const programs = []
const items = parseItems(content, date)
items.forEach(item => {
const $item = cheerio.load(item)
const prev = programs[programs.length - 1]
let start = parseStart($item, date)
if (prev) {
if (start.isBefore(prev.start)) {
start = start.add(1, 'd')
date = date.add(1, 'd')
}
prev.stop = start
}
const stop = start.add(30, 'm')
programs.push({
title: parseTitle($item),
start,
stop
})
})
return programs
}
}
function parseTitle($item) {
return $item('.title').text().trim()
}
function parseStart($item, date) {
const time = $item('dt.col-time').clone().children().remove().end().text().trim()
return time
? dayjs.tz(`${date.format('YYYY-MM-DD')} ${time}`, 'YYYY-MM-DD HH:mm', 'Europe/Athens')
: null
}
function parseItems(content) {
const $ = cheerio.load(content)
return $('dl.show').toArray()
}

View File

@@ -1,46 +1,46 @@
const { parser, url } = require('./antennasatellite.gr.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')
dayjs.extend(customParseFormat)
dayjs.extend(utc)
const date = dayjs.utc('2025-01-21', 'YYYY-MM-DD').startOf('d')
it('can generate valid url', () => {
expect(url({ date })).toBe('https://www.antennasatellite.gr/el/tvguide.html?date=2025-01-21')
})
it('can parse response', () => {
const content = fs.readFileSync(path.resolve(__dirname, '__data__/content.html'), 'utf8')
let results = parser({ content, date })
results = results.map(p => {
p.start = p.start.toJSON()
p.stop = p.stop.toJSON()
return p
})
expect(results.length).toBe(16)
expect(results[0]).toMatchObject({
start: '2025-01-21T04:00:00.000Z',
stop: '2025-01-21T04:40:00.000Z',
title: 'ANT1 NEWS'
})
expect(results[15]).toMatchObject({
start: '2025-01-22T00:50:00.000Z',
stop: '2025-01-22T01:20:00.000Z',
title: 'ΤΟ ΠΡΩΙΝΟ'
})
})
it('can handle empty guide', () => {
const results = parser({
date,
content: fs.readFileSync(path.resolve(__dirname, '__data__/no_content.html'), 'utf8')
})
expect(results).toMatchObject([])
})
const { parser, url } = require('./antennasatellite.gr.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')
dayjs.extend(customParseFormat)
dayjs.extend(utc)
const date = dayjs.utc('2025-01-21', 'YYYY-MM-DD').startOf('d')
it('can generate valid url', () => {
expect(url({ date })).toBe('https://www.antennasatellite.gr/el/tvguide.html?date=2025-01-21')
})
it('can parse response', () => {
const content = fs.readFileSync(path.resolve(__dirname, '__data__/content.html'), 'utf8')
let results = parser({ content, date })
results = results.map(p => {
p.start = p.start.toJSON()
p.stop = p.stop.toJSON()
return p
})
expect(results.length).toBe(16)
expect(results[0]).toMatchObject({
start: '2025-01-21T04:00:00.000Z',
stop: '2025-01-21T04:40:00.000Z',
title: 'ANT1 NEWS'
})
expect(results[15]).toMatchObject({
start: '2025-01-22T00:50:00.000Z',
stop: '2025-01-22T01:20:00.000Z',
title: 'ΤΟ ΠΡΩΙΝΟ'
})
})
it('can handle empty guide', () => {
const results = parser({
date,
content: fs.readFileSync(path.resolve(__dirname, '__data__/no_content.html'), 'utf8')
})
expect(results).toMatchObject([])
})

View File

@@ -1,15 +1,15 @@
# antennasatellite.gr
https://www.antennasatellite.gr/el/tvguide.html
### Download the guide
```sh
npm run grab --- --site=antennasatellite.gr
```
### Test
```sh
npm test --- antennasatellite.gr
```
# antennasatellite.gr
https://www.antennasatellite.gr/el/tvguide.html
### Download the guide
```sh
npm run grab --- --site=antennasatellite.gr
```
### Test
```sh
npm test --- antennasatellite.gr
```

View File

@@ -1,4 +1,4 @@
<?xml version="1.0" encoding="UTF-8"?>
<channels>
<channel site="arianatelevision.com" lang="en" xmltv_id="ATNNational.af" site_id="#">Ariana Television</channel>
<?xml version="1.0" encoding="UTF-8"?>
<channels>
<channel site="arianatelevision.com" lang="en" xmltv_id="ATNNational.af" site_id="#">Ariana Television</channel>
</channels>

View File

@@ -1,60 +1,60 @@
const cheerio = require('cheerio')
const { DateTime } = require('luxon')
module.exports = {
site: 'arianatelevision.com',
days: 2,
url: 'https://www.arianatelevision.com/program-schedule/',
parser({ content, date }) {
const programs = []
const items = parseItems(content, date)
items.forEach(item => {
const prev = programs[programs.length - 1]
let start = parseStart(item, date)
if (prev) {
if (start < prev.start) {
start = start.plus({ days: 1 })
date = date.add(1, 'd')
}
prev.stop = start
}
const stop = start.plus({ minutes: 30 })
programs.push({
title: item.title,
start,
stop
})
})
return programs
}
}
function parseStart(item, date) {
const time = `${date.format('YYYY-MM-DD')} ${item.start}`
return DateTime.fromFormat(time, 'yyyy-MM-dd H:mm', { zone: 'Asia/Kabul' }).toUTC()
}
function parseItems(content, date) {
const $ = cheerio.load(content)
const settings = $('#jtrt_table_settings_508').text()
if (!settings) return []
const data = JSON.parse(settings)
if (!data || !Array.isArray(data)) return []
let rows = data[0]
rows.shift()
const output = []
rows.forEach(row => {
let day = date.day() + 2
if (day > 7) day = 1
if (!row[0] || !row[day]) return
output.push({
start: row[0].trim(),
title: row[day].trim()
})
})
return output
}
const cheerio = require('cheerio')
const { DateTime } = require('luxon')
module.exports = {
site: 'arianatelevision.com',
days: 2,
url: 'https://www.arianatelevision.com/program-schedule/',
parser({ content, date }) {
const programs = []
const items = parseItems(content, date)
items.forEach(item => {
const prev = programs[programs.length - 1]
let start = parseStart(item, date)
if (prev) {
if (start < prev.start) {
start = start.plus({ days: 1 })
date = date.add(1, 'd')
}
prev.stop = start
}
const stop = start.plus({ minutes: 30 })
programs.push({
title: item.title,
start,
stop
})
})
return programs
}
}
function parseStart(item, date) {
const time = `${date.format('YYYY-MM-DD')} ${item.start}`
return DateTime.fromFormat(time, 'yyyy-MM-dd H:mm', { zone: 'Asia/Kabul' }).toUTC()
}
function parseItems(content, date) {
const $ = cheerio.load(content)
const settings = $('#jtrt_table_settings_508').text()
if (!settings) return []
const data = JSON.parse(settings)
if (!data || !Array.isArray(data)) return []
let rows = data[0]
rows.shift()
const output = []
rows.forEach(row => {
let day = date.day() + 2
if (day > 7) day = 1
if (!row[0] || !row[day]) return
output.push({
start: row[0].trim(),
title: row[day].trim()
})
})
return output
}

View File

@@ -1,59 +1,59 @@
const { parser, url } = require('./arianatelevision.com.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')
dayjs.extend(customParseFormat)
dayjs.extend(utc)
const date = dayjs.utc('2021-11-27', 'YYYY-MM-DD').startOf('d')
const channel = {
site_id: '#',
xmltv_id: 'ArianaTVNational.af'
}
it('can generate valid url', () => {
expect(url).toBe('https://www.arianatelevision.com/program-schedule/')
})
it('can parse response', () => {
const content = fs.readFileSync(path.resolve(__dirname, '__data__/content.html'), 'utf8')
const result = parser({ content, date }).map(p => {
p.start = p.start.toJSON()
p.stop = p.stop.toJSON()
return p
})
expect(result).toMatchObject([
{
start: '2021-11-27T02:30:00.000Z',
stop: '2021-11-27T03:00:00.000Z',
title: 'City Report'
},
{
start: '2021-11-27T03:00:00.000Z',
stop: '2021-11-27T10:30:00.000Z',
title: 'ICC T20 Highlights'
},
{
start: '2021-11-27T10:30:00.000Z',
stop: '2021-11-28T02:00:00.000Z',
title: 'ICC T20 World Cup'
},
{
start: '2021-11-28T02:00:00.000Z',
stop: '2021-11-28T02:30:00.000Z',
title: 'Quran and Hadis'
}
])
})
it('can handle empty guide', () => {
const result = parser({
date,
channel,
content: fs.readFileSync(path.resolve(__dirname, '__data__/no_content.html'), 'utf8')
})
expect(result).toMatchObject([])
})
const { parser, url } = require('./arianatelevision.com.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')
dayjs.extend(customParseFormat)
dayjs.extend(utc)
const date = dayjs.utc('2021-11-27', 'YYYY-MM-DD').startOf('d')
const channel = {
site_id: '#',
xmltv_id: 'ArianaTVNational.af'
}
it('can generate valid url', () => {
expect(url).toBe('https://www.arianatelevision.com/program-schedule/')
})
it('can parse response', () => {
const content = fs.readFileSync(path.resolve(__dirname, '__data__/content.html'), 'utf8')
const result = parser({ content, date }).map(p => {
p.start = p.start.toJSON()
p.stop = p.stop.toJSON()
return p
})
expect(result).toMatchObject([
{
start: '2021-11-27T02:30:00.000Z',
stop: '2021-11-27T03:00:00.000Z',
title: 'City Report'
},
{
start: '2021-11-27T03:00:00.000Z',
stop: '2021-11-27T10:30:00.000Z',
title: 'ICC T20 Highlights'
},
{
start: '2021-11-27T10:30:00.000Z',
stop: '2021-11-28T02:00:00.000Z',
title: 'ICC T20 World Cup'
},
{
start: '2021-11-28T02:00:00.000Z',
stop: '2021-11-28T02:30:00.000Z',
title: 'Quran and Hadis'
}
])
})
it('can handle empty guide', () => {
const result = parser({
date,
channel,
content: fs.readFileSync(path.resolve(__dirname, '__data__/no_content.html'), 'utf8')
})
expect(result).toMatchObject([])
})

View File

@@ -1,15 +1,15 @@
# arianatelevision.com
https://www.arianatelevision.com/program-schedule/
### Download the guide
```sh
npm run grab --- --site=arianatelevision.com
```
### Test
```sh
npm test --- arianatelevision.com
```
# arianatelevision.com
https://www.arianatelevision.com/program-schedule/
### Download the guide
```sh
npm run grab --- --site=arianatelevision.com
```
### Test
```sh
npm test --- arianatelevision.com
```

View File

@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<channels>
<channel site="arirang.com" lang="en" xmltv_id="ArirangTV.kr" site_id="CH_K">KOREA</channel>
<channel site="arirang.com" lang="en" xmltv_id="ArirangUN.kr" site_id="CH_Z">UN</channel>
<channel site="arirang.com" lang="en" xmltv_id="ArirangWorld.kr" site_id="CH_W">WORLD</channel>
<?xml version="1.0" encoding="UTF-8"?>
<channels>
<channel site="arirang.com" lang="en" xmltv_id="ArirangTV.kr" site_id="CH_K">KOREA</channel>
<channel site="arirang.com" lang="en" xmltv_id="ArirangUN.kr" site_id="CH_Z">UN</channel>
<channel site="arirang.com" lang="en" xmltv_id="ArirangWorld.kr" site_id="CH_W">WORLD</channel>
</channels>

View File

@@ -1,163 +1,163 @@
const axios = require('axios')
const dayjs = require('dayjs')
const utc = require('dayjs/plugin/utc')
const timezone = require('dayjs/plugin/timezone')
const customParseFormat = require('dayjs/plugin/customParseFormat')
dayjs.extend(utc)
dayjs.extend(timezone)
dayjs.extend(customParseFormat)
module.exports = {
site: 'arirang.com',
output: 'arirang.com.guide.xml',
channels: 'arirang.com.channels.xml',
lang: 'en',
days: 7,
delay: 5000,
url: 'https://www.arirang.com/v1.0/open/external/proxy',
request: {
method: 'POST',
timeout: 5000,
cache: { ttl: 60 * 60 * 1000 },
headers: {
Accept: 'application/json, text/plain, */*',
'Content-Type': 'application/json',
Origin: 'https://www.arirang.com',
Referer: 'https://www.arirang.com/schedule',
'User-Agent':
'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/112.0.0.0 Safari/537.36'
},
data: function (context) {
const { channel, date } = context
return {
address: 'https://script.arirang.com/api/v1/bis/listScheduleV3.do',
method: 'POST',
headers: {},
body: {
data: {
dmParam: {
chanId: channel.site_id,
broadYmd: dayjs.tz(date, 'Asia/Seoul').format('YYYYMMDD'),
planNo: '1'
}
}
}
}
}
},
logo: function (context) {
return context.channel.logo
},
async parser(context) {
const programs = []
const items = parseItems(context.content)
for (let item of items) {
const programDetail = await parseProgramDetail(item)
programs.push({
title: parseTitle(programDetail),
start: parseStart(item),
stop: parseStop(item),
image: parseImage(programDetail),
category: parseCategory(programDetail),
description: parseDescription(programDetail)
})
}
return programs
}
}
function parseItems(content) {
if (content != '') {
const data = JSON.parse(content)
return !data || !data.responseBody || !Array.isArray(data.responseBody.dsSchWeek)
? []
: data.responseBody.dsSchWeek
} else {
return []
}
}
function parseStart(item) {
return dayjs.tz(item.broadYmd + ' ' + item.broadHm, 'YYYYMMDD HHmm', 'Asia/Seoul')
}
function parseStop(item) {
return dayjs
.tz(item.broadYmd + ' ' + item.broadHm, 'YYYYMMDD HHmm', 'Asia/Seoul')
.add(item.broadRun, 'minute')
}
async function parseProgramDetail(item) {
return axios
.post(
'https://www.arirang.com/v1.0/open/program/detail',
{
bis_program_code: item.pgmCd
},
{
headers: {
Accept: 'application/json, text/plain, */*',
'Content-Type': 'application/json',
Origin: 'https://www.arirang.com',
Referer: 'https://www.arirang.com/schedule',
'User-Agent':
'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/112.0.0.0 Safari/537.36'
},
timeout: 5000,
cache: { ttl: 60 * 1000 }
}
)
.then(response => {
// console.log('Retrieved program detail: bis_program_code ' + item.pgmCd)
return response.data
})
.catch(function () {
// The provider/server may not have details on every single programs.
// console.log('Unavailable program detail: bis_program_code ' + item.pgmCd)
})
}
function parseTitle(programDetail) {
if (programDetail && programDetail.title && programDetail.title[0] && programDetail.title[0].text) {
return programDetail.title[0].text
} else {
return ''
}
}
function parseImage(programDetail) {
if (programDetail && programDetail.image && programDetail.image[0].url) {
return programDetail.image[0].url
} else {
return ''
}
}
function parseCategory(programDetail) {
if (programDetail && programDetail.category_Info && programDetail.category_Info[0].title) {
return programDetail.category_Info[0].title
} else {
return ''
}
}
function parseDescription(programDetail) {
if (
programDetail &&
programDetail.content &&
programDetail.content[0] &&
programDetail.content[0].text
) {
let description = programDetail.content[0].text
let regex = /(<([^>]+)>)/gi
return description.replace(regex, '')
} else {
return ''
}
const axios = require('axios')
const dayjs = require('dayjs')
const utc = require('dayjs/plugin/utc')
const timezone = require('dayjs/plugin/timezone')
const customParseFormat = require('dayjs/plugin/customParseFormat')
dayjs.extend(utc)
dayjs.extend(timezone)
dayjs.extend(customParseFormat)
module.exports = {
site: 'arirang.com',
output: 'arirang.com.guide.xml',
channels: 'arirang.com.channels.xml',
lang: 'en',
days: 7,
delay: 5000,
url: 'https://www.arirang.com/v1.0/open/external/proxy',
request: {
method: 'POST',
timeout: 5000,
cache: { ttl: 60 * 60 * 1000 },
headers: {
Accept: 'application/json, text/plain, */*',
'Content-Type': 'application/json',
Origin: 'https://www.arirang.com',
Referer: 'https://www.arirang.com/schedule',
'User-Agent':
'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/112.0.0.0 Safari/537.36'
},
data: function (context) {
const { channel, date } = context
return {
address: 'https://script.arirang.com/api/v1/bis/listScheduleV3.do',
method: 'POST',
headers: {},
body: {
data: {
dmParam: {
chanId: channel.site_id,
broadYmd: dayjs.tz(date, 'Asia/Seoul').format('YYYYMMDD'),
planNo: '1'
}
}
}
}
}
},
logo: function (context) {
return context.channel.logo
},
async parser(context) {
const programs = []
const items = parseItems(context.content)
for (let item of items) {
const programDetail = await parseProgramDetail(item)
programs.push({
title: parseTitle(programDetail),
start: parseStart(item),
stop: parseStop(item),
image: parseImage(programDetail),
category: parseCategory(programDetail),
description: parseDescription(programDetail)
})
}
return programs
}
}
function parseItems(content) {
if (content != '') {
const data = JSON.parse(content)
return !data || !data.responseBody || !Array.isArray(data.responseBody.dsSchWeek)
? []
: data.responseBody.dsSchWeek
} else {
return []
}
}
function parseStart(item) {
return dayjs.tz(item.broadYmd + ' ' + item.broadHm, 'YYYYMMDD HHmm', 'Asia/Seoul')
}
function parseStop(item) {
return dayjs
.tz(item.broadYmd + ' ' + item.broadHm, 'YYYYMMDD HHmm', 'Asia/Seoul')
.add(item.broadRun, 'minute')
}
async function parseProgramDetail(item) {
return axios
.post(
'https://www.arirang.com/v1.0/open/program/detail',
{
bis_program_code: item.pgmCd
},
{
headers: {
Accept: 'application/json, text/plain, */*',
'Content-Type': 'application/json',
Origin: 'https://www.arirang.com',
Referer: 'https://www.arirang.com/schedule',
'User-Agent':
'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/112.0.0.0 Safari/537.36'
},
timeout: 5000,
cache: { ttl: 60 * 1000 }
}
)
.then(response => {
// console.log('Retrieved program detail: bis_program_code ' + item.pgmCd)
return response.data
})
.catch(function () {
// The provider/server may not have details on every single programs.
// console.log('Unavailable program detail: bis_program_code ' + item.pgmCd)
})
}
function parseTitle(programDetail) {
if (programDetail && programDetail.title && programDetail.title[0] && programDetail.title[0].text) {
return programDetail.title[0].text
} else {
return ''
}
}
function parseImage(programDetail) {
if (programDetail && programDetail.image && programDetail.image[0].url) {
return programDetail.image[0].url
} else {
return ''
}
}
function parseCategory(programDetail) {
if (programDetail && programDetail.category_Info && programDetail.category_Info[0].title) {
return programDetail.category_Info[0].title
} else {
return ''
}
}
function parseDescription(programDetail) {
if (
programDetail &&
programDetail.content &&
programDetail.content[0] &&
programDetail.content[0].text
) {
let description = programDetail.content[0].text
let regex = /(<([^>]+)>)/gi
return description.replace(regex, '')
} else {
return ''
}
}

View File

@@ -1,72 +1,72 @@
const { url, parser } = require('./arirang.com.config.js')
const fs = require('fs')
const path = require('path')
const axios = require('axios')
const dayjs = require('dayjs')
const utc = require('dayjs/plugin/utc')
dayjs.extend(utc)
jest.mock('axios')
const date = dayjs.tz('2025-04-20', 'Asia/Seoul').startOf('d')
const channel = {
xmltv_id: 'ArirangWorld.kr',
site_id: 'CH_W',
name: 'Arirang World',
lang: 'en',
logo: 'https://i.imgur.com/5Aoithj.png'
}
const content = fs.readFileSync(path.resolve(__dirname, '__data__/schedule.json'), 'utf8')
const programDetail = fs.readFileSync(path.resolve(__dirname, '__data__/detail.json'), 'utf8')
const context = { channel: channel, content: content, date: date }
it('can generate valid url', () => {
expect(url).toBe('https://www.arirang.com/v1.0/open/external/proxy')
})
it('can handle empty guide', async () => {
const results = await parser({ channel: channel, content: '', date: date })
expect(results).toMatchObject([])
})
it('can parse response', async () => {
axios.post.mockImplementation((url, data) => {
if (
url === 'https://www.arirang.com/v1.0/open/external/proxy' &&
JSON.stringify(data) ===
JSON.stringify({
address: 'https://script.arirang.com/api/v1/bis/listScheduleV3.do',
method: 'POST',
headers: {},
body: { data: { dmParam: { chanId: 'CH_W', broadYmd: '20250420', planNo: '1' } } }
})
) {
return Promise.resolve({
data: JSON.parse(content)
})
} else if (
url === 'https://www.arirang.com/v1.0/open/program/detail' &&
JSON.stringify(data) === JSON.stringify({ bis_program_code: '2025006T' })
) {
return Promise.resolve({
data: JSON.parse(programDetail)
})
} else {
return Promise.resolve({
data: ''
})
}
})
const results = await parser(context)
expect(results[0]).toMatchObject({
title: 'Diplomat Archives: Hidden Stories',
start: dayjs.tz(date, 'Asia/Seoul'),
stop: dayjs.tz(date, 'Asia/Seoul').add(30, 'minute'),
image:
'https://img.arirang.com/v1/AUTH_d52449c16d3b4bbca17d4fffd9fc44af/public/images/202504/2985531324875408146.jpg',
description: 'As of April 2025, S. Korea has established diplomatic relations with a total of 194 countries.\nAmong them are countries that have had ties and exchanges with Korea for hundreds of years.\nWith such long-standing relationships with so many nations,\nmight there be fascinating hidden stories between Korea and the rest of the world that we dont know yet? \n\n"Diplomats Archives: Hidden Stories" begins with this very question.\nTogether with foreign embassies in Korea, the series uncovers and sheds light on meaningful yet lesser-known stories between Korea and other countries.\nThrough this, we aim to reaffirm the deep friendships that have been built over time, highlight how countries are interconnected—bilaterally and multilaterally—\nand emphasize the importance of cooperation on the global stage today.',
category: 'Current Affairs'
})
const { url, parser } = require('./arirang.com.config.js')
const fs = require('fs')
const path = require('path')
const axios = require('axios')
const dayjs = require('dayjs')
const utc = require('dayjs/plugin/utc')
dayjs.extend(utc)
jest.mock('axios')
const date = dayjs.tz('2025-04-20', 'Asia/Seoul').startOf('d')
const channel = {
xmltv_id: 'ArirangWorld.kr',
site_id: 'CH_W',
name: 'Arirang World',
lang: 'en',
logo: 'https://i.imgur.com/5Aoithj.png'
}
const content = fs.readFileSync(path.resolve(__dirname, '__data__/schedule.json'), 'utf8')
const programDetail = fs.readFileSync(path.resolve(__dirname, '__data__/detail.json'), 'utf8')
const context = { channel: channel, content: content, date: date }
it('can generate valid url', () => {
expect(url).toBe('https://www.arirang.com/v1.0/open/external/proxy')
})
it('can handle empty guide', async () => {
const results = await parser({ channel: channel, content: '', date: date })
expect(results).toMatchObject([])
})
it('can parse response', async () => {
axios.post.mockImplementation((url, data) => {
if (
url === 'https://www.arirang.com/v1.0/open/external/proxy' &&
JSON.stringify(data) ===
JSON.stringify({
address: 'https://script.arirang.com/api/v1/bis/listScheduleV3.do',
method: 'POST',
headers: {},
body: { data: { dmParam: { chanId: 'CH_W', broadYmd: '20250420', planNo: '1' } } }
})
) {
return Promise.resolve({
data: JSON.parse(content)
})
} else if (
url === 'https://www.arirang.com/v1.0/open/program/detail' &&
JSON.stringify(data) === JSON.stringify({ bis_program_code: '2025006T' })
) {
return Promise.resolve({
data: JSON.parse(programDetail)
})
} else {
return Promise.resolve({
data: ''
})
}
})
const results = await parser(context)
expect(results[0]).toMatchObject({
title: 'Diplomat Archives: Hidden Stories',
start: dayjs.tz(date, 'Asia/Seoul'),
stop: dayjs.tz(date, 'Asia/Seoul').add(30, 'minute'),
image:
'https://img.arirang.com/v1/AUTH_d52449c16d3b4bbca17d4fffd9fc44af/public/images/202504/2985531324875408146.jpg',
description: 'As of April 2025, S. Korea has established diplomatic relations with a total of 194 countries.\nAmong them are countries that have had ties and exchanges with Korea for hundreds of years.\nWith such long-standing relationships with so many nations,\nmight there be fascinating hidden stories between Korea and the rest of the world that we dont know yet? \n\n"Diplomats Archives: Hidden Stories" begins with this very question.\nTogether with foreign embassies in Korea, the series uncovers and sheds light on meaningful yet lesser-known stories between Korea and other countries.\nThrough this, we aim to reaffirm the deep friendships that have been built over time, highlight how countries are interconnected—bilaterally and multilaterally—\nand emphasize the importance of cooperation on the global stage today.',
category: 'Current Affairs'
})
})

View File

@@ -1,15 +1,15 @@
# arirang.com
https://arirang.com/schedule
### Download the guide
```sh
npm run grab --- --site=arirang.com
```
### Test
```sh
npm test --- arirang.com
```
# arirang.com
https://arirang.com/schedule
### Download the guide
```sh
npm run grab --- --site=arirang.com
```
### Test
```sh
npm test --- arirang.com
```

View File

@@ -1,8 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?>
<channels>
<channel site="artonline.tv" lang="ar" xmltv_id="ARTAflam1.sa" site_id="#">افلام 1</channel>
<channel site="artonline.tv" lang="ar" xmltv_id="ARTAflam2.sa" site_id="#Aflam2">افلام 2</channel>
<channel site="artonline.tv" lang="ar" xmltv_id="ARTCinema.sa" site_id="#Cinema">سينما</channel>
<channel site="artonline.tv" lang="ar" xmltv_id="ARTHekayat.sa" site_id="#Hekayat">حكايات</channel>
<channel site="artonline.tv" lang="ar" xmltv_id="ARTHekayat2.sa" site_id="#Hekayat2">حكايات 2</channel>
<?xml version="1.0" encoding="UTF-8"?>
<channels>
<channel site="artonline.tv" lang="ar" xmltv_id="ARTAflam1.sa" site_id="#">افلام 1</channel>
<channel site="artonline.tv" lang="ar" xmltv_id="ARTAflam2.sa" site_id="#Aflam2">افلام 2</channel>
<channel site="artonline.tv" lang="ar" xmltv_id="ARTCinema.sa" site_id="#Cinema">سينما</channel>
<channel site="artonline.tv" lang="ar" xmltv_id="ARTHekayat.sa" site_id="#Hekayat">حكايات</channel>
<channel site="artonline.tv" lang="ar" xmltv_id="ARTHekayat2.sa" site_id="#Hekayat2">حكايات 2</channel>
</channels>

View File

@@ -1,70 +1,70 @@
process.env['NODE_TLS_REJECT_UNAUTHORIZED'] = 0
const customParseFormat = require('dayjs/plugin/customParseFormat')
const timezone = require('dayjs/plugin/timezone')
const utc = require('dayjs/plugin/utc')
const dayjs = require('dayjs')
dayjs.extend(customParseFormat)
dayjs.extend(timezone)
dayjs.extend(utc)
module.exports = {
site: 'artonline.tv',
days: 2,
url: function ({ channel }) {
const [, site_id] = channel.site_id.split('#')
return `https://www.artonline.tv/Home/Tvlist${site_id}`
},
request: {
method: 'POST',
headers: {
'content-type': 'application/x-www-form-urlencoded'
},
data: function ({ date }) {
const diff = date.diff(dayjs.utc().startOf('d'), 'd')
const params = new URLSearchParams()
params.append('objId', diff)
return params
}
},
parser: function ({ content }) {
const programs = []
if (!content) return programs
const items = JSON.parse(content)
items.forEach(item => {
const image = parseImage(item)
const start = parseStart(item)
const duration = parseDuration(item)
const stop = start.add(duration, 's')
programs.push({
title: item.title,
description: item.description,
image,
start,
stop
})
})
return programs
}
}
function parseStart(item) {
const [, M, D, YYYY] = item.adddate.match(/(\d+)\/(\d+)\/(\d+) /)
const [HH, mm] = item.start_Time.split(':')
return dayjs.tz(`${YYYY}-${M}-${D}T${HH}:${mm}:00`, 'YYYY-M-DTHH:mm:ss', 'Asia/Riyadh')
}
function parseDuration(item) {
const [, HH, mm, ss] = item.duration.match(/(\d+):(\d+):(\d+)/)
return parseInt(HH) * 3600 + parseInt(mm) * 60 + parseInt(ss)
}
function parseImage(item) {
return item.thumbnail ? `https://www.artonline.tv${item.thumbnail}` : null
}
process.env['NODE_TLS_REJECT_UNAUTHORIZED'] = 0
const customParseFormat = require('dayjs/plugin/customParseFormat')
const timezone = require('dayjs/plugin/timezone')
const utc = require('dayjs/plugin/utc')
const dayjs = require('dayjs')
dayjs.extend(customParseFormat)
dayjs.extend(timezone)
dayjs.extend(utc)
module.exports = {
site: 'artonline.tv',
days: 2,
url: function ({ channel }) {
const [, site_id] = channel.site_id.split('#')
return `https://www.artonline.tv/Home/Tvlist${site_id}`
},
request: {
method: 'POST',
headers: {
'content-type': 'application/x-www-form-urlencoded'
},
data: function ({ date }) {
const diff = date.diff(dayjs.utc().startOf('d'), 'd')
const params = new URLSearchParams()
params.append('objId', diff)
return params
}
},
parser: function ({ content }) {
const programs = []
if (!content) return programs
const items = JSON.parse(content)
items.forEach(item => {
const image = parseImage(item)
const start = parseStart(item)
const duration = parseDuration(item)
const stop = start.add(duration, 's')
programs.push({
title: item.title,
description: item.description,
image,
start,
stop
})
})
return programs
}
}
function parseStart(item) {
const [, M, D, YYYY] = item.adddate.match(/(\d+)\/(\d+)\/(\d+) /)
const [HH, mm] = item.start_Time.split(':')
return dayjs.tz(`${YYYY}-${M}-${D}T${HH}:${mm}:00`, 'YYYY-M-DTHH:mm:ss', 'Asia/Riyadh')
}
function parseDuration(item) {
const [, HH, mm, ss] = item.duration.match(/(\d+):(\d+):(\d+)/)
return parseInt(HH) * 3600 + parseInt(mm) * 60 + parseInt(ss)
}
function parseImage(item) {
return item.thumbnail ? `https://www.artonline.tv${item.thumbnail}` : null
}

View File

@@ -1,66 +1,66 @@
const { parser, url, request } = require('./artonline.tv.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')
dayjs.extend(customParseFormat)
dayjs.extend(utc)
const channel = {
site_id: '#Aflam2',
xmltv_id: 'ARTAflam2.sa'
}
it('can generate valid url', () => {
expect(url({ channel })).toBe('https://www.artonline.tv/Home/TvlistAflam2')
})
it('can generate valid request method', () => {
expect(request.method).toBe('POST')
})
it('can generate valid request headers', () => {
expect(request.headers).toMatchObject({
'content-type': 'application/x-www-form-urlencoded'
})
})
it('can generate valid request data for today', () => {
const date = dayjs.utc().startOf('d')
const data = request.data({ date })
expect(data.get('objId')).toBe('0')
})
it('can generate valid request data for tomorrow', () => {
const date = dayjs.utc().startOf('d').add(1, 'd')
const data = request.data({ date })
expect(data.get('objId')).toBe('1')
})
it('can parse response', () => {
const content = fs.readFileSync(path.resolve(__dirname, '__data__/content.json'))
const result = parser({ content }).map(p => {
p.start = p.start.toJSON()
p.stop = p.stop.toJSON()
return p
})
expect(result).toMatchObject([
{
start: '2022-03-03T21:30:00.000Z',
stop: '2022-03-03T23:04:00.000Z',
title: 'الراقصه و السياسي',
description:
'تقرر الراقصه سونيا انشاء دار حضانه للأطفال اليتامى و عندما تتقدم بمشورعها للمسئول يرفض فتتحداه ، تلجأ للوزير عبد الحميد رأفت تربطه بها علاقة قديمة ، يخشى على مركزه و يرفض مساعدتها فتقرر كتابة مذكراتها بمساعدة أحد الصحفيين ، يتخوف عبد الحميد و المسئولين ثم يفاجأ عبد الحميد بحصول سونيا على الموافقه للمشورع و البدء في تنفيذه و ذلك لعلاقتها بأحد كبار المسئولين .',
image: 'https://www.artonline.tv/UploadImages/Channel/ARTAFLAM1/03/AlRaqesaWaAlSeyasi.jpg'
}
])
})
it('can handle empty guide', () => {
const result = parser({
content: ''
})
expect(result).toMatchObject([])
})
const { parser, url, request } = require('./artonline.tv.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')
dayjs.extend(customParseFormat)
dayjs.extend(utc)
const channel = {
site_id: '#Aflam2',
xmltv_id: 'ARTAflam2.sa'
}
it('can generate valid url', () => {
expect(url({ channel })).toBe('https://www.artonline.tv/Home/TvlistAflam2')
})
it('can generate valid request method', () => {
expect(request.method).toBe('POST')
})
it('can generate valid request headers', () => {
expect(request.headers).toMatchObject({
'content-type': 'application/x-www-form-urlencoded'
})
})
it('can generate valid request data for today', () => {
const date = dayjs.utc().startOf('d')
const data = request.data({ date })
expect(data.get('objId')).toBe('0')
})
it('can generate valid request data for tomorrow', () => {
const date = dayjs.utc().startOf('d').add(1, 'd')
const data = request.data({ date })
expect(data.get('objId')).toBe('1')
})
it('can parse response', () => {
const content = fs.readFileSync(path.resolve(__dirname, '__data__/content.json'))
const result = parser({ content }).map(p => {
p.start = p.start.toJSON()
p.stop = p.stop.toJSON()
return p
})
expect(result).toMatchObject([
{
start: '2022-03-03T21:30:00.000Z',
stop: '2022-03-03T23:04:00.000Z',
title: 'الراقصه و السياسي',
description:
'تقرر الراقصه سونيا انشاء دار حضانه للأطفال اليتامى و عندما تتقدم بمشورعها للمسئول يرفض فتتحداه ، تلجأ للوزير عبد الحميد رأفت تربطه بها علاقة قديمة ، يخشى على مركزه و يرفض مساعدتها فتقرر كتابة مذكراتها بمساعدة أحد الصحفيين ، يتخوف عبد الحميد و المسئولين ثم يفاجأ عبد الحميد بحصول سونيا على الموافقه للمشورع و البدء في تنفيذه و ذلك لعلاقتها بأحد كبار المسئولين .',
image: 'https://www.artonline.tv/UploadImages/Channel/ARTAFLAM1/03/AlRaqesaWaAlSeyasi.jpg'
}
])
})
it('can handle empty guide', () => {
const result = parser({
content: ''
})
expect(result).toMatchObject([])
})

View File

@@ -1,15 +1,15 @@
# artonline.tv
https://www.artonline.tv/guide/1
### Download the guide
```sh
npm run grab --- --site=artonline.tv
```
### Test
```sh
npm test --- artonline.tv
```
# artonline.tv
https://www.artonline.tv/guide/1
### Download the guide
```sh
npm run grab --- --site=artonline.tv
```
### Test
```sh
npm test --- artonline.tv
```

View File

@@ -1,114 +1,113 @@
<?xml version="1.0" encoding="UTF-8"?>
<channels>
<channel site="awilime.com" lang="hu" xmltv_id="" site_id="amc">AMCnapiheti</channel>
<channel site="awilime.com" lang="hu" xmltv_id="" site_id="animal_planet_hd">Animal Planet HDnapiheti</channel>
<channel site="awilime.com" lang="hu" xmltv_id="" site_id="arena4">Arena4napiheti</channel>
<channel site="awilime.com" lang="hu" xmltv_id="" site_id="atv">ATVnapiheti</channel>
<channel site="awilime.com" lang="hu" xmltv_id="" site_id="atv_spirit">ATV Spiritnapiheti</channel>
<channel site="awilime.com" lang="hu" xmltv_id="" site_id="axn">AXNnapiheti</channel>
<channel site="awilime.com" lang="hu" xmltv_id="" site_id="budapest_europa_tv">Budapest Európa TVnapiheti</channel>
<channel site="awilime.com" lang="hu" xmltv_id="" site_id="cartoon_network">Cartoon Networknapiheti</channel>
<channel site="awilime.com" lang="hu" xmltv_id="" site_id="cartoonito">Cartoonitonapiheti</channel>
<channel site="awilime.com" lang="hu" xmltv_id="" site_id="cinemax">CineMaxnapiheti</channel>
<channel site="awilime.com" lang="hu" xmltv_id="" site_id="cinemax_2">CineMax 2napiheti</channel>
<channel site="awilime.com" lang="hu" xmltv_id="" site_id="comedy_central">Comedy Centralnapiheti</channel>
<channel site="awilime.com" lang="hu" xmltv_id="" site_id="comedy_central_family">Comedy Central Familynapiheti</channel>
<channel site="awilime.com" lang="hu" xmltv_id="" site_id="cool">Coolnapiheti</channel>
<channel site="awilime.com" lang="hu" xmltv_id="" site_id="d1_tv">D1 TVnapiheti</channel>
<channel site="awilime.com" lang="hu" xmltv_id="" site_id="dikh_tv">Dikh TVnapiheti</channel>
<channel site="awilime.com" lang="hu" xmltv_id="" site_id="discovery_channel">Discovery Channelnapiheti</channel>
<channel site="awilime.com" lang="hu" xmltv_id="" site_id="disney_csatorna">Disney Csatornanapiheti</channel>
<channel site="awilime.com" lang="hu" xmltv_id="" site_id="duck_tv_hd">Duck TV HDnapiheti</channel>
<channel site="awilime.com" lang="hu" xmltv_id="" site_id="duck_tv_plus">Duck TV Plusnapiheti</channel>
<channel site="awilime.com" lang="hu" xmltv_id="" site_id="duck_tv_sd">Duck TV SDnapiheti</channel>
<channel site="awilime.com" lang="hu" xmltv_id="" site_id="duna_televizio">Duna Televíziónapiheti</channel>
<channel site="awilime.com" lang="hu" xmltv_id="" site_id="duna_world">Duna Worldnapiheti</channel>
<channel site="awilime.com" lang="hu" xmltv_id="" site_id="epic_drama">Epic Dramanapiheti</channel>
<channel site="awilime.com" lang="hu" xmltv_id="" site_id="eurosport_1">Eurosport 1napiheti</channel>
<channel site="awilime.com" lang="hu" xmltv_id="" site_id="eurosport_2">Eurosport 2napiheti</channel>
<channel site="awilime.com" lang="hu" xmltv_id="" site_id="ewtn">EWTNnapiheti</channel>
<channel site="awilime.com" lang="hu" xmltv_id="" site_id="film">film+napiheti</channel>
<channel site="awilime.com" lang="hu" xmltv_id="" site_id="film4">Film4napiheti</channel>
<channel site="awilime.com" lang="hu" xmltv_id="" site_id="film_cafe">Film Cafénapiheti</channel>
<channel site="awilime.com" lang="hu" xmltv_id="" site_id="film_mania">Film Mánianapiheti</channel>
<channel site="awilime.com" lang="hu" xmltv_id="" site_id="filmbox">Filmboxnapiheti</channel>
<channel site="awilime.com" lang="hu" xmltv_id="" site_id="filmbox_extra_hd">Filmbox Extra HDnapiheti</channel>
<channel site="awilime.com" lang="hu" xmltv_id="" site_id="filmbox_family">Filmbox Familynapiheti</channel>
<channel site="awilime.com" lang="hu" xmltv_id="" site_id="filmbox_premium">Filmbox Prémiumnapiheti</channel>
<channel site="awilime.com" lang="hu" xmltv_id="" site_id="filmbox_stars">FilmBox Starsnapiheti</channel>
<channel site="awilime.com" lang="hu" xmltv_id="" site_id="fishing_and_hunting">Fishing and Huntingnapiheti</channel>
<channel site="awilime.com" lang="hu" xmltv_id="" site_id="food_network">Food Networknapiheti</channel>
<channel site="awilime.com" lang="hu" xmltv_id="" site_id="galaxy4">Galaxy4napiheti</channel>
<channel site="awilime.com" lang="hu" xmltv_id="" site_id="hatoscsatorna">Hatoscsatornanapiheti</channel>
<channel site="awilime.com" lang="hu" xmltv_id="" site_id="hbo">HBOnapiheti</channel>
<channel site="awilime.com" lang="hu" xmltv_id="" site_id="hbo_2">HBO 2napiheti</channel>
<channel site="awilime.com" lang="hu" xmltv_id="" site_id="hbo_3">HBO 3napiheti</channel>
<channel site="awilime.com" lang="hu" xmltv_id="" site_id="hgtv_home_and_garden">HGTV Home &amp; Gardennapiheti</channel>
<channel site="awilime.com" lang="hu" xmltv_id="" site_id="hir_tv">hír TVnapiheti</channel>
<channel site="awilime.com" lang="hu" xmltv_id="" site_id="history">Historynapiheti</channel>
<channel site="awilime.com" lang="hu" xmltv_id="" site_id="id_investigation_discovery">ID Investigation Discoverynapiheti</channel>
<channel site="awilime.com" lang="hu" xmltv_id="" site_id="id_xtra">ID Xtranapiheti</channel>
<channel site="awilime.com" lang="hu" xmltv_id="" site_id="izaura_tv">Izaura TVnapiheti</channel>
<channel site="awilime.com" lang="hu" xmltv_id="" site_id="jazz_tv">Jazz TVnapiheti</channel>
<channel site="awilime.com" lang="hu" xmltv_id="" site_id="jim_jam">Jim Jamnapiheti</channel>
<channel site="awilime.com" lang="hu" xmltv_id="" site_id="jocky_tv">Jocky TVnapiheti</channel>
<channel site="awilime.com" lang="hu" xmltv_id="" site_id="kolyok_klub">Kölyök klubnapiheti</channel>
<channel site="awilime.com" lang="hu" xmltv_id="" site_id="lifetv">LifeTVnapiheti</channel>
<channel site="awilime.com" lang="hu" xmltv_id="" site_id="m1">m1napiheti</channel>
<channel site="awilime.com" lang="hu" xmltv_id="" site_id="m2">m2napiheti</channel>
<channel site="awilime.com" lang="hu" xmltv_id="" site_id="m4_sport">m4 sportnapiheti</channel>
<channel site="awilime.com" lang="hu" xmltv_id="" site_id="m4_sport_plusz">m4 sport+napiheti</channel>
<channel site="awilime.com" lang="hu" xmltv_id="" site_id="m5">m5napiheti</channel>
<channel site="awilime.com" lang="hu" xmltv_id="" site_id="magyar_mozi_tv">Magyar Mozi TVnapiheti</channel>
<channel site="awilime.com" lang="hu" xmltv_id="" site_id="match4">Match4napiheti</channel>
<channel site="awilime.com" lang="hu" xmltv_id="" site_id="max4">Max4napiheti</channel>
<channel site="awilime.com" lang="hu" xmltv_id="" site_id="minimax">Minimaxnapiheti</channel>
<channel site="awilime.com" lang="hu" xmltv_id="" site_id="mozi">Mozi+napiheti</channel>
<channel site="awilime.com" lang="hu" xmltv_id="" site_id="mozi_klub">Mozi klubnapiheti</channel>
<channel site="awilime.com" lang="hu" xmltv_id="" site_id="moziverzum">Moziverzumnapiheti</channel>
<channel site="awilime.com" lang="hu" xmltv_id="" site_id="mtv_european">MTV Europeannapiheti</channel>
<channel site="awilime.com" lang="hu" xmltv_id="" site_id="muzsika_tv">Muzsika TVnapiheti</channel>
<channel site="awilime.com" lang="hu" xmltv_id="" site_id="national_geographic_hd">National Geographic HDnapiheti</channel>
<channel site="awilime.com" lang="hu" xmltv_id="" site_id="national_geographic_wild">National Geographic Wildnapiheti</channel>
<channel site="awilime.com" lang="hu" xmltv_id="" site_id="nick_jr">Nick Jr.napiheti</channel>
<channel site="awilime.com" lang="hu" xmltv_id="" site_id="nickelodeon">Nickelodeonnapiheti</channel>
<channel site="awilime.com" lang="hu" xmltv_id="" site_id="nicktoons">Nicktoonsnapiheti</channel>
<channel site="awilime.com" lang="hu" xmltv_id="" site_id="ozonetv">OzoneTVnapiheti</channel>
<channel site="awilime.com" lang="hu" xmltv_id="" site_id="paramount_network">Paramount Networknapiheti</channel>
<channel site="awilime.com" lang="hu" xmltv_id="" site_id="pax_tv">PAX TVnapiheti</channel>
<channel site="awilime.com" lang="hu" xmltv_id="" site_id="prime">Primenapiheti</channel>
<channel site="awilime.com" lang="hu" xmltv_id="" site_id="rtl">RTLnapiheti</channel>
<channel site="awilime.com" lang="hu" xmltv_id="" site_id="rtl_gold">RTL GOLDnapiheti</channel>
<channel site="awilime.com" lang="hu" xmltv_id="" site_id="rtl_harom">RTL HÁROMnapiheti</channel>
<channel site="awilime.com" lang="hu" xmltv_id="" site_id="rtl_ketto">RTL KETTŐnapiheti</channel>
<channel site="awilime.com" lang="hu" xmltv_id="" site_id="rtl_otthon">RTL OTTHONnapiheti</channel>
<channel site="awilime.com" lang="hu" xmltv_id="" site_id="slager_tv">Sláger TVnapiheti</channel>
<channel site="awilime.com" lang="hu" xmltv_id="" site_id="sorozat">Sorozat+napiheti</channel>
<channel site="awilime.com" lang="hu" xmltv_id="" site_id="sorozat_klub">Sorozat klubnapiheti</channel>
<channel site="awilime.com" lang="hu" xmltv_id="" site_id="spektrum_hd">Spektrum HDnapiheti</channel>
<channel site="awilime.com" lang="hu" xmltv_id="" site_id="spektrum_home">Spektrum Homenapiheti</channel>
<channel site="awilime.com" lang="hu" xmltv_id="" site_id="spiler1_tv">Spíler1 TVnapiheti</channel>
<channel site="awilime.com" lang="hu" xmltv_id="" site_id="spiler2_tv">Spíler2 TVnapiheti</channel>
<channel site="awilime.com" lang="hu" xmltv_id="" site_id="sport_1">Sport 1napiheti</channel>
<channel site="awilime.com" lang="hu" xmltv_id="" site_id="sport_2">Sport 2napiheti</channel>
<channel site="awilime.com" lang="hu" xmltv_id="" site_id="story4">Story4napiheti</channel>
<channel site="awilime.com" lang="hu" xmltv_id="" site_id="supertv2">SuperTV2napiheti</channel>
<channel site="awilime.com" lang="hu" xmltv_id="" site_id="teennick">TeenNicknapiheti</channel>
<channel site="awilime.com" lang="hu" xmltv_id="" site_id="tlc">TLCnapiheti</channel>
<channel site="awilime.com" lang="hu" xmltv_id="" site_id="travel_channel">Travel Channelnapiheti</channel>
<channel site="awilime.com" lang="hu" xmltv_id="" site_id="tv2">TV2napiheti</channel>
<channel site="awilime.com" lang="hu" xmltv_id="" site_id="tv2_comedy">TV2 Comedynapiheti</channel>
<channel site="awilime.com" lang="hu" xmltv_id="" site_id="tv2_kids">TV2 Kidsnapiheti</channel>
<channel site="awilime.com" lang="hu" xmltv_id="" site_id="tv2_klub">TV2 Klubnapiheti</channel>
<channel site="awilime.com" lang="hu" xmltv_id="" site_id="tv2_sef">TV2 Séfnapiheti</channel>
<channel site="awilime.com" lang="hu" xmltv_id="" site_id="tv4">TV4napiheti</channel>
<channel site="awilime.com" lang="hu" xmltv_id="" site_id="tv_paprika">tv paprikanapiheti</channel>
<channel site="awilime.com" lang="hu" xmltv_id="" site_id="viasat_2">Viasat 2napiheti</channel>
<channel site="awilime.com" lang="hu" xmltv_id="" site_id="viasat_3">Viasat 3napiheti</channel>
<channel site="awilime.com" lang="hu" xmltv_id="" site_id="viasat_6">Viasat 6napiheti</channel>
<channel site="awilime.com" lang="hu" xmltv_id="" site_id="viasat_explore">Viasat Explorenapiheti</channel>
<channel site="awilime.com" lang="hu" xmltv_id="" site_id="viasat_film">Viasat Filmnapiheti</channel>
<channel site="awilime.com" lang="hu" xmltv_id="" site_id="viasat_history">Viasat Historynapiheti</channel>
<channel site="awilime.com" lang="hu" xmltv_id="" site_id="viasat_nature">Viasat Naturenapiheti</channel>
<channel site="awilime.com" lang="hu" xmltv_id="" site_id="zenebutik">Zenebutiknapiheti</channel>
</channels>
<?xml version="1.0" encoding="UTF-8"?>
<channels>
<channel site="awilime.com" lang="hu" xmltv_id="" site_id="amc">AMCnapiheti</channel>
<channel site="awilime.com" lang="hu" xmltv_id="" site_id="animal_planet_hd">Animal Planet HDnapiheti</channel>
<channel site="awilime.com" lang="hu" xmltv_id="" site_id="arena4">Arena4napiheti</channel>
<channel site="awilime.com" lang="hu" xmltv_id="" site_id="atv">ATVnapiheti</channel>
<channel site="awilime.com" lang="hu" xmltv_id="" site_id="atv_extra">ATV Extranapiheti</channel>
<channel site="awilime.com" lang="hu" xmltv_id="" site_id="axn">AXNnapiheti</channel>
<channel site="awilime.com" lang="hu" xmltv_id="" site_id="budapest_europa_tv">Budapest Európa TVnapiheti</channel>
<channel site="awilime.com" lang="hu" xmltv_id="" site_id="cartoon_network">Cartoon Networknapiheti</channel>
<channel site="awilime.com" lang="hu" xmltv_id="" site_id="cartoonito">Cartoonitonapiheti</channel>
<channel site="awilime.com" lang="hu" xmltv_id="" site_id="cinemax">CineMaxnapiheti</channel>
<channel site="awilime.com" lang="hu" xmltv_id="" site_id="cinemax_2">CineMax 2napiheti</channel>
<channel site="awilime.com" lang="hu" xmltv_id="" site_id="comedy_central">Comedy Centralnapiheti</channel>
<channel site="awilime.com" lang="hu" xmltv_id="" site_id="cool">Coolnapiheti</channel>
<channel site="awilime.com" lang="hu" xmltv_id="" site_id="d1_tv">D1 TVnapiheti</channel>
<channel site="awilime.com" lang="hu" xmltv_id="" site_id="dikh_tv">Dikh TVnapiheti</channel>
<channel site="awilime.com" lang="hu" xmltv_id="" site_id="discovery_channel">Discovery Channelnapiheti</channel>
<channel site="awilime.com" lang="hu" xmltv_id="" site_id="disney_csatorna">Disney Csatornanapiheti</channel>
<channel site="awilime.com" lang="hu" xmltv_id="" site_id="duck_tv_hd">Duck TV HDnapiheti</channel>
<channel site="awilime.com" lang="hu" xmltv_id="" site_id="duck_tv_plus">Duck TV Plusnapiheti</channel>
<channel site="awilime.com" lang="hu" xmltv_id="" site_id="duck_tv_sd">Duck TV SDnapiheti</channel>
<channel site="awilime.com" lang="hu" xmltv_id="" site_id="duna_televizio">Duna Televíziónapiheti</channel>
<channel site="awilime.com" lang="hu" xmltv_id="" site_id="duna_world">Duna Worldnapiheti</channel>
<channel site="awilime.com" lang="hu" xmltv_id="" site_id="epic_drama">Epic Dramanapiheti</channel>
<channel site="awilime.com" lang="hu" xmltv_id="" site_id="eurosport_1">Eurosport 1napiheti</channel>
<channel site="awilime.com" lang="hu" xmltv_id="" site_id="eurosport_2">Eurosport 2napiheti</channel>
<channel site="awilime.com" lang="hu" xmltv_id="" site_id="ewtn">EWTNnapiheti</channel>
<channel site="awilime.com" lang="hu" xmltv_id="" site_id="film">film+napiheti</channel>
<channel site="awilime.com" lang="hu" xmltv_id="" site_id="film4">Film4napiheti</channel>
<channel site="awilime.com" lang="hu" xmltv_id="" site_id="film_cafe">Film Cafénapiheti</channel>
<channel site="awilime.com" lang="hu" xmltv_id="" site_id="film_mania">Film Mánianapiheti</channel>
<channel site="awilime.com" lang="hu" xmltv_id="" site_id="filmbox">Filmboxnapiheti</channel>
<channel site="awilime.com" lang="hu" xmltv_id="" site_id="filmbox_extra_hd">Filmbox Extra HDnapiheti</channel>
<channel site="awilime.com" lang="hu" xmltv_id="" site_id="filmbox_family">Filmbox Familynapiheti</channel>
<channel site="awilime.com" lang="hu" xmltv_id="" site_id="filmbox_premium">Filmbox Prémiumnapiheti</channel>
<channel site="awilime.com" lang="hu" xmltv_id="" site_id="filmbox_stars">FilmBox Starsnapiheti</channel>
<channel site="awilime.com" lang="hu" xmltv_id="" site_id="fishing_and_hunting">Fishing and Huntingnapiheti</channel>
<channel site="awilime.com" lang="hu" xmltv_id="" site_id="food_network">Food Networknapiheti</channel>
<channel site="awilime.com" lang="hu" xmltv_id="" site_id="galaxy4">Galaxy4napiheti</channel>
<channel site="awilime.com" lang="hu" xmltv_id="" site_id="hbo">HBOnapiheti</channel>
<channel site="awilime.com" lang="hu" xmltv_id="" site_id="hbo_2">HBO 2napiheti</channel>
<channel site="awilime.com" lang="hu" xmltv_id="" site_id="hbo_3">HBO 3napiheti</channel>
<channel site="awilime.com" lang="hu" xmltv_id="" site_id="hgtv_home_and_garden">HGTV Home &amp; Gardennapiheti</channel>
<channel site="awilime.com" lang="hu" xmltv_id="" site_id="hir_tv">hír TVnapiheti</channel>
<channel site="awilime.com" lang="hu" xmltv_id="" site_id="history">Historynapiheti</channel>
<channel site="awilime.com" lang="hu" xmltv_id="" site_id="id_investigation_discovery">ID Investigation Discoverynapiheti</channel>
<channel site="awilime.com" lang="hu" xmltv_id="" site_id="id_xtra">ID Xtranapiheti</channel>
<channel site="awilime.com" lang="hu" xmltv_id="" site_id="izaura_tv">Izaura TVnapiheti</channel>
<channel site="awilime.com" lang="hu" xmltv_id="" site_id="jazz_tv">Jazz TVnapiheti</channel>
<channel site="awilime.com" lang="hu" xmltv_id="" site_id="jim_jam">Jim Jamnapiheti</channel>
<channel site="awilime.com" lang="hu" xmltv_id="" site_id="jocky_tv">Jocky TVnapiheti</channel>
<channel site="awilime.com" lang="hu" xmltv_id="" site_id="kolyok_klub">Kölyök klubnapiheti</channel>
<channel site="awilime.com" lang="hu" xmltv_id="" site_id="lifetv">LifeTVnapiheti</channel>
<channel site="awilime.com" lang="hu" xmltv_id="" site_id="m1">m1napiheti</channel>
<channel site="awilime.com" lang="hu" xmltv_id="" site_id="m2">m2napiheti</channel>
<channel site="awilime.com" lang="hu" xmltv_id="" site_id="m4_sport">m4 sportnapiheti</channel>
<channel site="awilime.com" lang="hu" xmltv_id="" site_id="m4_sport_plusz">m4 sport+napiheti</channel>
<channel site="awilime.com" lang="hu" xmltv_id="" site_id="m5">m5napiheti</channel>
<channel site="awilime.com" lang="hu" xmltv_id="" site_id="magyar_mozi_tv">Magyar Mozi TVnapiheti</channel>
<channel site="awilime.com" lang="hu" xmltv_id="" site_id="match4">Match4napiheti</channel>
<channel site="awilime.com" lang="hu" xmltv_id="" site_id="max4">Max4napiheti</channel>
<channel site="awilime.com" lang="hu" xmltv_id="" site_id="minimax">Minimaxnapiheti</channel>
<channel site="awilime.com" lang="hu" xmltv_id="" site_id="mozi">Mozi+napiheti</channel>
<channel site="awilime.com" lang="hu" xmltv_id="" site_id="mozi_klub">Mozi klubnapiheti</channel>
<channel site="awilime.com" lang="hu" xmltv_id="" site_id="moziverzum">Moziverzumnapiheti</channel>
<channel site="awilime.com" lang="hu" xmltv_id="" site_id="mtv_european">MTV Europeannapiheti</channel>
<channel site="awilime.com" lang="hu" xmltv_id="" site_id="muzsika_tv">Muzsika TVnapiheti</channel>
<channel site="awilime.com" lang="hu" xmltv_id="" site_id="national_geographic_hd">National Geographic HDnapiheti</channel>
<channel site="awilime.com" lang="hu" xmltv_id="" site_id="national_geographic_wild">National Geographic Wildnapiheti</channel>
<channel site="awilime.com" lang="hu" xmltv_id="" site_id="neshama_tv">Neshama TVnapiheti</channel>
<channel site="awilime.com" lang="hu" xmltv_id="" site_id="nick_jr">Nick Jr.napiheti</channel>
<channel site="awilime.com" lang="hu" xmltv_id="" site_id="nickelodeon">Nickelodeonnapiheti</channel>
<channel site="awilime.com" lang="hu" xmltv_id="" site_id="nicktoons">Nicktoonsnapiheti</channel>
<channel site="awilime.com" lang="hu" xmltv_id="" site_id="ozonetv">OzoneTVnapiheti</channel>
<channel site="awilime.com" lang="hu" xmltv_id="" site_id="paramount_network">Paramount Networknapiheti</channel>
<channel site="awilime.com" lang="hu" xmltv_id="" site_id="pax_tv">PAX TVnapiheti</channel>
<channel site="awilime.com" lang="hu" xmltv_id="" site_id="prime">Primenapiheti</channel>
<channel site="awilime.com" lang="hu" xmltv_id="" site_id="rtl">RTLnapiheti</channel>
<channel site="awilime.com" lang="hu" xmltv_id="" site_id="rtl_gold">RTL GOLDnapiheti</channel>
<channel site="awilime.com" lang="hu" xmltv_id="" site_id="rtl_harom">RTL HÁROMnapiheti</channel>
<channel site="awilime.com" lang="hu" xmltv_id="" site_id="rtl_ketto">RTL KETTŐnapiheti</channel>
<channel site="awilime.com" lang="hu" xmltv_id="" site_id="rtl_otthon">RTL OTTHONnapiheti</channel>
<channel site="awilime.com" lang="hu" xmltv_id="" site_id="slager_tv">Sláger TVnapiheti</channel>
<channel site="awilime.com" lang="hu" xmltv_id="" site_id="sorozat">Sorozat+napiheti</channel>
<channel site="awilime.com" lang="hu" xmltv_id="" site_id="sorozat_klub">Sorozat klubnapiheti</channel>
<channel site="awilime.com" lang="hu" xmltv_id="" site_id="spektrum_hd">Spektrum HDnapiheti</channel>
<channel site="awilime.com" lang="hu" xmltv_id="" site_id="spektrum_home">Spektrum Homenapiheti</channel>
<channel site="awilime.com" lang="hu" xmltv_id="" site_id="spiler1_tv">Spíler1 TVnapiheti</channel>
<channel site="awilime.com" lang="hu" xmltv_id="" site_id="spiler2_tv">Spíler2 TVnapiheti</channel>
<channel site="awilime.com" lang="hu" xmltv_id="" site_id="sport_1">Sport 1napiheti</channel>
<channel site="awilime.com" lang="hu" xmltv_id="" site_id="sport_2">Sport 2napiheti</channel>
<channel site="awilime.com" lang="hu" xmltv_id="" site_id="story4">Story4napiheti</channel>
<channel site="awilime.com" lang="hu" xmltv_id="" site_id="supertv2">SuperTV2napiheti</channel>
<channel site="awilime.com" lang="hu" xmltv_id="" site_id="teennick">TeenNicknapiheti</channel>
<channel site="awilime.com" lang="hu" xmltv_id="" site_id="tlc">TLCnapiheti</channel>
<channel site="awilime.com" lang="hu" xmltv_id="" site_id="travel_channel">Travel Channelnapiheti</channel>
<channel site="awilime.com" lang="hu" xmltv_id="" site_id="tv2">TV2napiheti</channel>
<channel site="awilime.com" lang="hu" xmltv_id="" site_id="tv2_comedy">TV2 Comedynapiheti</channel>
<channel site="awilime.com" lang="hu" xmltv_id="" site_id="tv2_kids">TV2 Kidsnapiheti</channel>
<channel site="awilime.com" lang="hu" xmltv_id="" site_id="tv2_klub">TV2 Klubnapiheti</channel>
<channel site="awilime.com" lang="hu" xmltv_id="" site_id="tv2_sef">TV2 Séfnapiheti</channel>
<channel site="awilime.com" lang="hu" xmltv_id="" site_id="tv4">TV4napiheti</channel>
<channel site="awilime.com" lang="hu" xmltv_id="" site_id="tv_paprika">tv paprikanapiheti</channel>
<channel site="awilime.com" lang="hu" xmltv_id="" site_id="viasat_2">Viasat 2napiheti</channel>
<channel site="awilime.com" lang="hu" xmltv_id="" site_id="viasat_3">Viasat 3napiheti</channel>
<channel site="awilime.com" lang="hu" xmltv_id="" site_id="viasat_6">Viasat 6napiheti</channel>
<channel site="awilime.com" lang="hu" xmltv_id="" site_id="viasat_explore">Viasat Explorenapiheti</channel>
<channel site="awilime.com" lang="hu" xmltv_id="" site_id="viasat_film">Viasat Filmnapiheti</channel>
<channel site="awilime.com" lang="hu" xmltv_id="" site_id="viasat_history">Viasat Historynapiheti</channel>
<channel site="awilime.com" lang="hu" xmltv_id="" site_id="viasat_nature">Viasat Naturenapiheti</channel>
<channel site="awilime.com" lang="hu" xmltv_id="" site_id="zenebutik">Zenebutiknapiheti</channel>
</channels>

View File

@@ -1,86 +1,97 @@
const cheerio = require('cheerio')
const axios = require('axios')
const { DateTime } = require('luxon')
module.exports = {
site: 'awilime.com',
days: 2,
url({ channel, date }) {
return `https://www.awilime.com/tv/napi_musor/${channel.site_id}/${date.format('YYYY_MM_DD')}`
},
parser({ content, date }) {
const programs = []
const items = parseItems(content)
items.forEach(item => {
const prev = programs[programs.length - 1]
const $item = cheerio.load(item)
let start = parseStart($item, date)
if (!start) return
if (prev) {
prev.stop = start
}
const stop = start.plus({ minute: 30 })
programs.push({
title: parseTitle($item),
sub_title: parseSubTitle($item),
description: parseDescription($item),
start,
stop
})
})
return programs
},
async channels() {
const html = await axios
.get('https://www.awilime.com/tv/napi_musor')
.then(r => r.data)
.catch(console.log)
const $ = cheerio.load(html)
const items = $('#body > div.tk > div > div').toArray()
const channels = []
items.forEach(item => {
const name = $(item).find('a').text().trim()
const url = $(item).find('a').attr('href')
const [, site_id] = url.match(/\/tv\/napi_musor\/(.*)/) || [null, null]
if (!site_id) return
if (channels.find(channel => channel.site_id === site_id)) return
channels.push({
lang: 'hu',
site_id,
name
})
})
return channels
}
}
function parseTitle($item) {
return $item('b > a').text().trim()
}
function parseSubTitle($item) {
return $item('i').clone().children().remove('s').end().text().trim()
}
function parseDescription($item) {
return $item('p').text().trim()
}
function parseStart($item, date) {
let time = $item('b').clone().children().remove().end().text().trim()
if (!time || !/^\d/.test(time)) return null
time = `${date.format('YYYY-MM-DD')} ${time}`
return DateTime.fromFormat(time, 'yyyy-MM-dd HH:mm', { zone: 'Europe/Budapest' }).toUTC()
}
function parseItems(content) {
const $ = cheerio.load(content)
return $('#body > div.tdc > div.td2 > div').toArray()
}
const cheerio = require('cheerio')
const axios = require('axios')
const { DateTime } = require('luxon')
module.exports = {
site: 'awilime.com',
days: 2,
url({ channel, date }) {
return `https://www.awilime.com/tv/napi_musor/${channel.site_id}/${date.format('YYYY_MM_DD')}`
},
request: {
headers: {
'User-Agent':
'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/139.0.0.0 Safari/537.36'
}
},
parser({ content, date }) {
const programs = []
const items = parseItems(content)
items.forEach(item => {
const prev = programs[programs.length - 1]
const $item = cheerio.load(item)
let start = parseStart($item, date)
if (!start) return
if (prev) {
prev.stop = start
}
const stop = start.plus({ minute: 30 })
programs.push({
title: parseTitle($item),
sub_title: parseSubTitle($item),
description: parseDescription($item),
start,
stop
})
})
return programs
},
async channels() {
const html = await axios
.get('https://www.awilime.com/tv/napi_musor', {
headers: {
'User-Agent':
'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/139.0.0.0 Safari/537.36'
}
})
.then(r => r.data)
.catch(console.log)
const $ = cheerio.load(html)
const items = $('#body > div.tk > div > div').toArray()
const channels = []
items.forEach(item => {
const name = $(item).find('a').text().trim()
const url = $(item).find('a').attr('href')
const [, site_id] = url.match(/\/tv\/napi_musor\/(.*)/) || [null, null]
if (!site_id) return
if (channels.find(channel => channel.site_id === site_id)) return
channels.push({
lang: 'hu',
site_id,
name
})
})
return channels
}
}
function parseTitle($item) {
return $item('b > a').text().trim()
}
function parseSubTitle($item) {
return $item('i').clone().children().remove('s').end().text().trim()
}
function parseDescription($item) {
return $item('p').text().trim()
}
function parseStart($item, date) {
let time = $item('b').clone().children().remove().end().text().trim()
if (!time || !/^\d/.test(time)) return null
time = `${date.format('YYYY-MM-DD')} ${time}`
return DateTime.fromFormat(time, 'yyyy-MM-dd HH:mm', { zone: 'Europe/Budapest' }).toUTC()
}
function parseItems(content) {
const $ = cheerio.load(content)
return $('#body > div.tdc > div.td2 > div').toArray()
}

View File

@@ -1,49 +1,49 @@
const { parser, url } = require('./awilime.com.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')
dayjs.extend(customParseFormat)
dayjs.extend(utc)
const date = dayjs.utc('2024-06-26', 'YYYY-MM-DD').startOf('d')
const channel = {
site_id: 'budapest_europa_tv',
xmltv_id: 'BudapestEuropaTelevizio.hu'
}
it('can generate valid url', () => {
expect(url({ channel, date })).toBe(
'https://www.awilime.com/tv/napi_musor/budapest_europa_tv/2024_06_26'
)
})
it('can parse response', () => {
const content = fs.readFileSync(path.resolve(__dirname, '__data__/content.html'))
const results = parser({ content, date }).map(p => {
p.start = p.start.toJSON()
p.stop = p.stop.toJSON()
return p
})
expect(results.length).toBe(15)
expect(results[3]).toMatchObject({
start: '2024-06-26T07:00:00.000Z',
stop: '2024-06-26T08:00:00.000Z',
title: 'Ébredés',
sub_title: 'Amerikai dokumentumfilm (2018)',
description: 'Balla Tibor misszionárius'
})
})
it('can handle empty guide', () => {
const result = parser({
date,
channel,
content:
'<html><head><title>Object moved</title></head><body><h2>Object moved to <a href="/tv/napi_musor/budapest_europa_tv/2024_06_24">here</a>.</h2></body></html>'
})
expect(result).toMatchObject([])
})
const { parser, url } = require('./awilime.com.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')
dayjs.extend(customParseFormat)
dayjs.extend(utc)
const date = dayjs.utc('2024-06-26', 'YYYY-MM-DD').startOf('d')
const channel = {
site_id: 'budapest_europa_tv',
xmltv_id: 'BudapestEuropaTelevizio.hu'
}
it('can generate valid url', () => {
expect(url({ channel, date })).toBe(
'https://www.awilime.com/tv/napi_musor/budapest_europa_tv/2024_06_26'
)
})
it('can parse response', () => {
const content = fs.readFileSync(path.resolve(__dirname, '__data__/content.html'))
const results = parser({ content, date }).map(p => {
p.start = p.start.toJSON()
p.stop = p.stop.toJSON()
return p
})
expect(results.length).toBe(15)
expect(results[3]).toMatchObject({
start: '2024-06-26T07:00:00.000Z',
stop: '2024-06-26T08:00:00.000Z',
title: 'Ébredés',
sub_title: 'Amerikai dokumentumfilm (2018)',
description: 'Balla Tibor misszionárius'
})
})
it('can handle empty guide', () => {
const result = parser({
date,
channel,
content:
'<html><head><title>Object moved</title></head><body><h2>Object moved to <a href="/tv/napi_musor/budapest_europa_tv/2024_06_24">here</a>.</h2></body></html>'
})
expect(result).toMatchObject([])
})

View File

@@ -1,21 +1,21 @@
# awilime.com
https://www.awilime.com/tv/musor
### Download the guide
```sh
npm run grab --- --site=awilime.com
```
### Update channel list
```sh
npm run channels:parse --- --config=./sites/awilime.com/awilime.com.config.js --output=./sites/awilime.com/awilime.com.channels.xml
```
### Test
```sh
npm test --- awilime.com
```
# awilime.com
https://www.awilime.com/tv/musor
### Download the guide
```sh
npm run grab --- --site=awilime.com
```
### Update channel list
```sh
npm run channels:parse --- --config=./sites/awilime.com/awilime.com.config.js --output=./sites/awilime.com/awilime.com.channels.xml
```
### Test
```sh
npm test --- awilime.com
```

View File

@@ -1,110 +1,110 @@
const axios = require('axios')
const dayjs = require('dayjs')
const cheerio = require('cheerio')
const { DateTime } = require('luxon')
module.exports = {
site: 'bein.com',
days: 2,
request: {
cache: {
ttl: 60 * 60 * 1000 // 1 hour
}
},
url: function ({ date, channel }) {
const [category] = channel.site_id.split('#')
const postid = channel.lang === 'ar' ? '25344' : '25356'
return `https://www.bein.com/${
channel.lang
}/epg-ajax-template/?action=epg_fetch&category=${category}&cdate=${date.format(
'YYYY-MM-DD'
)}&language=${channel.lang.toUpperCase()}&loadindex=0&mins=00&offset=0&postid=${postid}&serviceidentity=bein.net`
},
parser: function ({ content, channel, date }) {
let programs = []
const items = parseItems(content, channel)
date = DateTime.fromMillis(date.valueOf()).minus({ days: 1 })
items.forEach(item => {
const $item = cheerio.load(item)
const title = parseTitle($item)
if (!title) return
const category = parseCategory($item)
const prev = programs[programs.length - 1]
let start = parseTime($item, date)
if (prev) {
if (start < prev.start) {
start = start.plus({ days: 1 })
date = date.plus({ days: 1 })
}
prev.stop = start
}
let stop = parseTime($item, start)
if (stop < start) {
stop = stop.plus({ days: 1 })
}
programs.push({
title,
category,
start,
stop
})
})
return programs
},
async channels({ lang }) {
const categories = ['entertainment', 'sports']
let channels = []
for (let category of categories) {
const url = `https://www.bein.com/en/epg-ajax-template/?action=epg_fetch&offset=0&category=${category}&serviceidentity=bein.net&mins=00&cdate=${dayjs().format(
'YYYY-MM-DD'
)}&language=${lang.toUpperCase()}&postid=25356&loadindex=0`
const data = await axios
.get(url)
.then(r => r.data)
.catch(console.log)
const $ = cheerio.load(data)
$('.container-tvguide > div').each((i, el) => {
const id = $(el).attr('id')
if (!id || !/^channels_\d+/.test(id)) return
const [, channelId] = id.split('_')
channels.push({
lang,
site_id: `${category}#${channelId}`,
name: channelId
})
})
}
return channels
}
}
function parseTitle($item) {
return $item('.title').text()
}
function parseCategory($item) {
return $item('.format').text()
}
function parseTime($item, date) {
let [, time] = $item('.time')
.text()
.match(/^(\d{2}:\d{2})/) || [null, null]
if (!time) return null
time = `${date.toFormat('yyyy-MM-dd')} ${time}`
return DateTime.fromFormat(time, 'yyyy-MM-dd HH:mm', { zone: 'Asia/Qatar' }).toUTC()
}
function parseItems(content, channel) {
const [, channelId] = channel.site_id.split('#')
const $ = cheerio.load(content)
return $(`#channels_${channelId} .slider > ul:first-child > li`).toArray()
}
const axios = require('axios')
const dayjs = require('dayjs')
const cheerio = require('cheerio')
const { DateTime } = require('luxon')
module.exports = {
site: 'bein.com',
days: 2,
request: {
cache: {
ttl: 60 * 60 * 1000 // 1 hour
}
},
url: function ({ date, channel }) {
const [category] = channel.site_id.split('#')
const postid = channel.lang === 'ar' ? '25344' : '25356'
return `https://www.bein.com/${
channel.lang
}/epg-ajax-template/?action=epg_fetch&category=${category}&cdate=${date.format(
'YYYY-MM-DD'
)}&language=${channel.lang.toUpperCase()}&loadindex=0&mins=00&offset=0&postid=${postid}&serviceidentity=bein.net`
},
parser: function ({ content, channel, date }) {
let programs = []
const items = parseItems(content, channel)
date = DateTime.fromMillis(date.valueOf()).minus({ days: 1 })
items.forEach(item => {
const $item = cheerio.load(item)
const title = parseTitle($item)
if (!title) return
const category = parseCategory($item)
const prev = programs[programs.length - 1]
let start = parseTime($item, date)
if (prev) {
if (start < prev.start) {
start = start.plus({ days: 1 })
date = date.plus({ days: 1 })
}
prev.stop = start
}
let stop = parseTime($item, start)
if (stop < start) {
stop = stop.plus({ days: 1 })
}
programs.push({
title,
category,
start,
stop
})
})
return programs
},
async channels({ lang }) {
const categories = ['entertainment', 'sports']
let channels = []
for (let category of categories) {
const url = `https://www.bein.com/en/epg-ajax-template/?action=epg_fetch&offset=0&category=${category}&serviceidentity=bein.net&mins=00&cdate=${dayjs().format(
'YYYY-MM-DD'
)}&language=${lang.toUpperCase()}&postid=25356&loadindex=0`
const data = await axios
.get(url)
.then(r => r.data)
.catch(console.log)
const $ = cheerio.load(data)
$('.container-tvguide > div').each((i, el) => {
const id = $(el).attr('id')
if (!id || !/^channels_\d+/.test(id)) return
const [, channelId] = id.split('_')
channels.push({
lang,
site_id: `${category}#${channelId}`,
name: channelId
})
})
}
return channels
}
}
function parseTitle($item) {
return $item('.title').text()
}
function parseCategory($item) {
return $item('.format').text()
}
function parseTime($item, date) {
let [, time] = $item('.time')
.text()
.match(/^(\d{2}:\d{2})/) || [null, null]
if (!time) return null
time = `${date.toFormat('yyyy-MM-dd')} ${time}`
return DateTime.fromFormat(time, 'yyyy-MM-dd HH:mm', { zone: 'Asia/Qatar' }).toUTC()
}
function parseItems(content, channel) {
const [, channelId] = channel.site_id.split('#')
const $ = cheerio.load(content)
return $(`#channels_${channelId} .slider > ul:first-child > li`).toArray()
}

View File

@@ -1,58 +1,58 @@
const fs = require('fs')
const path = require('path')
const { parser, url } = require('./bein.com.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('2023-01-19', 'YYYY-MM-DD').startOf('d')
const channel = { site_id: 'entertainment#1', xmltv_id: 'beINMovies1Premiere.qa', lang: 'en' }
it('can generate valid url', () => {
const result = url({ date, channel })
expect(result).toBe(
'https://www.bein.com/en/epg-ajax-template/?action=epg_fetch&category=entertainment&cdate=2023-01-19&language=EN&loadindex=0&mins=00&offset=0&postid=25356&serviceidentity=bein.net'
)
})
it('can parse response', () => {
const content = fs.readFileSync(path.resolve('sites/bein.com/__data__/content.html'))
const results = parser({ date, channel, content }).map(p => {
p.start = p.start.toJSON()
p.stop = p.stop.toJSON()
return p
})
expect(results[0]).toMatchObject({
start: '2023-01-18T20:15:00.000Z',
stop: '2023-01-18T22:15:00.000Z',
title: 'The Walk',
category: 'Movies'
})
expect(results[1]).toMatchObject({
start: '2023-01-18T22:15:00.000Z',
stop: '2023-01-19T00:00:00.000Z',
title: 'Resident Evil: Welcome To Raccoon City',
category: 'Movies'
})
expect(results[10]).toMatchObject({
start: '2023-01-19T15:30:00.000Z',
stop: '2023-01-19T18:00:00.000Z',
title: 'Spider-Man: No Way Home',
category: 'Movies'
})
})
it('can handle empty guide', () => {
const noContent = fs.readFileSync(path.resolve('sites/bein.com/__data__/no-content.html'))
const result = parser({
date,
channel,
content: noContent
})
expect(result).toMatchObject([])
})
const fs = require('fs')
const path = require('path')
const { parser, url } = require('./bein.com.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('2023-01-19', 'YYYY-MM-DD').startOf('d')
const channel = { site_id: 'entertainment#1', xmltv_id: 'beINMovies1Premiere.qa', lang: 'en' }
it('can generate valid url', () => {
const result = url({ date, channel })
expect(result).toBe(
'https://www.bein.com/en/epg-ajax-template/?action=epg_fetch&category=entertainment&cdate=2023-01-19&language=EN&loadindex=0&mins=00&offset=0&postid=25356&serviceidentity=bein.net'
)
})
it('can parse response', () => {
const content = fs.readFileSync(path.resolve('sites/bein.com/__data__/content.html'))
const results = parser({ date, channel, content }).map(p => {
p.start = p.start.toJSON()
p.stop = p.stop.toJSON()
return p
})
expect(results[0]).toMatchObject({
start: '2023-01-18T20:15:00.000Z',
stop: '2023-01-18T22:15:00.000Z',
title: 'The Walk',
category: 'Movies'
})
expect(results[1]).toMatchObject({
start: '2023-01-18T22:15:00.000Z',
stop: '2023-01-19T00:00:00.000Z',
title: 'Resident Evil: Welcome To Raccoon City',
category: 'Movies'
})
expect(results[10]).toMatchObject({
start: '2023-01-19T15:30:00.000Z',
stop: '2023-01-19T18:00:00.000Z',
title: 'Spider-Man: No Way Home',
category: 'Movies'
})
})
it('can handle empty guide', () => {
const noContent = fs.readFileSync(path.resolve('sites/bein.com/__data__/no-content.html'))
const result = parser({
date,
channel,
content: noContent
})
expect(result).toMatchObject([])
})

View File

@@ -1,82 +1,70 @@
<?xml version="1.0" encoding="UTF-8"?>
<channels>
<channel site="bein.com" lang="ar" xmltv_id="AlJazeeraDocumentary.qa" site_id="entertainment#26">26</channel>
<channel site="bein.com" lang="ar" xmltv_id="AlkassEight.qa" site_id="sports#40">40</channel>
<channel site="bein.com" lang="ar" xmltv_id="AlkassFive.qa" site_id="sports#37">37</channel>
<channel site="bein.com" lang="ar" xmltv_id="AlkassFour.qa" site_id="sports#36">36</channel>
<channel site="bein.com" lang="ar" xmltv_id="AlkassNine.qa" site_id="sports#41">41</channel>
<channel site="bein.com" lang="ar" xmltv_id="AlkassOne.qa" site_id="sports#34">34</channel>
<channel site="bein.com" lang="ar" xmltv_id="AlkassSeven.qa" site_id="sports#39">39</channel>
<channel site="bein.com" lang="ar" xmltv_id="AlkassSix.qa" site_id="sports#38">38</channel>
<channel site="bein.com" lang="ar" xmltv_id="AlkassThree.qa" site_id="sports#33">33</channel>
<channel site="bein.com" lang="ar" xmltv_id="AlkassTwo.qa" site_id="sports#35">35</channel>
<channel site="bein.com" lang="ar" xmltv_id="BabyTV.uk" site_id="entertainment#32">32</channel>
<channel site="bein.com" lang="ar" xmltv_id="Baraem.qa" site_id="entertainment#30">30</channel>
<channel site="bein.com" lang="ar" xmltv_id="BBCEarth.uk@MiddleEast" site_id="entertainment#25">25</channel>
<channel site="bein.com" lang="ar" xmltv_id="beIN4K.qa" site_id="sports#15">15</channel>
<channel site="bein.com" lang="ar" xmltv_id="beINDrama1.qa" site_id="entertainment#10">10</channel>
<channel site="bein.com" lang="ar" xmltv_id="beINGourmet.qa" site_id="entertainment#11">11</channel>
<channel site="bein.com" lang="ar" xmltv_id="beINMovies1Premiere.qa" site_id="entertainment#1">1</channel>
<channel site="bein.com" lang="ar" xmltv_id="beINMovies2Action.qa" site_id="entertainment#2">2</channel>
<channel site="bein.com" lang="ar" xmltv_id="beINMovies3Drama.qa" site_id="entertainment#3">3</channel>
<channel site="bein.com" lang="ar" xmltv_id="beINMovies4Family.qa" site_id="entertainment#4">4</channel>
<channel site="bein.com" lang="ar" xmltv_id="beINSeries1.qa" site_id="entertainment#8">8</channel>
<channel site="bein.com" lang="ar" xmltv_id="beINSeries2.qa" site_id="entertainment#9">9</channel>
<channel site="bein.com" lang="ar" xmltv_id="beINSports.qa" site_id="sports#2">2</channel>
<channel site="bein.com" lang="ar" xmltv_id="beINSports1.qa" site_id="sports#3">3</channel>
<channel site="bein.com" lang="ar" xmltv_id="beINSports2.qa" site_id="sports#4">4</channel>
<channel site="bein.com" lang="ar" xmltv_id="beINSports3.qa" site_id="sports#5">5</channel>
<channel site="bein.com" lang="ar" xmltv_id="beINSports4.qa" site_id="sports#6">6</channel>
<channel site="bein.com" lang="ar" xmltv_id="beINSports5.qa" site_id="sports#7">7</channel>
<channel site="bein.com" lang="ar" xmltv_id="beINSports6.qa" site_id="sports#8">8</channel>
<channel site="bein.com" lang="ar" xmltv_id="beINSports7.qa" site_id="sports#9">9</channel>
<channel site="bein.com" lang="ar" xmltv_id="beINSportsAFC.qa" site_id="sports#16">16</channel>
<channel site="bein.com" lang="ar" xmltv_id="beINSportsAFC1.qa" site_id="sports#17">17</channel>
<channel site="bein.com" lang="ar" xmltv_id="beINSportsAFC2.qa" site_id="sports#18">18</channel>
<channel site="bein.com" lang="ar" xmltv_id="beINSportsAFC3.qa" site_id="sports#19">19</channel>
<channel site="bein.com" lang="ar" xmltv_id="beINSportsEnglish1.qa" site_id="sports#20">20</channel>
<channel site="bein.com" lang="ar" xmltv_id="beINSportsEnglish2.qa" site_id="sports#21">21</channel>
<channel site="bein.com" lang="ar" xmltv_id="beINSportsEnglish3.qa" site_id="sports#22">22</channel>
<channel site="bein.com" lang="ar" xmltv_id="beINSportsFrench1.qa" site_id="sports#24">24</channel>
<channel site="bein.com" lang="ar" xmltv_id="beINSportsFrench2.qa" site_id="sports#25">25</channel>
<channel site="bein.com" lang="ar" xmltv_id="beINSportsFrench3.qa" site_id="sports#26">26</channel>
<channel site="bein.com" lang="ar" xmltv_id="beINSportsMax1.qa" site_id="sports#27">27</channel>
<channel site="bein.com" lang="ar" xmltv_id="beINSportsMax2.qa" site_id="sports#28">28</channel>
<channel site="bein.com" lang="ar" xmltv_id="beINSportsMax3.qa" site_id="sports#29">29</channel>
<channel site="bein.com" lang="ar" xmltv_id="beINSportsMax4.qa" site_id="sports#30">30</channel>
<channel site="bein.com" lang="ar" xmltv_id="beINSportsMax5.qa" site_id="sports#31">31</channel>
<channel site="bein.com" lang="ar" xmltv_id="beINSportsMax6.qa" site_id="sports#32">32</channel>
<channel site="bein.com" lang="ar" xmltv_id="beINSportsNBA.qa" site_id="sports#23">23</channel>
<channel site="bein.com" lang="ar" xmltv_id="beINSportsNews.qa" site_id="sports#1">1</channel>
<channel site="bein.com" lang="ar" xmltv_id="beINSportsPremium1.qa" site_id="sports#10">10</channel>
<channel site="bein.com" lang="ar" xmltv_id="beINSportsPremium2.qa" site_id="sports#11">11</channel>
<channel site="bein.com" lang="ar" xmltv_id="beINSportsPremium3.qa" site_id="sports#12">12</channel>
<channel site="bein.com" lang="ar" xmltv_id="beINSportsXtra1.qa" site_id="sports#13">13</channel>
<channel site="bein.com" lang="ar" xmltv_id="beINSportsXtra2.qa" site_id="sports#14">14</channel>
<channel site="bein.com" lang="ar" xmltv_id="BeJunior.qa" site_id="entertainment#21">21</channel>
<channel site="bein.com" lang="ar" xmltv_id="BloombergTV.us@MiddleEast" site_id="entertainment#22">22</channel>
<channel site="bein.com" lang="ar" xmltv_id="CartoonitoMENA.uk" site_id="entertainment#38">38</channel>
<channel site="bein.com" lang="ar" xmltv_id="CartoonNetworkArabic.ae" site_id="entertainment#34">34</channel>
<channel site="bein.com" lang="ar" xmltv_id="CartoonNetwork.in@Hindi" site_id="entertainment#35">35</channel>
<channel site="bein.com" lang="ar" xmltv_id="CartoonNetworkMENA.uk" site_id="entertainment#33">33</channel>
<channel site="bein.com" lang="ar" xmltv_id="CBeebiesMiddleEast.uk" site_id="entertainment#31">31</channel>
<channel site="bein.com" lang="ar" xmltv_id="ClubMTVEurope.uk" site_id="entertainment#20">20</channel>
<channel site="bein.com" lang="ar" xmltv_id="CNNArabic.ae" site_id="entertainment#27">27</channel>
<channel site="bein.com" lang="ar" xmltv_id="DreamWorksChannelMiddleEast.us" site_id="entertainment#36">36</channel>
<channel site="bein.com" lang="ar" xmltv_id="DreamWorksChannelMiddleEast.us" site_id="entertainment#37">37</channel>
<channel site="bein.com" lang="ar" xmltv_id="EuronewsEnglish.fr" site_id="entertainment#28">28</channel>
<channel site="bein.com" lang="ar" xmltv_id="Fatafeat.ae" site_id="entertainment#17">17</channel>
<channel site="bein.com" lang="ar" xmltv_id="FoodNetworkEMEA.us" site_id="entertainment#14">14</channel>
<channel site="bein.com" lang="ar" xmltv_id="FoxActionMoviesMENA.hk" site_id="entertainment#6">6</channel>
<channel site="bein.com" lang="ar" xmltv_id="FoxArabia.ae" site_id="entertainment#13">13</channel>
<channel site="bein.com" lang="ar" xmltv_id="FoxMoviesMiddleEast.us" site_id="entertainment#5">5</channel>
<channel site="bein.com" lang="ar" xmltv_id="HGTVArabia.us" site_id="entertainment#15">15</channel>
<channel site="bein.com" lang="ar" xmltv_id="JeemTV.qa" site_id="entertainment#29">29</channel>
<channel site="bein.com" lang="ar" xmltv_id="MTV80s.uk" site_id="entertainment#18">18</channel>
<channel site="bein.com" lang="ar" xmltv_id="MTV90s.uk" site_id="entertainment#19">19</channel>
<channel site="bein.com" lang="ar" xmltv_id="NationalGeographicMiddleEast.uk" site_id="entertainment#23">23</channel>
<channel site="bein.com" lang="ar" xmltv_id="NationalGeographicWildMiddleEast.uk" site_id="entertainment#24">24</channel>
<channel site="bein.com" lang="ar" xmltv_id="StarMoviesMiddleEast.ae" site_id="entertainment#7">7</channel>
<channel site="bein.com" lang="ar" xmltv_id="StarWorldMiddleEast.ae" site_id="entertainment#16">16</channel>
<channel site="bein.com" lang="ar" xmltv_id="TravelChannelEMEA.uk" site_id="entertainment#12">12</channel>
</channels>
<?xml version="1.0" encoding="UTF-8"?>
<channels>
<channel site="bein.com" lang="ar" xmltv_id="AlJazeeraDocumentary.qa" site_id="entertainment#26">26</channel>
<channel site="bein.com" lang="ar" xmltv_id="AlkassOne.qa" site_id="sports#34">34</channel>
<channel site="bein.com" lang="ar" xmltv_id="AlkassThree.qa" site_id="sports#33">33</channel>
<channel site="bein.com" lang="ar" xmltv_id="BabyTV.uk" site_id="entertainment#32">32</channel>
<channel site="bein.com" lang="ar" xmltv_id="Baraem.qa" site_id="entertainment#30">30</channel>
<channel site="bein.com" lang="ar" xmltv_id="BBCEarth.uk@MiddleEast" site_id="entertainment#25">25</channel>
<channel site="bein.com" lang="ar" xmltv_id="beIN4K.qa" site_id="sports#15">15</channel>
<channel site="bein.com" lang="ar" xmltv_id="beINDrama1.qa" site_id="entertainment#10">10</channel>
<channel site="bein.com" lang="ar" xmltv_id="beINGourmet.qa" site_id="entertainment#11">11</channel>
<channel site="bein.com" lang="ar" xmltv_id="beINMovies1Premiere.qa" site_id="entertainment#1">1</channel>
<channel site="bein.com" lang="ar" xmltv_id="beINMovies2Action.qa" site_id="entertainment#2">2</channel>
<channel site="bein.com" lang="ar" xmltv_id="beINMovies3Drama.qa" site_id="entertainment#3">3</channel>
<channel site="bein.com" lang="ar" xmltv_id="beINMovies4Family.qa" site_id="entertainment#4">4</channel>
<channel site="bein.com" lang="ar" xmltv_id="beINSeries1.qa" site_id="entertainment#8">8</channel>
<channel site="bein.com" lang="ar" xmltv_id="beINSeries2.qa" site_id="entertainment#9">9</channel>
<channel site="bein.com" lang="ar" xmltv_id="beINSports1.qa" site_id="sports#3">3</channel>
<channel site="bein.com" lang="ar" xmltv_id="beINSports2.qa" site_id="sports#4">4</channel>
<channel site="bein.com" lang="ar" xmltv_id="beINSports3.qa" site_id="sports#5">5</channel>
<channel site="bein.com" lang="ar" xmltv_id="beINSports4.qa" site_id="sports#6">6</channel>
<channel site="bein.com" lang="ar" xmltv_id="beINSports5.qa" site_id="sports#7">7</channel>
<channel site="bein.com" lang="ar" xmltv_id="beINSports6.qa" site_id="sports#8">8</channel>
<channel site="bein.com" lang="ar" xmltv_id="beINSports7.qa" site_id="sports#9">9</channel>
<channel site="bein.com" lang="ar" xmltv_id="beINSports.qa" site_id="sports#2">2</channel>
<channel site="bein.com" lang="ar" xmltv_id="beINSportsAFC1.qa" site_id="sports#17">17</channel>
<channel site="bein.com" lang="ar" xmltv_id="beINSportsAFC2.qa" site_id="sports#18">18</channel>
<channel site="bein.com" lang="ar" xmltv_id="beINSportsAFC3.qa" site_id="sports#19">19</channel>
<channel site="bein.com" lang="ar" xmltv_id="beINSportsAFC.qa" site_id="sports#16">16</channel>
<channel site="bein.com" lang="ar" xmltv_id="beINSportsEnglish1.qa" site_id="sports#20">20</channel>
<channel site="bein.com" lang="ar" xmltv_id="beINSportsEnglish2.qa" site_id="sports#21">21</channel>
<channel site="bein.com" lang="ar" xmltv_id="beINSportsEnglish3.qa" site_id="sports#22">22</channel>
<channel site="bein.com" lang="ar" xmltv_id="beINSportsFrench1.qa" site_id="sports#24">24</channel>
<channel site="bein.com" lang="ar" xmltv_id="beINSportsFrench2.qa" site_id="sports#25">25</channel>
<channel site="bein.com" lang="ar" xmltv_id="beINSportsFrench3.qa" site_id="sports#26">26</channel>
<channel site="bein.com" lang="ar" xmltv_id="beINSportsMax1.qa" site_id="sports#27">27</channel>
<channel site="bein.com" lang="ar" xmltv_id="beINSportsMax2.qa" site_id="sports#28">28</channel>
<channel site="bein.com" lang="ar" xmltv_id="beINSportsMax3.qa" site_id="sports#29">29</channel>
<channel site="bein.com" lang="ar" xmltv_id="beINSportsMax4.qa" site_id="sports#30">30</channel>
<channel site="bein.com" lang="ar" xmltv_id="beINSportsMax5.qa" site_id="sports#31">31</channel>
<channel site="bein.com" lang="ar" xmltv_id="beINSportsMax6.qa" site_id="sports#32">32</channel>
<channel site="bein.com" lang="ar" xmltv_id="beINSportsNBA.qa" site_id="sports#23">23</channel>
<channel site="bein.com" lang="ar" xmltv_id="beINSportsNews.qa" site_id="sports#1">1</channel>
<channel site="bein.com" lang="ar" xmltv_id="beINSportsPremium1.qa" site_id="sports#10">10</channel>
<channel site="bein.com" lang="ar" xmltv_id="beINSportsPremium2.qa" site_id="sports#11">11</channel>
<channel site="bein.com" lang="ar" xmltv_id="beINSportsPremium3.qa" site_id="sports#12">12</channel>
<channel site="bein.com" lang="ar" xmltv_id="beINSportsXtra1.qa" site_id="sports#13">13</channel>
<channel site="bein.com" lang="ar" xmltv_id="beINSportsXtra2.qa" site_id="sports#14">14</channel>
<channel site="bein.com" lang="ar" xmltv_id="BeJunior.qa" site_id="entertainment#21">21</channel>
<channel site="bein.com" lang="ar" xmltv_id="BloombergTV.us@MiddleEast" site_id="entertainment#22">22</channel>
<channel site="bein.com" lang="ar" xmltv_id="CartoonNetworkMENA.uk" site_id="entertainment#33">33</channel>
<channel site="bein.com" lang="ar" xmltv_id="CBeebiesMiddleEast.uk" site_id="entertainment#31">31</channel>
<channel site="bein.com" lang="ar" xmltv_id="ClubMTVEurope.uk" site_id="entertainment#20">20</channel>
<channel site="bein.com" lang="ar" xmltv_id="CNNArabic.ae" site_id="entertainment#27">27</channel>
<channel site="bein.com" lang="ar" xmltv_id="EuronewsEnglish.fr" site_id="entertainment#28">28</channel>
<channel site="bein.com" lang="ar" xmltv_id="Fatafeat.ae" site_id="entertainment#17">17</channel>
<channel site="bein.com" lang="ar" xmltv_id="FoodNetworkEMEA.us" site_id="entertainment#14">14</channel>
<channel site="bein.com" lang="ar" xmltv_id="FoxActionMoviesMENA.hk" site_id="entertainment#6">6</channel>
<channel site="bein.com" lang="ar" xmltv_id="FoxArabia.ae" site_id="entertainment#13">13</channel>
<channel site="bein.com" lang="ar" xmltv_id="FoxMoviesMiddleEast.us" site_id="entertainment#5">5</channel>
<channel site="bein.com" lang="ar" xmltv_id="HGTVArabia.us" site_id="entertainment#15">15</channel>
<channel site="bein.com" lang="ar" xmltv_id="JeemTV.qa" site_id="entertainment#29">29</channel>
<channel site="bein.com" lang="ar" xmltv_id="MTV80s.uk" site_id="entertainment#18">18</channel>
<channel site="bein.com" lang="ar" xmltv_id="MTV90s.uk" site_id="entertainment#19">19</channel>
<channel site="bein.com" lang="ar" xmltv_id="NationalGeographicMiddleEast.uk" site_id="entertainment#23">23</channel>
<channel site="bein.com" lang="ar" xmltv_id="NationalGeographicWildMiddleEast.uk" site_id="entertainment#24">24</channel>
<channel site="bein.com" lang="ar" xmltv_id="StarMoviesMiddleEast.ae" site_id="entertainment#7">7</channel>
<channel site="bein.com" lang="ar" xmltv_id="StarWorldMiddleEast.ae" site_id="entertainment#16">16</channel>
<channel site="bein.com" lang="ar" xmltv_id="TravelChannelEMEA.uk" site_id="entertainment#12">12</channel>
</channels>

View File

@@ -1,84 +1,70 @@
<?xml version="1.0" encoding="UTF-8"?>
<channels>
<channel site="bein.com" lang="en" xmltv_id="AlkassEight.qa" site_id="sports#40">40</channel>
<channel site="bein.com" lang="en" xmltv_id="AlkassEleven.qa" site_id="sports#43">43</channel>
<channel site="bein.com" lang="en" xmltv_id="AlkassFive.qa" site_id="sports#37">37</channel>
<channel site="bein.com" lang="en" xmltv_id="AlkassFour.qa" site_id="sports#36">36</channel>
<channel site="bein.com" lang="en" xmltv_id="AlkassNine.qa" site_id="sports#41">41</channel>
<channel site="bein.com" lang="en" xmltv_id="AlkassOne.qa" site_id="sports#33">33</channel>
<channel site="bein.com" lang="en" xmltv_id="AlkassSeven.qa" site_id="sports#39">39</channel>
<channel site="bein.com" lang="en" xmltv_id="AlkassSix.qa" site_id="sports#38">38</channel>
<channel site="bein.com" lang="en" xmltv_id="AlkassTen.qa" site_id="sports#42">42</channel>
<channel site="bein.com" lang="en" xmltv_id="AlkassThree.qa" site_id="sports#35">35</channel>
<channel site="bein.com" lang="en" xmltv_id="AlkassTwo.qa" site_id="sports#34">34</channel>
<channel site="bein.com" lang="en" xmltv_id="BabyTV.uk" site_id="entertainment#35">35</channel>
<channel site="bein.com" lang="en" xmltv_id="Baraem.qa" site_id="entertainment#31">31</channel>
<channel site="bein.com" lang="en" xmltv_id="BBCEarth.uk@MiddleEast" site_id="entertainment#25">25</channel>
<channel site="bein.com" lang="en" xmltv_id="beIN4K.qa" site_id="sports#15">15</channel>
<channel site="bein.com" lang="en" xmltv_id="beINDrama1.qa" site_id="entertainment#10">10</channel>
<channel site="bein.com" lang="en" xmltv_id="beINGourmet.qa" site_id="entertainment#11">11</channel>
<channel site="bein.com" lang="en" xmltv_id="beINMovies1Premiere.qa" site_id="entertainment#1">1</channel>
<channel site="bein.com" lang="en" xmltv_id="beINMovies2Action.qa" site_id="entertainment#2">2</channel>
<channel site="bein.com" lang="en" xmltv_id="beINMovies3Drama.qa" site_id="entertainment#3">3</channel>
<channel site="bein.com" lang="en" xmltv_id="beINMovies4Family.qa" site_id="entertainment#4">4</channel>
<channel site="bein.com" lang="en" xmltv_id="beINSeries1.qa" site_id="entertainment#8">8</channel>
<channel site="bein.com" lang="en" xmltv_id="beINSeries2.qa" site_id="entertainment#9">9</channel>
<channel site="bein.com" lang="en" xmltv_id="beINSports.qa" site_id="sports#2">2</channel>
<channel site="bein.com" lang="en" xmltv_id="beINSports1.qa" site_id="sports#3">3</channel>
<channel site="bein.com" lang="en" xmltv_id="beINSports2.qa" site_id="sports#4">4</channel>
<channel site="bein.com" lang="en" xmltv_id="beINSports3.qa" site_id="sports#5">5</channel>
<channel site="bein.com" lang="en" xmltv_id="beINSports4.qa" site_id="sports#6">6</channel>
<channel site="bein.com" lang="en" xmltv_id="beINSports5.qa" site_id="sports#7">7</channel>
<channel site="bein.com" lang="en" xmltv_id="beINSports6.qa" site_id="sports#8">8</channel>
<channel site="bein.com" lang="en" xmltv_id="beINSports7.qa" site_id="sports#9">9</channel>
<channel site="bein.com" lang="en" xmltv_id="beINSportsAFC.qa" site_id="sports#16">16</channel>
<channel site="bein.com" lang="en" xmltv_id="beINSportsAFC1.qa" site_id="sports#17">17</channel>
<channel site="bein.com" lang="en" xmltv_id="beINSportsAFC2.qa" site_id="sports#18">18</channel>
<channel site="bein.com" lang="en" xmltv_id="beINSportsAFC3.qa" site_id="sports#19">19</channel>
<channel site="bein.com" lang="en" xmltv_id="beINSportsEnglish1.qa" site_id="sports#20">20</channel>
<channel site="bein.com" lang="en" xmltv_id="beINSportsEnglish2.qa" site_id="sports#21">21</channel>
<channel site="bein.com" lang="en" xmltv_id="beINSportsEnglish3.qa" site_id="sports#22">22</channel>
<channel site="bein.com" lang="en" xmltv_id="beINSportsFrench1.qa" site_id="sports#24">24</channel>
<channel site="bein.com" lang="en" xmltv_id="beINSportsFrench2.qa" site_id="sports#25">25</channel>
<channel site="bein.com" lang="en" xmltv_id="beINSportsFrench3.qa" site_id="sports#26">26</channel>
<channel site="bein.com" lang="en" xmltv_id="beINSportsMax1.qa" site_id="sports#27">27</channel>
<channel site="bein.com" lang="en" xmltv_id="beINSportsMax2.qa" site_id="sports#28">28</channel>
<channel site="bein.com" lang="en" xmltv_id="beINSportsMax3.qa" site_id="sports#29">29</channel>
<channel site="bein.com" lang="en" xmltv_id="beINSportsMax4.qa" site_id="sports#30">30</channel>
<channel site="bein.com" lang="en" xmltv_id="beINSportsMax5.qa" site_id="sports#31">31</channel>
<channel site="bein.com" lang="en" xmltv_id="beINSportsMax6.qa" site_id="sports#32">32</channel>
<channel site="bein.com" lang="en" xmltv_id="beINSportsNBA.qa" site_id="sports#23">23</channel>
<channel site="bein.com" lang="en" xmltv_id="beINSportsNews.qa" site_id="sports#1">1</channel>
<channel site="bein.com" lang="en" xmltv_id="beINSportsPremium1.qa" site_id="sports#10">10</channel>
<channel site="bein.com" lang="en" xmltv_id="beINSportsPremium2.qa" site_id="sports#11">11</channel>
<channel site="bein.com" lang="en" xmltv_id="beINSportsPremium3.qa" site_id="sports#12">12</channel>
<channel site="bein.com" lang="en" xmltv_id="beINSportsXtra1.qa" site_id="sports#13">13</channel>
<channel site="bein.com" lang="en" xmltv_id="beINSportsXtra2.qa" site_id="sports#14">14</channel>
<channel site="bein.com" lang="en" xmltv_id="BeJunior.qa" site_id="entertainment#29">29</channel>
<channel site="bein.com" lang="en" xmltv_id="BloombergTV.us@MiddleEast" site_id="entertainment#22">22</channel>
<channel site="bein.com" lang="en" xmltv_id="CartoonitoMENA.uk" site_id="entertainment#38">38</channel>
<channel site="bein.com" lang="en" xmltv_id="CartoonNetworkArabic.ae" site_id="entertainment#33">33</channel>
<channel site="bein.com" lang="en" xmltv_id="CartoonNetwork.in@Hindi" site_id="entertainment#34">34</channel>
<channel site="bein.com" lang="en" xmltv_id="CartoonNetworkMENA.uk" site_id="entertainment#32">32</channel>
<channel site="bein.com" lang="en" xmltv_id="CBeebiesMiddleEast.uk" site_id="entertainment#36">36</channel>
<channel site="bein.com" lang="en" xmltv_id="ClubMTVEurope.uk" site_id="entertainment#21">21</channel>
<channel site="bein.com" lang="en" xmltv_id="CNNArabic.ae" site_id="entertainment#26">26</channel>
<channel site="bein.com" lang="en" xmltv_id="DiscoveryChannelMiddleEastAfrica.us" site_id="entertainment#28">28</channel>
<channel site="bein.com" lang="en" xmltv_id="DreamWorksChannelMiddleEast.us" site_id="entertainment#37">37</channel>
<channel site="bein.com" lang="en" xmltv_id="EuronewsEnglish.fr" site_id="entertainment#27">27</channel>
<channel site="bein.com" lang="en" xmltv_id="Fatafeat.ae" site_id="entertainment#17">17</channel>
<channel site="bein.com" lang="en" xmltv_id="FoodNetworkEMEA.us" site_id="entertainment#14">14</channel>
<channel site="bein.com" lang="en" xmltv_id="FoxActionMoviesMENA.hk" site_id="entertainment#6">6</channel>
<channel site="bein.com" lang="en" xmltv_id="FoxArabia.ae" site_id="entertainment#13">13</channel>
<channel site="bein.com" lang="en" xmltv_id="FoxLifeMiddleEast.ae" site_id="entertainment#18">18</channel>
<channel site="bein.com" lang="en" xmltv_id="FoxMoviesMiddleEast.us" site_id="entertainment#5">5</channel>
<channel site="bein.com" lang="en" xmltv_id="HGTVArabia.us" site_id="entertainment#15">15</channel>
<channel site="bein.com" lang="en" xmltv_id="JeemTV.qa" site_id="entertainment#30">30</channel>
<channel site="bein.com" lang="en" xmltv_id="MTV80s.uk" site_id="entertainment#19">19</channel>
<channel site="bein.com" lang="en" xmltv_id="MTV90s.uk" site_id="entertainment#20">20</channel>
<channel site="bein.com" lang="en" xmltv_id="NationalGeographicMiddleEast.uk" site_id="entertainment#23">23</channel>
<channel site="bein.com" lang="en" xmltv_id="NationalGeographicWildMiddleEast.uk" site_id="entertainment#24">24</channel>
<channel site="bein.com" lang="en" xmltv_id="StarMoviesMiddleEast.ae" site_id="entertainment#7">7</channel>
<channel site="bein.com" lang="en" xmltv_id="StarWorldMiddleEast.ae" site_id="entertainment#16">16</channel>
<channel site="bein.com" lang="en" xmltv_id="TravelChannelEMEA.uk" site_id="entertainment#12">12</channel>
</channels>
<?xml version="1.0" encoding="UTF-8"?>
<channels>
<channel site="bein.com" lang="en" xmltv_id="AlkassOne.qa" site_id="sports#33">33</channel>
<channel site="bein.com" lang="en" xmltv_id="AlkassTwo.qa" site_id="sports#34">34</channel>
<channel site="bein.com" lang="en" xmltv_id="Baraem.qa" site_id="entertainment#31">31</channel>
<channel site="bein.com" lang="en" xmltv_id="BBCEarth.uk@MiddleEast" site_id="entertainment#25">25</channel>
<channel site="bein.com" lang="en" xmltv_id="beIN4K.qa" site_id="sports#15">15</channel>
<channel site="bein.com" lang="en" xmltv_id="beINDrama1.qa" site_id="entertainment#10">10</channel>
<channel site="bein.com" lang="en" xmltv_id="beINGourmet.qa" site_id="entertainment#11">11</channel>
<channel site="bein.com" lang="en" xmltv_id="beINMovies1Premiere.qa" site_id="entertainment#1">1</channel>
<channel site="bein.com" lang="en" xmltv_id="beINMovies2Action.qa" site_id="entertainment#2">2</channel>
<channel site="bein.com" lang="en" xmltv_id="beINMovies3Drama.qa" site_id="entertainment#3">3</channel>
<channel site="bein.com" lang="en" xmltv_id="beINMovies4Family.qa" site_id="entertainment#4">4</channel>
<channel site="bein.com" lang="en" xmltv_id="beINSeries1.qa" site_id="entertainment#8">8</channel>
<channel site="bein.com" lang="en" xmltv_id="beINSeries2.qa" site_id="entertainment#9">9</channel>
<channel site="bein.com" lang="en" xmltv_id="beINSports1.qa" site_id="sports#3">3</channel>
<channel site="bein.com" lang="en" xmltv_id="beINSports2.qa" site_id="sports#4">4</channel>
<channel site="bein.com" lang="en" xmltv_id="beINSports3.qa" site_id="sports#5">5</channel>
<channel site="bein.com" lang="en" xmltv_id="beINSports4.qa" site_id="sports#6">6</channel>
<channel site="bein.com" lang="en" xmltv_id="beINSports5.qa" site_id="sports#7">7</channel>
<channel site="bein.com" lang="en" xmltv_id="beINSports6.qa" site_id="sports#8">8</channel>
<channel site="bein.com" lang="en" xmltv_id="beINSports7.qa" site_id="sports#9">9</channel>
<channel site="bein.com" lang="en" xmltv_id="beINSports.qa" site_id="sports#2">2</channel>
<channel site="bein.com" lang="en" xmltv_id="beINSportsAFC1.qa" site_id="sports#17">17</channel>
<channel site="bein.com" lang="en" xmltv_id="beINSportsAFC2.qa" site_id="sports#18">18</channel>
<channel site="bein.com" lang="en" xmltv_id="beINSportsAFC3.qa" site_id="sports#19">19</channel>
<channel site="bein.com" lang="en" xmltv_id="beINSportsAFC.qa" site_id="sports#16">16</channel>
<channel site="bein.com" lang="en" xmltv_id="beINSportsEnglish1.qa" site_id="sports#20">20</channel>
<channel site="bein.com" lang="en" xmltv_id="beINSportsEnglish2.qa" site_id="sports#21">21</channel>
<channel site="bein.com" lang="en" xmltv_id="beINSportsEnglish3.qa" site_id="sports#22">22</channel>
<channel site="bein.com" lang="en" xmltv_id="beINSportsFrench1.qa" site_id="sports#24">24</channel>
<channel site="bein.com" lang="en" xmltv_id="beINSportsFrench2.qa" site_id="sports#25">25</channel>
<channel site="bein.com" lang="en" xmltv_id="beINSportsFrench3.qa" site_id="sports#26">26</channel>
<channel site="bein.com" lang="en" xmltv_id="beINSportsMax1.qa" site_id="sports#27">27</channel>
<channel site="bein.com" lang="en" xmltv_id="beINSportsMax2.qa" site_id="sports#28">28</channel>
<channel site="bein.com" lang="en" xmltv_id="beINSportsMax3.qa" site_id="sports#29">29</channel>
<channel site="bein.com" lang="en" xmltv_id="beINSportsMax4.qa" site_id="sports#30">30</channel>
<channel site="bein.com" lang="en" xmltv_id="beINSportsMax5.qa" site_id="sports#31">31</channel>
<channel site="bein.com" lang="en" xmltv_id="beINSportsMax6.qa" site_id="sports#32">32</channel>
<channel site="bein.com" lang="en" xmltv_id="beINSportsNBA.qa" site_id="sports#23">23</channel>
<channel site="bein.com" lang="en" xmltv_id="beINSportsNews.qa" site_id="sports#1">1</channel>
<channel site="bein.com" lang="en" xmltv_id="beINSportsPremium1.qa" site_id="sports#10">10</channel>
<channel site="bein.com" lang="en" xmltv_id="beINSportsPremium2.qa" site_id="sports#11">11</channel>
<channel site="bein.com" lang="en" xmltv_id="beINSportsPremium3.qa" site_id="sports#12">12</channel>
<channel site="bein.com" lang="en" xmltv_id="beINSportsXtra1.qa" site_id="sports#13">13</channel>
<channel site="bein.com" lang="en" xmltv_id="beINSportsXtra2.qa" site_id="sports#14">14</channel>
<channel site="bein.com" lang="en" xmltv_id="BeJunior.qa" site_id="entertainment#29">29</channel>
<channel site="bein.com" lang="en" xmltv_id="BloombergTV.us@MiddleEast" site_id="entertainment#22">22</channel>
<channel site="bein.com" lang="en" xmltv_id="CartoonNetworkArabic.ae" site_id="entertainment#33">33</channel>
<channel site="bein.com" lang="en" xmltv_id="CartoonNetworkMENA.uk" site_id="entertainment#32">32</channel>
<channel site="bein.com" lang="en" xmltv_id="ClubMTVEurope.uk" site_id="entertainment#21">21</channel>
<channel site="bein.com" lang="en" xmltv_id="CNNArabic.ae" site_id="entertainment#26">26</channel>
<channel site="bein.com" lang="en" xmltv_id="DiscoveryChannelMiddleEastAfrica.us" site_id="entertainment#28">28</channel>
<channel site="bein.com" lang="en" xmltv_id="EuronewsEnglish.fr" site_id="entertainment#27">27</channel>
<channel site="bein.com" lang="en" xmltv_id="Fatafeat.ae" site_id="entertainment#17">17</channel>
<channel site="bein.com" lang="en" xmltv_id="FoodNetworkEMEA.us" site_id="entertainment#14">14</channel>
<channel site="bein.com" lang="en" xmltv_id="FoxActionMoviesMENA.hk" site_id="entertainment#6">6</channel>
<channel site="bein.com" lang="en" xmltv_id="FoxArabia.ae" site_id="entertainment#13">13</channel>
<channel site="bein.com" lang="en" xmltv_id="FoxLifeMiddleEast.ae" site_id="entertainment#18">18</channel>
<channel site="bein.com" lang="en" xmltv_id="FoxMoviesMiddleEast.us" site_id="entertainment#5">5</channel>
<channel site="bein.com" lang="en" xmltv_id="HGTVArabia.us" site_id="entertainment#15">15</channel>
<channel site="bein.com" lang="en" xmltv_id="JeemTV.qa" site_id="entertainment#30">30</channel>
<channel site="bein.com" lang="en" xmltv_id="MTV80s.uk" site_id="entertainment#19">19</channel>
<channel site="bein.com" lang="en" xmltv_id="MTV90s.uk" site_id="entertainment#20">20</channel>
<channel site="bein.com" lang="en" xmltv_id="NationalGeographicMiddleEast.uk" site_id="entertainment#23">23</channel>
<channel site="bein.com" lang="en" xmltv_id="NationalGeographicWildMiddleEast.uk" site_id="entertainment#24">24</channel>
<channel site="bein.com" lang="en" xmltv_id="StarMoviesMiddleEast.ae" site_id="entertainment#7">7</channel>
<channel site="bein.com" lang="en" xmltv_id="StarWorldMiddleEast.ae" site_id="entertainment#16">16</channel>
<channel site="bein.com" lang="en" xmltv_id="TravelChannelEMEA.uk" site_id="entertainment#12">12</channel>
</channels>

View File

@@ -1,39 +1,39 @@
# bein.com
https://www.bein.com/ar/%D8%AC%D8%AF%D9%88%D9%84-%D8%A7%D9%84%D8%A8%D8%AB/ (Arabic)
https://www.bein.com/en/tv-guide/ (English)
### Download the guide
Arabic:
```sh
npm run grab --- --site=bein.com --lang=ar
```
English:
```sh
npm run grab --- --site=bein.com --lang=en
```
### Update channel list
Arabic:
```sh
npm run channels:parse --- --config=./sites/bein.com/bein.com.config.js --output=./sites/bein.com/bein.com_ar.channels.xml --set=lang:ar
```
English:
```sh
npm run channels:parse --- --config=./sites/bein.com/bein.com.config.js --output=./sites/bein.com/bein.com_en.channels.xml --set=lang:en
```
### Test
```sh
npm test --- bein.com
```
# bein.com
https://www.bein.com/ar/%D8%AC%D8%AF%D9%88%D9%84-%D8%A7%D9%84%D8%A8%D8%AB/ (Arabic)
https://www.bein.com/en/tv-guide/ (English)
### Download the guide
Arabic:
```sh
npm run grab --- --site=bein.com --lang=ar
```
English:
```sh
npm run grab --- --site=bein.com --lang=en
```
### Update channel list
Arabic:
```sh
npm run channels:parse --- --config=./sites/bein.com/bein.com.config.js --output=./sites/bein.com/bein.com_ar.channels.xml --set=lang:ar
```
English:
```sh
npm run channels:parse --- --config=./sites/bein.com/bein.com.config.js --output=./sites/bein.com/bein.com_en.channels.xml --set=lang:en
```
### Test
```sh
npm test --- bein.com
```

View File

@@ -1,297 +0,0 @@
<script>
currenthour=10;
</script>
<div class=containertop>
<div class='row no-gutter'>
<div class='col-xs-12 col-sm-12 col-md-12 col-lg-12'>
<table width=100% border=0 class=day_table><tr><script language=javascript>lastday='day1';</script><td><div id=day1t1 style=width:100% class=day_item_selected><a href=javascript:loaders('utctime_hk.php?cdate=2022-05-10&offset=0&mins=00&category=sports',2)>Tue</a></div><div id=day1t2 style=width:100% class=day_item1_selected><a href=javascript:loaders('utctime_hk.php?cdate=2022-05-10&offset=0&mins=00&category=sports',2)>10</a></div></td><td><span id=day2t1 style=width:100% class=day_item><a href=javascript:selectday('day2');loaders('utctime_hk.php?cdate=2022-05-11&offset=0&mins=00&category=sports',2)>Wed</a></span><span id=day2t2 style=width:100% class=day_item1><a href=javascript:selectday('day2');loaders('utctime_hk.php?cdate=2022-05-11&offset=0&mins=00&category=sports',2)>11</a></div></td><td><span id=day3t1 style=width:100% class=day_item><a href=javascript:selectday('day3');loaders('utctime_hk.php?cdate=2022-05-12&offset=0&mins=00&category=sports',2)>Thu</a></span><span id=day3t2 style=width:100% class=day_item1><a href=javascript:selectday('day3');loaders('utctime_hk.php?cdate=2022-05-12&offset=0&mins=00&category=sports',2)>12</a></div></td><td><span id=day4t1 style=width:100% class=day_item><a href=javascript:selectday('day4');loaders('utctime_hk.php?cdate=2022-05-13&offset=0&mins=00&category=sports',2)>Fri</a></span><span id=day4t2 style=width:100% class=day_item1><a href=javascript:selectday('day4');loaders('utctime_hk.php?cdate=2022-05-13&offset=0&mins=00&category=sports',2)>13</a></div></td><td><span id=day5t1 style=width:100% class=day_item><a href=javascript:selectday('day5');loaders('utctime_hk.php?cdate=2022-05-14&offset=0&mins=00&category=sports',2)>Sat</a></span><span id=day5t2 style=width:100% class=day_item1><a href=javascript:selectday('day5');loaders('utctime_hk.php?cdate=2022-05-14&offset=0&mins=00&category=sports',2)>14</a></div></td><td><span id=day6t1 style=width:100% class=day_item><a href=javascript:selectday('day6');loaders('utctime_hk.php?cdate=2022-05-15&offset=0&mins=00&category=sports',2)>Sun</a></span><span id=day6t2 style=width:100% class=day_item1><a href=javascript:selectday('day6');loaders('utctime_hk.php?cdate=2022-05-15&offset=0&mins=00&category=sports',2)>15</a></div></td><td><span id=day7t1 style=width:100% class=day_item><a href=javascript:selectday('day7');loaders('utctime_hk.php?cdate=2022-05-16&offset=0&mins=00&category=sports',2)>Mon</a></span><span id=day7t2 style=width:100% class=day_item1><a href=javascript:selectday('day7');loaders('utctime_hk.php?cdate=2022-05-16&offset=0&mins=00&category=sports',2)>16</a></div></td></table></div>
</div><div class='row no-gutter'>
<div class='col-xs-12 col-sm-12 col-md-12 col-lg-12'>
<div style='background-color:#d1d0de;margin:0px auto;text-align:center;display:flex;width:100%'><div id=left style=width:25px;background-color:red;height:50px;padding-top:13px;background-color:#d1d0de;><img src=ico/left.png onclick=ptime()></div><div id='slider_timer' class='slider_time'>
<ul id='timer'></ul></div><div id=left style=width:25px;background-color:red;height:50px;padding-top:13px;background-color:#d1d0de><img src=ico/right.png onclick=ntime()></div></div>
</div>
</div><div class='row no-gutter' style='height:15px'></div>
<div class='row no-gutter'>
<div class='col-xs-12 col-sm-12 col-md-12 col-lg-12'>
<div id='loader_inner' style='display:none;margin:0 auto;width:100%;margin-top:5px;margin-bottom:5px;text-align:center'>
<div style='text-align:center;margin:auto 0'><img align=center src='images/ajax-loader.gif'></div>
</div>
</div>
</div>
</div><div class='container'><div class='row no-gutter' >
<div style='display:none;min-height:1000px' class='col-xs-12 col-sm-12 col-md-12 col-lg-12' id='category_div'>
</div>
</div>
<div id='epg_div'><div class='row no-gutter' id=channels_1>
<div class='col-xs-3 col-sm-2 col-md-2 col-lg-1'>
<div style='width:100%;text-align:center;'>
<div class=channel>
<div class=centered>
<img align=center style='width:60%;height:auto' src='hk_sports/BS1.svg'>
</div>
</div>
</div>
</div>
<div class='col-xs-8 col-sm-9 col-md-9 col-lg-10'>
<div id='slider_1' class=slider><ul id='ul_slider_1'>
<li id='slider_1_item1' data-id='slider_1_item1' data-index='1' data-start='0' data-start-m='0' data-end='00 data-end-m='10' data-img='hk_sports/BS1.svg' data-desc='' parent='slider_1' category='Serie A 2021/22' live=''invalid=false>
<div class=onecontent>
<p class=title>Lazio vs Sampdoria</p>
<p class=format>Serie A 2021/22</p>
</div>
<div class=timer><table border=0 cellspacing=0 cellpadding=0 width=100%><tr><td style=width:80%><p class=time>22:20&nbsp;-&nbsp;00:10</td><td style=width:20% rowspan=2 valign=top class=showornot><img src='images/transparent.png' width=80 height=27 ></p></td></tr><tr><td><div class='progress'><div class='progress-bar progress-bar-custom' role='progressbar' aria-valuenow='0' aria-valuemin='0' aria-valuemax='100'></div></div></tr></table> </li>
<li id='slider_1_item2' data-id='slider_1_item2' data-index='2' data-start='00' data-start-m='10' data-end='02' data-end-m='00' data-img='hk_sports/BS1.svg' data-desc='' parent='slider_1' category='Super Lig 2021/22' live=''invalid=false>
<div class=onecontent>
<p class=title>Alanyaspor vs Konyaspor</p>
<p class=format>Super Lig 2021/22</p>
</div>
<div class=timer><table border=0 cellspacing=0 cellpadding=0 width=100%><tr><td style=width:80%><p class=time>00:10&nbsp;-&nbsp;02:00</td><td style=width:20% rowspan=2 valign=top class=showornot><img src='images/transparent.png' width=80 height=27 ></p></td></tr><tr><td><div class='progress'><div class='progress-bar progress-bar-custom' role='progressbar' aria-valuenow='0' aria-valuemin='0' aria-valuemax='100'></div></div></tr></table> </li>
<li id='slider_1_item3' data-id='slider_1_item3' data-index='3' data-start='02' data-start-m='00' data-end='04' data-end-m='00' data-img='hk_sports/BS1.svg' data-desc='' parent='slider_1' category='Liverpool TV 2021/22' live=''invalid=false>
<div class=onecontent>
<p class=title>Liverpool vs Tottenham</p>
<p class=format>Liverpool TV 2021/22</p>
</div>
<div class=timer><table border=0 cellspacing=0 cellpadding=0 width=100%><tr><td style=width:80%><p class=time>02:00&nbsp;-&nbsp;04:00</td><td style=width:20% rowspan=2 valign=top class=showornot><img src='images/transparent.png' width=80 height=27 ></p></td></tr><tr><td><div class='progress'><div class='progress-bar progress-bar-custom' role='progressbar' aria-valuenow='0' aria-valuemin='0' aria-valuemax='100'></div></div></tr></table> </li>
<li id='slider_1_item4' data-id='slider_1_item4' data-index='4' data-start='04' data-start-m='00' data-end='04' data-end-m='30' data-img='hk_sports/BS1.svg' data-desc='' parent='slider_1' category='LFC Trending 2021/22' live=''invalid=false>
<div class=onecontent>
<p class=title>Episode Number 41</p>
<p class=format>LFC Trending 2021/22</p>
</div>
<div class=timer><table border=0 cellspacing=0 cellpadding=0 width=100%><tr><td style=width:80%><p class=time>04:00&nbsp;-&nbsp;04:30</td><td style=width:20% rowspan=2 valign=top class=showornot><img src='images/transparent.png' width=80 height=27 ></p></td></tr><tr><td><div class='progress'><div class='progress-bar progress-bar-custom' role='progressbar' aria-valuenow='0' aria-valuemin='0' aria-valuemax='100'></div></div></tr></table> </li>
<li id='slider_1_item5' data-id='slider_1_item5' data-index='5' data-start='04' data-start-m='30' data-end='05' data-end-m='00' data-img='hk_sports/BS1.svg' data-desc='' parent='slider_1' category='LFC TV Specials 2021/22' live=''invalid=false>
<div class=onecontent>
<p class=title>Villarreal vs Liverpool</p>
<p class=format>LFC TV Specials 2021/22</p>
</div>
<div class=timer><table border=0 cellspacing=0 cellpadding=0 width=100%><tr><td style=width:80%><p class=time>04:30&nbsp;-&nbsp;05:00</td><td style=width:20% rowspan=2 valign=top class=showornot><img src='images/transparent.png' width=80 height=27 ></p></td></tr><tr><td><div class='progress'><div class='progress-bar progress-bar-custom' role='progressbar' aria-valuenow='0' aria-valuemin='0' aria-valuemax='100'></div></div></tr></table> </li>
<li id='slider_1_item6' data-id='slider_1_item6' data-index='6' data-start='05' data-start-m='00' data-end='06' data-end-m='50' data-img='hk_sports/BS1.svg' data-desc='' parent='slider_1' category='Serie A 2021/22' live=''invalid=false>
<div class=onecontent>
<p class=title>Fiorentina vs Roma</p>
<p class=format>Serie A 2021/22</p>
</div>
<div class=timer><table border=0 cellspacing=0 cellpadding=0 width=100%><tr><td style=width:80%><p class=time>05:00&nbsp;-&nbsp;06:50</td><td style=width:20% rowspan=2 valign=top class=showornot><img src='images/transparent.png' width=80 height=27 ></p></td></tr><tr><td><div class='progress'><div class='progress-bar progress-bar-custom' role='progressbar' aria-valuenow='0' aria-valuemin='0' aria-valuemax='100'></div></div></tr></table> </li>
<li id='slider_1_item7' data-id='slider_1_item7' data-index='7' data-start='06' data-start-m='50' data-end='07' data-end-m='20' data-img='hk_sports/BS1.svg' data-desc='' parent='slider_1' category='International Tour of Hellas 2022' live=''invalid=false>
<div class=onecontent>
<p class=title>Day 5</p>
<p class=format>International Tour of Hellas 2022</p>
</div>
<div class=timer><table border=0 cellspacing=0 cellpadding=0 width=100%><tr><td style=width:80%><p class=time>06:50&nbsp;-&nbsp;07:20</td><td style=width:20% rowspan=2 valign=top class=showornot><img src='images/transparent.png' width=80 height=27 ></p></td></tr><tr><td><div class='progress'><div class='progress-bar progress-bar-custom' role='progressbar' aria-valuenow='0' aria-valuemin='0' aria-valuemax='100'></div></div></tr></table> </li>
<li id='slider_1_item8' data-id='slider_1_item8' data-index='8' data-start='07' data-start-m='20' data-end='08' data-end-m='20' data-img='hk_sports/BS1.svg' data-desc='' parent='slider_1' category='Ligue 1 Highlights 2021/22' live=''invalid=false>
<div class=onecontent>
<p class=title>MD 36</p>
<p class=format>Ligue 1 Highlights 2021/22</p>
</div>
<div class=timer><table border=0 cellspacing=0 cellpadding=0 width=100%><tr><td style=width:80%><p class=time>07:20&nbsp;-&nbsp;08:20</td><td style=width:20% rowspan=2 valign=top class=showornot><img src='images/transparent.png' width=80 height=27 ></p></td></tr><tr><td><div class='progress'><div class='progress-bar progress-bar-custom' role='progressbar' aria-valuenow='0' aria-valuemin='0' aria-valuemax='100'></div></div></tr></table> </li>
<li id='slider_1_item9' data-id='slider_1_item9' data-index='9' data-start='08' data-start-m='20' data-end='10' data-end-m='10' data-img='hk_sports/BS1.svg' data-desc='' parent='slider_1' category='TotalEnergies CAF Champions League 2021/22' live=''invalid=false>
<div class=onecontent>
<p class=title>Petro de Luanda vs WAC</p>
<p class=format>TotalEnergies CAF Champions League 2021/22</p>
</div>
<div class=timer><table border=0 cellspacing=0 cellpadding=0 width=100%><tr><td style=width:80%><p class=time>08:20&nbsp;-&nbsp;10:10</td><td style=width:20% rowspan=2 valign=top class=showornot><img src='images/transparent.png' width=80 height=27 ></p></td></tr><tr><td><div class='progress'><div class='progress-bar progress-bar-custom' role='progressbar' aria-valuenow='0' aria-valuemin='0' aria-valuemax='100'></div></div></tr></table> </li>
<li id='slider_1_item10' data-id='slider_1_item10' data-index='10' data-start='10' data-start-m='10' data-end='12' data-end-m='00' data-img='hk_sports/BS1.svg' data-desc='' parent='slider_1' category='Serie A 2021/22' live=''invalid=false>
<div class=onecontent>
<p class=title>Genoa vs Juventus</p>
<p class=format>Serie A 2021/22</p>
</div>
<div class=timer><table border=0 cellspacing=0 cellpadding=0 width=100%><tr><td style=width:80%><p class=time>10:10&nbsp;-&nbsp;12:00</td><td style=width:20% rowspan=2 valign=top class=showornot><img src='images/transparent.png' width=80 height=27 ><p></td></tr><tr><td ><div class='progress' currents=true><div class='progress-bar progress-bar-custom' role='progressbar' aria-valuenow='24' aria-valuemin='0' aria-valuemax='100' style='width:24.545454545455%'></div></div></tr></table> </li>
<li id='slider_1_item11' data-id='slider_1_item11' data-index='11' data-start='12' data-start-m='00' data-end='12' data-end-m='30' data-img='hk_sports/BS1.svg' data-desc='' parent='slider_1' category='Chelsea TV: Premier League Years 2021/22' live=''invalid=false>
<div class=onecontent>
<p class=title>Premier League Years 92/93 93/94</p>
<p class=format>Chelsea TV: Premier League Years 2021/22</p>
</div>
<div class=timer><table border=0 cellspacing=0 cellpadding=0 width=100%><tr><td style=width:80%><p class=time>12:00&nbsp;-&nbsp;12:30</td><td style=width:20% rowspan=2 valign=top class=showornot><img src='images/transparent.png' width=80 height=27 ></p></td></tr><tr><td><div class='progress'><div class='progress-bar progress-bar-custom' role='progressbar' aria-valuenow='0' aria-valuemin='0' aria-valuemax='100'></div></div></tr></table> </li>
<li id='slider_1_item12' data-id='slider_1_item12' data-index='12' data-start='12' data-start-m='30' data-end='13' data-end-m='00' data-img='hk_sports/BS1.svg' data-desc='' parent='slider_1' category='Inside Chelsea 2021/22' live=''invalid=false>
<div class=onecontent>
<p class=title>Episode Number 38</p>
<p class=format>Inside Chelsea 2021/22</p>
</div>
<div class=timer><table border=0 cellspacing=0 cellpadding=0 width=100%><tr><td style=width:80%><p class=time>12:30&nbsp;-&nbsp;13:00</td><td style=width:20% rowspan=2 valign=top class=showornot><img src='images/transparent.png' width=80 height=27 ></p></td></tr><tr><td><div class='progress'><div class='progress-bar progress-bar-custom' role='progressbar' aria-valuenow='0' aria-valuemin='0' aria-valuemax='100'></div></div></tr></table> </li>
<li id='slider_1_item13' data-id='slider_1_item13' data-index='13' data-start='13' data-start-m='00' data-end='15' data-end-m='00' data-img='hk_sports/BS1.svg' data-desc='' parent='slider_1' category='Chelsea TV 2021/22' live=''invalid=false>
<div class=onecontent>
<p class=title>Chelsea vs Wolves</p>
<p class=format>Chelsea TV 2021/22</p>
</div>
<div class=timer><table border=0 cellspacing=0 cellpadding=0 width=100%><tr><td style=width:80%><p class=time>13:00&nbsp;-&nbsp;15:00</td><td style=width:20% rowspan=2 valign=top class=showornot><img src='images/transparent.png' width=80 height=27 ></p></td></tr><tr><td><div class='progress'><div class='progress-bar progress-bar-custom' role='progressbar' aria-valuenow='0' aria-valuemin='0' aria-valuemax='100'></div></div></tr></table> </li>
<li id='slider_1_item14' data-id='slider_1_item14' data-index='14' data-start='15' data-start-m='00' data-end='16' data-end-m='50' data-img='hk_sports/BS1.svg' data-desc='' parent='slider_1' category='Serie A 2021/22' live=''invalid=false>
<div class=onecontent>
<p class=title>Fiorentina vs Roma</p>
<p class=format>Serie A 2021/22</p>
</div>
<div class=timer><table border=0 cellspacing=0 cellpadding=0 width=100%><tr><td style=width:80%><p class=time>15:00&nbsp;-&nbsp;16:50</td><td style=width:20% rowspan=2 valign=top class=showornot><img src='images/transparent.png' width=80 height=27 ></p></td></tr><tr><td><div class='progress'><div class='progress-bar progress-bar-custom' role='progressbar' aria-valuenow='0' aria-valuemin='0' aria-valuemax='100'></div></div></tr></table> </li>
<li id='slider_1_item15' data-id='slider_1_item15' data-index='15' data-start='16' data-start-m='50' data-end='18' data-end-m='45' data-img='hk_sports/BS1.svg' data-desc='' parent='slider_1' category='Coupe de France 2021/22' live=''invalid=false>
<div class=onecontent>
<p class=title>Nice vs Nantes</p>
<p class=format>Coupe de France 2021/22</p>
</div>
<div class=timer><table border=0 cellspacing=0 cellpadding=0 width=100%><tr><td style=width:80%><p class=time>16:50&nbsp;-&nbsp;18:45</td><td style=width:20% rowspan=2 valign=top class=showornot><img src='images/transparent.png' width=80 height=27 ></p></td></tr><tr><td><div class='progress'><div class='progress-bar progress-bar-custom' role='progressbar' aria-valuenow='0' aria-valuemin='0' aria-valuemax='100'></div></div></tr></table> </li>
<li id='slider_1_item16' data-id='slider_1_item16' data-index='16' data-start='18' data-start-m='45' data-end='20' data-end-m='35' data-img='hk_sports/BS1.svg' data-desc='' parent='slider_1' category='TotalEnergies CAF Confederation Cup 2021/22' live=''invalid=false>
<div class=onecontent>
<p class=title>TP Mazembe vs RS Berkane</p>
<p class=format>TotalEnergies CAF Confederation Cup 2021/22</p>
</div>
<div class=timer><table border=0 cellspacing=0 cellpadding=0 width=100%><tr><td style=width:80%><p class=time>18:45&nbsp;-&nbsp;20:35</td><td style=width:20% rowspan=2 valign=top class=showornot><img src='images/transparent.png' width=80 height=27 ></p></td></tr><tr><td><div class='progress'><div class='progress-bar progress-bar-custom' role='progressbar' aria-valuenow='0' aria-valuemin='0' aria-valuemax='100'></div></div></tr></table> </li>
<li id='slider_1_item17' data-id='slider_1_item17' data-index='17' data-start='20' data-start-m='35' data-end='22' data-end-m='20' data-img='hk_sports/BS1.svg' data-desc='' parent='slider_1' category='Ligue 1 2021/22' live=''invalid=false>
<div class=onecontent>
<p class=title>Angers vs Bordeaux</p>
<p class=format>Ligue 1 2021/22</p>
</div>
<div class=timer><table border=0 cellspacing=0 cellpadding=0 width=100%><tr><td style=width:80%><p class=time>20:35&nbsp;-&nbsp;22:20</td><td style=width:20% rowspan=2 valign=top class=showornot><img src='images/transparent.png' width=80 height=27 ></p></td></tr><tr><td><div class='progress'><div class='progress-bar progress-bar-custom' role='progressbar' aria-valuenow='0' aria-valuemin='0' aria-valuemax='100'></div></div></tr></table> </li>
<li id='slider_1_item18' data-id='slider_1_item18' data-index='18' data-start='22' data-start-m='20' data-end='00' data-end-m='10' data-img='hk_sports/BS1.svg' data-desc='' parent='slider_1' category='Serie A 2021/22' live=''invalid=false>
<div class=onecontent>
<p class=title>Genoa vs Juventus</p>
<p class=format>Serie A 2021/22</p>
</div>
<div class=timer><table border=0 cellspacing=0 cellpadding=0 width=100%><tr><td style=width:80%><p class=time>22:20&nbsp;-&nbsp;00:10</td><td style=width:20% rowspan=2 valign=top class=showornot><img src='images/transparent.png' width=80 height=27 ></p></td></tr><tr><td><div class='progress'><div class='progress-bar progress-bar-custom' role='progressbar' aria-valuenow='0' aria-valuemin='0' aria-valuemax='100'></div></div></tr></table> </li>
<div><ul><li class=item_normal></li><li class=item_normal></li></ul> </ul></div>
</div>
<div class='col-xs-1 nextarrow col-sm-1 nextarrow col-md-1 nextarrow col-lg-1 nextarrow'>
<div class='centered'>
<img align=center width=15 height=15 src=images/nextarrow_en.svg style=cursor:pointer onclick=action('slider_1')>
</div>
</div>
</div>
<div class='row no-gutter' style='height:15px' id='ruler_channels_1'></div>
<div class='row no-gutter' id=channels_2>
<div class='col-xs-3 col-sm-2 col-md-2 col-lg-1'>
<div style='width:100%;text-align:center;'>
<div class=channel>
<div class=centered>
<img align=center style='width:60%;height:auto' src='hk_sports/BS2.svg'>
</div>
</div>
</div>
</div>
<div class='col-xs-8 col-sm-9 col-md-9 col-lg-10'>
<div id='slider_2' class=slider><ul id='ul_slider_2'>
<li id='slider_2_item1' data-id='slider_2_item1' data-index='1' data-start='0' data-start-m='0' data-end='00 data-end-m='20' data-img='hk_sports/BS2.svg' data-desc='' parent='slider_2' category='Ligue 1 2021/22' live=''invalid=false>
<div class=onecontent>
<p class=title>Lorient vs Marseille</p>
<p class=format>Ligue 1 2021/22</p>
</div>
<div class=timer><table border=0 cellspacing=0 cellpadding=0 width=100%><tr><td style=width:80%><p class=time>22:30&nbsp;-&nbsp;00:20</td><td style=width:20% rowspan=2 valign=top class=showornot><img src='images/transparent.png' width=80 height=27 ></p></td></tr><tr><td><div class='progress'><div class='progress-bar progress-bar-custom' role='progressbar' aria-valuenow='0' aria-valuemin='0' aria-valuemax='100'></div></div></tr></table> </li>
<li id='slider_2_item2' data-id='slider_2_item2' data-index='2' data-start='00' data-start-m='20' data-end='02' data-end-m='10' data-img='hk_sports/BS2.svg' data-desc='' parent='slider_2' category='Major League Soccer 2022' live=''invalid=false>
<div class=onecontent>
<p class=title>LAFC vs Philadelphia</p>
<p class=format>Major League Soccer 2022</p>
</div>
<div class=timer><table border=0 cellspacing=0 cellpadding=0 width=100%><tr><td style=width:80%><p class=time>00:20&nbsp;-&nbsp;02:10</td><td style=width:20% rowspan=2 valign=top class=showornot><img src='images/transparent.png' width=80 height=27 ></p></td></tr><tr><td><div class='progress'><div class='progress-bar progress-bar-custom' role='progressbar' aria-valuenow='0' aria-valuemin='0' aria-valuemax='100'></div></div></tr></table> </li>
<li id='slider_2_item3' data-id='slider_2_item3' data-index='3' data-start='02' data-start-m='10' data-end='04' data-end-m='00' data-img='hk_sports/BS2.svg' data-desc='' parent='slider_2' category='Major League Soccer 2022' live=''invalid=false>
<div class=onecontent>
<p class=title>Dallas vs Seattle</p>
<p class=format>Major League Soccer 2022</p>
</div>
<div class=timer><table border=0 cellspacing=0 cellpadding=0 width=100%><tr><td style=width:80%><p class=time>02:10&nbsp;-&nbsp;04:00</td><td style=width:20% rowspan=2 valign=top class=showornot><img src='images/transparent.png' width=80 height=27 ></p></td></tr><tr><td><div class='progress'><div class='progress-bar progress-bar-custom' role='progressbar' aria-valuenow='0' aria-valuemin='0' aria-valuemax='100'></div></div></tr></table> </li>
<li id='slider_2_item4' data-id='slider_2_item4' data-index='4' data-start='04' data-start-m='00' data-end='05' data-end-m='00' data-img='hk_sports/BS2.svg' data-desc='' parent='slider_2' category='Supercars Championship Highlights 2022' live=''invalid=false>
<div class=onecontent>
<p class=title>Bunnings Trade Perth Supernight Sat</p>
<p class=format>Supercars Championship Highlights 2022</p>
</div>
<div class=timer><table border=0 cellspacing=0 cellpadding=0 width=100%><tr><td style=width:80%><p class=time>04:00&nbsp;-&nbsp;05:00</td><td style=width:20% rowspan=2 valign=top class=showornot><img src='images/transparent.png' width=80 height=27 ></p></td></tr><tr><td><div class='progress'><div class='progress-bar progress-bar-custom' role='progressbar' aria-valuenow='0' aria-valuemin='0' aria-valuemax='100'></div></div></tr></table> </li>
<li id='slider_2_item5' data-id='slider_2_item5' data-index='5' data-start='05' data-start-m='00' data-end='06' data-end-m='50' data-img='hk_sports/BS2.svg' data-desc='' parent='slider_2' category='Challenge Cup 2021/22' live=''invalid=false>
<div class=onecontent>
<p class=title>Edinburgh vs Wasps</p>
<p class=format>Challenge Cup 2021/22</p>
</div>
<div class=timer><table border=0 cellspacing=0 cellpadding=0 width=100%><tr><td style=width:80%><p class=time>05:00&nbsp;-&nbsp;06:50</td><td style=width:20% rowspan=2 valign=top class=showornot><img src='images/transparent.png' width=80 height=27 ></p></td></tr><tr><td><div class='progress'><div class='progress-bar progress-bar-custom' role='progressbar' aria-valuenow='0' aria-valuemin='0' aria-valuemax='100'></div></div></tr></table> </li>
<li id='slider_2_item6' data-id='slider_2_item6' data-index='6' data-start='06' data-start-m='50' data-end='08' data-end-m='20' data-img='hk_sports/BS2.svg' data-desc='' parent='slider_2' category='DTM Race 2022' live=''invalid=false>
<div class=onecontent>
<p class=title>Portimao Race 1</p>
<p class=format>DTM Race 2022</p>
</div>
<div class=timer><table border=0 cellspacing=0 cellpadding=0 width=100%><tr><td style=width:80%><p class=time>06:50&nbsp;-&nbsp;08:20</td><td style=width:20% rowspan=2 valign=top class=showornot><img src='images/transparent.png' width=80 height=27 ></p></td></tr><tr><td><div class='progress'><div class='progress-bar progress-bar-custom' role='progressbar' aria-valuenow='0' aria-valuemin='0' aria-valuemax='100'></div></div></tr></table> </li>
<li id='slider_2_item7' data-id='slider_2_item7' data-index='7' data-start='08' data-start-m='20' data-end='10' data-end-m='10' data-img='hk_sports/BS2.svg' data-desc='' parent='slider_2' category='Challenge Cup 2021/22' live=''invalid=false>
<div class=onecontent>
<p class=title>Lyon vs Glasgow</p>
<p class=format>Challenge Cup 2021/22</p>
</div>
<div class=timer><table border=0 cellspacing=0 cellpadding=0 width=100%><tr><td style=width:80%><p class=time>08:20&nbsp;-&nbsp;10:10</td><td style=width:20% rowspan=2 valign=top class=showornot><img src='images/transparent.png' width=80 height=27 ></p></td></tr><tr><td><div class='progress'><div class='progress-bar progress-bar-custom' role='progressbar' aria-valuenow='0' aria-valuemin='0' aria-valuemax='100'></div></div></tr></table> </li>
<li id='slider_2_item8' data-id='slider_2_item8' data-index='8' data-start='10' data-start-m='10' data-end='12' data-end-m='00' data-img='hk_sports/BS2.svg' data-desc='' parent='slider_2' category='Ligue 1 2021/22' live=''invalid=false>
<div class=onecontent>
<p class=title>PSG vs Troyes</p>
<p class=format>Ligue 1 2021/22</p>
</div>
<div class=timer><table border=0 cellspacing=0 cellpadding=0 width=100%><tr><td style=width:80%><p class=time>10:10&nbsp;-&nbsp;12:00</td><td style=width:20% rowspan=2 valign=top class=showornot><img src='images/transparent.png' width=80 height=27 ><p></td></tr><tr><td ><div class='progress' currents=true><div class='progress-bar progress-bar-custom' role='progressbar' aria-valuenow='24' aria-valuemin='0' aria-valuemax='100' style='width:24.545454545455%'></div></div></tr></table> </li>
<li id='slider_2_item9' data-id='slider_2_item9' data-index='9' data-start='12' data-start-m='00' data-end='12' data-end-m='30' data-img='hk_sports/BS2.svg' data-desc='' parent='slider_2' category='This Is Paris 2021/22' live=''invalid=false>
<div class=onecontent>
<p class=title>Episode Number 37</p>
<p class=format>This Is Paris 2021/22</p>
</div>
<div class=timer><table border=0 cellspacing=0 cellpadding=0 width=100%><tr><td style=width:80%><p class=time>12:00&nbsp;-&nbsp;12:30</td><td style=width:20% rowspan=2 valign=top class=showornot><img src='images/transparent.png' width=80 height=27 ></p></td></tr><tr><td><div class='progress'><div class='progress-bar progress-bar-custom' role='progressbar' aria-valuenow='0' aria-valuemin='0' aria-valuemax='100'></div></div></tr></table> </li>
<li id='slider_2_item10' data-id='slider_2_item10' data-index='10' data-start='12' data-start-m='30' data-end='13' data-end-m='00' data-img='hk_sports/BS2.svg' data-desc='' parent='slider_2' category='MLS Show 2022' live=''invalid=false>
<div class=onecontent>
<p class=title>RD 10</p>
<p class=format>MLS Show 2022</p>
</div>
<div class=timer><table border=0 cellspacing=0 cellpadding=0 width=100%><tr><td style=width:80%><p class=time>12:30&nbsp;-&nbsp;13:00</td><td style=width:20% rowspan=2 valign=top class=showornot><img src='images/transparent.png' width=80 height=27 ></p></td></tr><tr><td><div class='progress'><div class='progress-bar progress-bar-custom' role='progressbar' aria-valuenow='0' aria-valuemin='0' aria-valuemax='100'></div></div></tr></table> </li>
<li id='slider_2_item11' data-id='slider_2_item11' data-index='11' data-start='13' data-start-m='00' data-end='14' data-end-m='00' data-img='hk_sports/BS2.svg' data-desc='' parent='slider_2' category='Ferrari Challenge Highlights 2022' live=''invalid=false>
<div class=onecontent>
<p class=title>Portimao</p>
<p class=format>Ferrari Challenge Highlights 2022</p>
</div>
<div class=timer><table border=0 cellspacing=0 cellpadding=0 width=100%><tr><td style=width:80%><p class=time>13:00&nbsp;-&nbsp;14:00</td><td style=width:20% rowspan=2 valign=top class=showornot><img src='images/transparent.png' width=80 height=27 ></p></td></tr><tr><td><div class='progress'><div class='progress-bar progress-bar-custom' role='progressbar' aria-valuenow='0' aria-valuemin='0' aria-valuemax='100'></div></div></tr></table> </li>
<li id='slider_2_item12' data-id='slider_2_item12' data-index='12' data-start='14' data-start-m='00' data-end='14' data-end-m='15' data-img='hk_sports/BS2.svg' data-desc='' parent='slider_2' category='SPFL Highlights 2021/22' live=''invalid=false>
<div class=onecontent>
<p class=title>MD 36</p>
<p class=format>SPFL Highlights 2021/22</p>
</div>
<div class=timer><table border=0 cellspacing=0 cellpadding=0 width=100%><tr><td style=width:80%><p class=time>14:00&nbsp;-&nbsp;14:15</td><td style=width:20% rowspan=2 valign=top class=showornot><img src='images/transparent.png' width=80 height=27 ></p></td></tr><tr><td><div class='progress'><div class='progress-bar progress-bar-custom' role='progressbar' aria-valuenow='0' aria-valuemin='0' aria-valuemax='100'></div></div></tr></table> </li>
<li id='slider_2_item13' data-id='slider_2_item13' data-index='13' data-start='14' data-start-m='15' data-end='16' data-end-m='00' data-img='hk_sports/BS2.svg' data-desc='' parent='slider_2' category='SPFL Premiership 2021/22' live=''invalid=false>
<div class=onecontent>
<p class=title>Celtic vs Hearts</p>
<p class=format>SPFL Premiership 2021/22</p>
</div>
<div class=timer><table border=0 cellspacing=0 cellpadding=0 width=100%><tr><td style=width:80%><p class=time>14:15&nbsp;-&nbsp;16:00</td><td style=width:20% rowspan=2 valign=top class=showornot><img src='images/transparent.png' width=80 height=27 ></p></td></tr><tr><td><div class='progress'><div class='progress-bar progress-bar-custom' role='progressbar' aria-valuenow='0' aria-valuemin='0' aria-valuemax='100'></div></div></tr></table> </li>
<li id='slider_2_item14' data-id='slider_2_item14' data-index='14' data-start='16' data-start-m='00' data-end='17' data-end-m='00' data-img='hk_sports/BS2.svg' data-desc='' parent='slider_2' category='British Superbike Championship Highlights 2022' live=''invalid=false>
<div class=onecontent>
<p class=title>Oulton Park</p>
<p class=format>British Superbike Championship Highlights 2022</p>
</div>
<div class=timer><table border=0 cellspacing=0 cellpadding=0 width=100%><tr><td style=width:80%><p class=time>16:00&nbsp;-&nbsp;17:00</td><td style=width:20% rowspan=2 valign=top class=showornot><img src='images/transparent.png' width=80 height=27 ></p></td></tr><tr><td><div class='progress'><div class='progress-bar progress-bar-custom' role='progressbar' aria-valuenow='0' aria-valuemin='0' aria-valuemax='100'></div></div></tr></table> </li>
<li id='slider_2_item15' data-id='slider_2_item15' data-index='15' data-start='17' data-start-m='00' data-end='17' data-end-m='50' data-img='hk_sports/BS2.svg' data-desc='' parent='slider_2' category='FIM Speedway GP Highlights 2022' live=''invalid=false>
<div class=onecontent>
<p class=title>Gorican</p>
<p class=format>FIM Speedway GP Highlights 2022</p>
</div>
<div class=timer><table border=0 cellspacing=0 cellpadding=0 width=100%><tr><td style=width:80%><p class=time>17:00&nbsp;-&nbsp;17:50</td><td style=width:20% rowspan=2 valign=top class=showornot><img src='images/transparent.png' width=80 height=27 ></p></td></tr><tr><td><div class='progress'><div class='progress-bar progress-bar-custom' role='progressbar' aria-valuenow='0' aria-valuemin='0' aria-valuemax='100'></div></div></tr></table> </li>
<li id='slider_2_item16' data-id='slider_2_item16' data-index='16' data-start='17' data-start-m='50' data-end='18' data-end-m='00' data-img='hk_sports/BS2.svg' data-desc='' parent='slider_2' category='Ligue 1 Club Classic 2021/22' live=''invalid=false>
<div class=onecontent>
<p class=title>PSG vs Lyon</p>
<p class=format>Ligue 1 Club Classic 2021/22</p>
</div>
<div class=timer><table border=0 cellspacing=0 cellpadding=0 width=100%><tr><td style=width:80%><p class=time>17:50&nbsp;-&nbsp;18:00</td><td style=width:20% rowspan=2 valign=top class=showornot><img src='images/transparent.png' width=80 height=27 ></p></td></tr><tr><td><div class='progress'><div class='progress-bar progress-bar-custom' role='progressbar' aria-valuenow='0' aria-valuemin='0' aria-valuemax='100'></div></div></tr></table> </li>
<li id='slider_2_item17' data-id='slider_2_item17' data-index='17' data-start='18' data-start-m='00' data-end='20' data-end-m='10' data-img='hk_sports/BS2.svg' data-desc='' parent='slider_2' category='SPFL Premiership 2021/22' live='1'invalid=false>
<div class=onecontent>
<p class=title>Inverness CT vs Arbroath</p>
<p class=format>SPFL Premiership 2021/22</p>
</div>
<div class=timer><table border=0 cellspacing=0 cellpadding=0 width=100%><tr><td style=width:80%><p class=time>18:00&nbsp;-&nbsp;20:10</td><td style=width:20% rowspan=2 valign=top class=showornot><img src='images/live.svg' class=image_live_css ></p></td></tr><tr><td><div class='progress'><div class='progress-bar progress-bar-custom' role='progressbar' aria-valuenow='0' aria-valuemin='0' aria-valuemax='100'></div></div></tr></table> </li>
<li id='slider_2_item18' data-id='slider_2_item18' data-index='18' data-start='20' data-start-m='10' data-end='20' data-end-m='40' data-img='hk_sports/BS2.svg' data-desc='' parent='slider_2' category='MLS Show 2022' live=''invalid=false>
<div class=onecontent>
<p class=title>RD 10</p>
<p class=format>MLS Show 2022</p>
</div>
<div class=timer><table border=0 cellspacing=0 cellpadding=0 width=100%><tr><td style=width:80%><p class=time>20:10&nbsp;-&nbsp;20:40</td><td style=width:20% rowspan=2 valign=top class=showornot><img src='images/transparent.png' width=80 height=27 ></p></td></tr><tr><td><div class='progress'><div class='progress-bar progress-bar-custom' role='progressbar' aria-valuenow='0' aria-valuemin='0' aria-valuemax='100'></div></div></tr></table> </li>
<li id='slider_2_item19' data-id='slider_2_item19' data-index='19' data-start='20' data-start-m='40' data-end='22' data-end-m='30' data-img='hk_sports/BS2.svg' data-desc='' parent='slider_2' category='Champions Cup 2021/22' live=''invalid=false>
<div class=onecontent>
<p class=title>Racing 92 vs Sale</p>
<p class=format>Champions Cup 2021/22</p>
</div>
<div class=timer><table border=0 cellspacing=0 cellpadding=0 width=100%><tr><td style=width:80%><p class=time>20:40&nbsp;-&nbsp;22:30</td><td style=width:20% rowspan=2 valign=top class=showornot><img src='images/transparent.png' width=80 height=27 ></p></td></tr><tr><td><div class='progress'><div class='progress-bar progress-bar-custom' role='progressbar' aria-valuenow='0' aria-valuemin='0' aria-valuemax='100'></div></div></tr></table> </li>
<li id='slider_2_item20' data-id='slider_2_item20' data-index='20' data-start='22' data-start-m='30' data-end='00' data-end-m='20' data-img='hk_sports/BS2.svg' data-desc='' parent='slider_2' category='Ligue 1 2021/22' live=''invalid=false>
<div class=onecontent>
<p class=title>Metz vs Lyon</p>
<p class=format>Ligue 1 2021/22</p>
</div>
<div class=timer><table border=0 cellspacing=0 cellpadding=0 width=100%><tr><td style=width:80%><p class=time>22:30&nbsp;-&nbsp;00:20</td><td style=width:20% rowspan=2 valign=top class=showornot><img src='images/transparent.png' width=80 height=27 ></p></td></tr><tr><td><div class='progress'><div class='progress-bar progress-bar-custom' role='progressbar' aria-valuenow='0' aria-valuemin='0' aria-valuemax='100'></div></div></tr></table> </li>
<div><ul><li class=item_normal></li><li class=item_normal></li></ul> </ul></div>
</div>
<div class='col-xs-1 nextarrow col-sm-1 nextarrow col-md-1 nextarrow col-lg-1 nextarrow'>
<div class='centered'>
<img align=center width=15 height=15 src=images/nextarrow_en.svg style=cursor:pointer onclick=action('slider_2')>
</div>
</div>
</div>
<div class='row no-gutter' style='height:15px' id='ruler_channels_2'></div>
</div>
</div></div></div>
<div id="immobile" style="display:'none'"></div><div id="imtablet" style="display:'none'"></div><div id="imdesktop" style="display:'none'"></div>

View File

@@ -0,0 +1 @@
{"count":1,"rows":[{"data":{"eventId":"2028126","eventDate":"2023-10-21T10:30:00","utcEventDate":"2023-10-20T23:30:00","duration":"90","programId":"106230","programTypeId":"5","title":"ATP 500"},"duration":5400000,"title":"Tokyo Day 5 QF 2","startDate":"2023-10-20T23:30:00.000Z","endDate":"2023-10-21T01:00:00.000Z","description":"Exclusive coverage of the 2023 ATP Tour on beIN SPORTS","channelId":"164C0EDA-EBCE-4AA6-9DDA-D603E0948B9F"}]}

View File

@@ -1,297 +0,0 @@
<script>
currenthour=10;
</script>
<div class=containertop>
<div class='row no-gutter'>
<div class='col-xs-12 col-sm-12 col-md-12 col-lg-12'>
<table width=100% border=0 class=day_table><tr><td><span id=day1t1 style=width:100% class=day_item><a href=javascript:selectday('day1');loaders('utctime_hk.php?cdate=2022-05-10&offset=0&mins=00&category=sports',2)>Tue</a></span><span id=day1t2 style=width:100% class=day_item1><a href=javascript:selectday('day1');loaders('utctime_hk.php?cdate=2022-05-10&offset=0&mins=00&category=sports',2)>10</a></div></td><script language=javascript>lastday='day2';</script><td><div id=day2t1 style=width:100% class=day_item_selected><a href=javascript:loaders('utctime_hk.php?cdate=2022-05-11&offset=0&mins=00&category=sports',2)>Wed</a></div><div id=day2t2 style=width:100% class=day_item1_selected><a href=javascript:loaders('utctime_hk.php?cdate=2022-05-11&offset=0&mins=00&category=sports',2)>11</a></div></td><td><span id=day3t1 style=width:100% class=day_item><a href=javascript:selectday('day3');loaders('utctime_hk.php?cdate=2022-05-12&offset=0&mins=00&category=sports',2)>Thu</a></span><span id=day3t2 style=width:100% class=day_item1><a href=javascript:selectday('day3');loaders('utctime_hk.php?cdate=2022-05-12&offset=0&mins=00&category=sports',2)>12</a></div></td><td><span id=day4t1 style=width:100% class=day_item><a href=javascript:selectday('day4');loaders('utctime_hk.php?cdate=2022-05-13&offset=0&mins=00&category=sports',2)>Fri</a></span><span id=day4t2 style=width:100% class=day_item1><a href=javascript:selectday('day4');loaders('utctime_hk.php?cdate=2022-05-13&offset=0&mins=00&category=sports',2)>13</a></div></td><td><span id=day5t1 style=width:100% class=day_item><a href=javascript:selectday('day5');loaders('utctime_hk.php?cdate=2022-05-14&offset=0&mins=00&category=sports',2)>Sat</a></span><span id=day5t2 style=width:100% class=day_item1><a href=javascript:selectday('day5');loaders('utctime_hk.php?cdate=2022-05-14&offset=0&mins=00&category=sports',2)>14</a></div></td><td><span id=day6t1 style=width:100% class=day_item><a href=javascript:selectday('day6');loaders('utctime_hk.php?cdate=2022-05-15&offset=0&mins=00&category=sports',2)>Sun</a></span><span id=day6t2 style=width:100% class=day_item1><a href=javascript:selectday('day6');loaders('utctime_hk.php?cdate=2022-05-15&offset=0&mins=00&category=sports',2)>15</a></div></td><td><span id=day7t1 style=width:100% class=day_item><a href=javascript:selectday('day7');loaders('utctime_hk.php?cdate=2022-05-16&offset=0&mins=00&category=sports',2)>Mon</a></span><span id=day7t2 style=width:100% class=day_item1><a href=javascript:selectday('day7');loaders('utctime_hk.php?cdate=2022-05-16&offset=0&mins=00&category=sports',2)>16</a></div></td></table></div>
</div><div class='row no-gutter'>
<div class='col-xs-12 col-sm-12 col-md-12 col-lg-12'>
<div style='background-color:#d1d0de;margin:0px auto;text-align:center;display:flex;width:100%'><div id=left style=width:25px;background-color:red;height:50px;padding-top:13px;background-color:#d1d0de;><img src=ico/left.png onclick=ptime()></div><div id='slider_timer' class='slider_time'>
<ul id='timer'></ul></div><div id=left style=width:25px;background-color:red;height:50px;padding-top:13px;background-color:#d1d0de><img src=ico/right.png onclick=ntime()></div></div>
</div>
</div><div class='row no-gutter' style='height:15px'></div>
<div class='row no-gutter'>
<div class='col-xs-12 col-sm-12 col-md-12 col-lg-12'>
<div id='loader_inner' style='display:none;margin:0 auto;width:100%;margin-top:5px;margin-bottom:5px;text-align:center'>
<div style='text-align:center;margin:auto 0'><img align=center src='images/ajax-loader.gif'></div>
</div>
</div>
</div>
</div><div class='container'><div class='row no-gutter' >
<div style='display:none;min-height:1000px' class='col-xs-12 col-sm-12 col-md-12 col-lg-12' id='category_div'>
</div>
</div>
<div id='epg_div'><div class='row no-gutter' id=channels_1>
<div class='col-xs-3 col-sm-2 col-md-2 col-lg-1'>
<div style='width:100%;text-align:center;'>
<div class=channel>
<div class=centered>
<img align=center style='width:60%;height:auto' src='hk_sports/BS1.svg'>
</div>
</div>
</div>
</div>
<div class='col-xs-8 col-sm-9 col-md-9 col-lg-10'>
<div id='slider_1' class=slider><ul id='ul_slider_1'>
<li id='slider_1_item1' data-id='slider_1_item1' data-index='1' data-start='00' data-start-m='10' data-end='02' data-end-m='00' data-img='hk_sports/BS1.svg' data-desc='' parent='slider_1' category='Super Lig 2021/22' live=''invalid=false>
<div class=onecontent>
<p class=title>Besiktas vs Fenerbahce</p>
<p class=format>Super Lig 2021/22</p>
</div>
<div class=timer><table border=0 cellspacing=0 cellpadding=0 width=100%><tr><td style=width:80%><p class=time>00:10&nbsp;-&nbsp;02:00</td><td style=width:20% rowspan=2 valign=top class=showornot><img src='images/transparent.png' width=80 height=27 ></p></td></tr><tr><td><div class='progress'><div class='progress-bar progress-bar-custom' role='progressbar' aria-valuenow='0' aria-valuemin='0' aria-valuemax='100'></div></div></tr></table> </li>
<li id='slider_1_item2' data-id='slider_1_item2' data-index='2' data-start='02' data-start-m='00' data-end='02' data-end-m='30' data-img='hk_sports/BS1.svg' data-desc='' parent='slider_1' category='Chelsea TV: Premier League Years 2021/22' live=''invalid=false>
<div class=onecontent>
<p class=title>Premier League Years 92/93 93/94</p>
<p class=format>Chelsea TV: Premier League Years 2021/22</p>
</div>
<div class=timer><table border=0 cellspacing=0 cellpadding=0 width=100%><tr><td style=width:80%><p class=time>02:00&nbsp;-&nbsp;02:30</td><td style=width:20% rowspan=2 valign=top class=showornot><img src='images/transparent.png' width=80 height=27 ></p></td></tr><tr><td><div class='progress'><div class='progress-bar progress-bar-custom' role='progressbar' aria-valuenow='0' aria-valuemin='0' aria-valuemax='100'></div></div></tr></table> </li>
<li id='slider_1_item3' data-id='slider_1_item3' data-index='3' data-start='02' data-start-m='30' data-end='03' data-end-m='00' data-img='hk_sports/BS1.svg' data-desc='' parent='slider_1' category='Inside Chelsea 2021/22' live=''invalid=false>
<div class=onecontent>
<p class=title>Episode Number 38</p>
<p class=format>Inside Chelsea 2021/22</p>
</div>
<div class=timer><table border=0 cellspacing=0 cellpadding=0 width=100%><tr><td style=width:80%><p class=time>02:30&nbsp;-&nbsp;03:00</td><td style=width:20% rowspan=2 valign=top class=showornot><img src='images/transparent.png' width=80 height=27 ></p></td></tr><tr><td><div class='progress'><div class='progress-bar progress-bar-custom' role='progressbar' aria-valuenow='0' aria-valuemin='0' aria-valuemax='100'></div></div></tr></table> </li>
<li id='slider_1_item4' data-id='slider_1_item4' data-index='4' data-start='03' data-start-m='00' data-end='05' data-end-m='00' data-img='hk_sports/BS1.svg' data-desc='' parent='slider_1' category='Chelsea TV 2021/22' live=''invalid=false>
<div class=onecontent>
<p class=title>Chelsea vs Wolves</p>
<p class=format>Chelsea TV 2021/22</p>
</div>
<div class=timer><table border=0 cellspacing=0 cellpadding=0 width=100%><tr><td style=width:80%><p class=time>03:00&nbsp;-&nbsp;05:00</td><td style=width:20% rowspan=2 valign=top class=showornot><img src='images/transparent.png' width=80 height=27 ></p></td></tr><tr><td><div class='progress'><div class='progress-bar progress-bar-custom' role='progressbar' aria-valuenow='0' aria-valuemin='0' aria-valuemax='100'></div></div></tr></table> </li>
<li id='slider_1_item5' data-id='slider_1_item5' data-index='5' data-start='05' data-start-m='00' data-end='06' data-end-m='50' data-img='hk_sports/BS1.svg' data-desc='' parent='slider_1' category='Serie A 2021/22' live=''invalid=false>
<div class=onecontent>
<p class=title>Sassuolo vs Udinese</p>
<p class=format>Serie A 2021/22</p>
</div>
<div class=timer><table border=0 cellspacing=0 cellpadding=0 width=100%><tr><td style=width:80%><p class=time>05:00&nbsp;-&nbsp;06:50</td><td style=width:20% rowspan=2 valign=top class=showornot><img src='images/transparent.png' width=80 height=27 ></p></td></tr><tr><td><div class='progress'><div class='progress-bar progress-bar-custom' role='progressbar' aria-valuenow='0' aria-valuemin='0' aria-valuemax='100'></div></div></tr></table> </li>
<li id='slider_1_item6' data-id='slider_1_item6' data-index='6' data-start='06' data-start-m='50' data-end='08' data-end-m='40' data-img='hk_sports/BS1.svg' data-desc='' parent='slider_1' category='TotalEnergies CAF Champions League 2021/22' live=''invalid=false>
<div class=onecontent>
<p class=title>Al Ahly FC vs ES Setif</p>
<p class=format>TotalEnergies CAF Champions League 2021/22</p>
</div>
<div class=timer><table border=0 cellspacing=0 cellpadding=0 width=100%><tr><td style=width:80%><p class=time>06:50&nbsp;-&nbsp;08:40</td><td style=width:20% rowspan=2 valign=top class=showornot><img src='images/transparent.png' width=80 height=27 ></p></td></tr><tr><td><div class='progress'><div class='progress-bar progress-bar-custom' role='progressbar' aria-valuenow='0' aria-valuemin='0' aria-valuemax='100'></div></div></tr></table> </li>
<li id='slider_1_item7' data-id='slider_1_item7' data-index='7' data-start='08' data-start-m='40' data-end='09' data-end-m='40' data-img='hk_sports/BS1.svg' data-desc='' parent='slider_1' category='Ligue 1 Highlights 2021/22' live=''invalid=false>
<div class=onecontent>
<p class=title>MD 36</p>
<p class=format>Ligue 1 Highlights 2021/22</p>
</div>
<div class=timer><table border=0 cellspacing=0 cellpadding=0 width=100%><tr><td style=width:80%><p class=time>08:40&nbsp;-&nbsp;09:40</td><td style=width:20% rowspan=2 valign=top class=showornot><img src='images/transparent.png' width=80 height=27 ></p></td></tr><tr><td><div class='progress'><div class='progress-bar progress-bar-custom' role='progressbar' aria-valuenow='0' aria-valuemin='0' aria-valuemax='100'></div></div></tr></table> </li>
<li id='slider_1_item8' data-id='slider_1_item8' data-index='8' data-start='09' data-start-m='40' data-end='11' data-end-m='30' data-img='hk_sports/BS1.svg' data-desc='' parent='slider_1' category='Serie A 2021/22' live=''invalid=false>
<div class=onecontent>
<p class=title>Torino vs Napoli</p>
<p class=format>Serie A 2021/22</p>
</div>
<div class=timer><table border=0 cellspacing=0 cellpadding=0 width=100%><tr><td style=width:80%><p class=time>09:40&nbsp;-&nbsp;11:30</td><td style=width:20% rowspan=2 valign=top class=showornot><img src='images/transparent.png' width=80 height=27 ></p></td></tr><tr><td><div class='progress'><div class='progress-bar progress-bar-custom' role='progressbar' aria-valuenow='0' aria-valuemin='0' aria-valuemax='100'></div></div></tr></table> </li>
<li id='slider_1_item9' data-id='slider_1_item9' data-index='9' data-start='11' data-start-m='30' data-end='12' data-end-m='00' data-img='hk_sports/BS1.svg' data-desc='' parent='slider_1' category='Serie A Full Impact 2021/22' live=''invalid=false>
<div class=onecontent>
<p class=title>MD 36</p>
<p class=format>Serie A Full Impact 2021/22</p>
</div>
<div class=timer><table border=0 cellspacing=0 cellpadding=0 width=100%><tr><td style=width:80%><p class=time>11:30&nbsp;-&nbsp;12:00</td><td style=width:20% rowspan=2 valign=top class=showornot><img src='images/transparent.png' width=80 height=27 ></p></td></tr><tr><td><div class='progress'><div class='progress-bar progress-bar-custom' role='progressbar' aria-valuenow='0' aria-valuemin='0' aria-valuemax='100'></div></div></tr></table> </li>
<li id='slider_1_item10' data-id='slider_1_item10' data-index='10' data-start='12' data-start-m='00' data-end='12' data-end-m='30' data-img='hk_sports/BS1.svg' data-desc='' parent='slider_1' category='Arsenal World 2021/22' live=''invalid=false>
<div class=onecontent>
<p class=title>Episode Number 39</p>
<p class=format>Arsenal World 2021/22</p>
</div>
<div class=timer><table border=0 cellspacing=0 cellpadding=0 width=100%><tr><td style=width:80%><p class=time>12:00&nbsp;-&nbsp;12:30</td><td style=width:20% rowspan=2 valign=top class=showornot><img src='images/transparent.png' width=80 height=27 ></p></td></tr><tr><td><div class='progress'><div class='progress-bar progress-bar-custom' role='progressbar' aria-valuenow='0' aria-valuemin='0' aria-valuemax='100'></div></div></tr></table> </li>
<li id='slider_1_item11' data-id='slider_1_item11' data-index='11' data-start='12' data-start-m='30' data-end='13' data-end-m='00' data-img='hk_sports/BS1.svg' data-desc='' parent='slider_1' category='Arsenal 360 2021/22' live=''invalid=false>
<div class=onecontent>
<p class=title>Episode Number 39</p>
<p class=format>Arsenal 360 2021/22</p>
</div>
<div class=timer><table border=0 cellspacing=0 cellpadding=0 width=100%><tr><td style=width:80%><p class=time>12:30&nbsp;-&nbsp;13:00</td><td style=width:20% rowspan=2 valign=top class=showornot><img src='images/transparent.png' width=80 height=27 ></p></td></tr><tr><td><div class='progress'><div class='progress-bar progress-bar-custom' role='progressbar' aria-valuenow='0' aria-valuemin='0' aria-valuemax='100'></div></div></tr></table> </li>
<li id='slider_1_item12' data-id='slider_1_item12' data-index='12' data-start='13' data-start-m='00' data-end='15' data-end-m='00' data-img='hk_sports/BS1.svg' data-desc='' parent='slider_1' category='Arsenal TV 2021/22' live=''invalid=false>
<div class=onecontent>
<p class=title>Arsenal vs Leeds</p>
<p class=format>Arsenal TV 2021/22</p>
</div>
<div class=timer><table border=0 cellspacing=0 cellpadding=0 width=100%><tr><td style=width:80%><p class=time>13:00&nbsp;-&nbsp;15:00</td><td style=width:20% rowspan=2 valign=top class=showornot><img src='images/transparent.png' width=80 height=27 ></p></td></tr><tr><td><div class='progress'><div class='progress-bar progress-bar-custom' role='progressbar' aria-valuenow='0' aria-valuemin='0' aria-valuemax='100'></div></div></tr></table> </li>
<li id='slider_1_item13' data-id='slider_1_item13' data-index='13' data-start='15' data-start-m='00' data-end='17' data-end-m='00' data-img='hk_sports/BS1.svg' data-desc='' parent='slider_1' category='Liverpool TV 2021/22' live=''invalid=false>
<div class=onecontent>
<p class=title>Aston Villa vs Liverpool</p>
<p class=format>Liverpool TV 2021/22</p>
</div>
<div class=timer><table border=0 cellspacing=0 cellpadding=0 width=100%><tr><td style=width:80%><p class=time>15:00&nbsp;-&nbsp;17:00</td><td style=width:20% rowspan=2 valign=top class=showornot><img src='images/transparent.png' width=80 height=27 ></p></td></tr><tr><td><div class='progress'><div class='progress-bar progress-bar-custom' role='progressbar' aria-valuenow='0' aria-valuemin='0' aria-valuemax='100'></div></div></tr></table> </li>
<li id='slider_1_item14' data-id='slider_1_item14' data-index='14' data-start='17' data-start-m='00' data-end='17' data-end-m='30' data-img='hk_sports/BS1.svg' data-desc='' parent='slider_1' category='LFC Trending 2021/22' live=''invalid=false>
<div class=onecontent>
<p class=title>Episode Number 41</p>
<p class=format>LFC Trending 2021/22</p>
</div>
<div class=timer><table border=0 cellspacing=0 cellpadding=0 width=100%><tr><td style=width:80%><p class=time>17:00&nbsp;-&nbsp;17:30</td><td style=width:20% rowspan=2 valign=top class=showornot><img src='images/transparent.png' width=80 height=27 ></p></td></tr><tr><td><div class='progress'><div class='progress-bar progress-bar-custom' role='progressbar' aria-valuenow='0' aria-valuemin='0' aria-valuemax='100'></div></div></tr></table> </li>
<li id='slider_1_item15' data-id='slider_1_item15' data-index='15' data-start='17' data-start-m='30' data-end='18' data-end-m='00' data-img='hk_sports/BS1.svg' data-desc='' parent='slider_1' category='LFC TV Specials 2021/22' live=''invalid=false>
<div class=onecontent>
<p class=title>Villarreal vs Liverpool</p>
<p class=format>LFC TV Specials 2021/22</p>
</div>
<div class=timer><table border=0 cellspacing=0 cellpadding=0 width=100%><tr><td style=width:80%><p class=time>17:30&nbsp;-&nbsp;18:00</td><td style=width:20% rowspan=2 valign=top class=showornot><img src='images/transparent.png' width=80 height=27 ></p></td></tr><tr><td><div class='progress'><div class='progress-bar progress-bar-custom' role='progressbar' aria-valuenow='0' aria-valuemin='0' aria-valuemax='100'></div></div></tr></table> </li>
<li id='slider_1_item16' data-id='slider_1_item16' data-index='16' data-start='18' data-start-m='00' data-end='18' data-end-m='10' data-img='hk_sports/BS1.svg' data-desc='' parent='slider_1' category='Serie A Highlights 2021/22' live=''invalid=false>
<div class=onecontent>
<p class=title>Genoa vs Napoli</p>
<p class=format>Serie A Highlights 2021/22</p>
</div>
<div class=timer><table border=0 cellspacing=0 cellpadding=0 width=100%><tr><td style=width:80%><p class=time>18:00&nbsp;-&nbsp;18:10</td><td style=width:20% rowspan=2 valign=top class=showornot><img src='images/transparent.png' width=80 height=27 ></p></td></tr><tr><td><div class='progress'><div class='progress-bar progress-bar-custom' role='progressbar' aria-valuenow='0' aria-valuemin='0' aria-valuemax='100'></div></div></tr></table> </li>
<li id='slider_1_item17' data-id='slider_1_item17' data-index='17' data-start='18' data-start-m='10' data-end='18' data-end-m='25' data-img='hk_sports/BS1.svg' data-desc='' parent='slider_1' category='SPFL Highlights 2021/22' live=''invalid=false>
<div class=onecontent>
<p class=title>MD 36</p>
<p class=format>SPFL Highlights 2021/22</p>
</div>
<div class=timer><table border=0 cellspacing=0 cellpadding=0 width=100%><tr><td style=width:80%><p class=time>18:10&nbsp;-&nbsp;18:25</td><td style=width:20% rowspan=2 valign=top class=showornot><img src='images/transparent.png' width=80 height=27 ></p></td></tr><tr><td><div class='progress'><div class='progress-bar progress-bar-custom' role='progressbar' aria-valuenow='0' aria-valuemin='0' aria-valuemax='100'></div></div></tr></table> </li>
<li id='slider_1_item18' data-id='slider_1_item18' data-index='18' data-start='18' data-start-m='25' data-end='20' data-end-m='30' data-img='hk_sports/BS1.svg' data-desc='' parent='slider_1' category='SPFL Premiership 2021/22' live='1'invalid=false>
<div class=onecontent>
<p class=title>Dundee Utd vs Celtic</p>
<p class=format>SPFL Premiership 2021/22</p>
</div>
<div class=timer><table border=0 cellspacing=0 cellpadding=0 width=100%><tr><td style=width:80%><p class=time>18:25&nbsp;-&nbsp;20:30</td><td style=width:20% rowspan=2 valign=top class=showornot><img src='images/live.svg' class=image_live_css ></p></td></tr><tr><td><div class='progress'><div class='progress-bar progress-bar-custom' role='progressbar' aria-valuenow='0' aria-valuemin='0' aria-valuemax='100'></div></div></tr></table> </li>
<li id='slider_1_item19' data-id='slider_1_item19' data-index='19' data-start='20' data-start-m='30' data-end='22' data-end-m='20' data-img='hk_sports/BS1.svg' data-desc='' parent='slider_1' category='Ligue 1 2021/22' live=''invalid=false>
<div class=onecontent>
<p class=title>Brest vs Strasbourg</p>
<p class=format>Ligue 1 2021/22</p>
</div>
<div class=timer><table border=0 cellspacing=0 cellpadding=0 width=100%><tr><td style=width:80%><p class=time>20:30&nbsp;-&nbsp;22:20</td><td style=width:20% rowspan=2 valign=top class=showornot><img src='images/transparent.png' width=80 height=27 ></p></td></tr><tr><td><div class='progress'><div class='progress-bar progress-bar-custom' role='progressbar' aria-valuenow='0' aria-valuemin='0' aria-valuemax='100'></div></div></tr></table> </li>
<li id='slider_1_item20' data-id='slider_1_item20' data-index='20' data-start='22' data-start-m='20' data-end='00' data-end-m='10' data-img='hk_sports/BS1.svg' data-desc='' parent='slider_1' category='Serie A 2021/22' live=''invalid=false>
<div class=onecontent>
<p class=title>Fiorentina vs Roma</p>
<p class=format>Serie A 2021/22</p>
</div>
<div class=timer><table border=0 cellspacing=0 cellpadding=0 width=100%><tr><td style=width:80%><p class=time>22:20&nbsp;-&nbsp;00:10</td><td style=width:20% rowspan=2 valign=top class=showornot><img src='images/transparent.png' width=80 height=27 ></p></td></tr><tr><td><div class='progress'><div class='progress-bar progress-bar-custom' role='progressbar' aria-valuenow='0' aria-valuemin='0' aria-valuemax='100'></div></div></tr></table> </li>
<div><ul><li class=item_normal></li><li class=item_normal></li></ul> </ul></div>
</div>
<div class='col-xs-1 nextarrow col-sm-1 nextarrow col-md-1 nextarrow col-lg-1 nextarrow'>
<div class='centered'>
<img align=center width=15 height=15 src=images/nextarrow_en.svg style=cursor:pointer onclick=action('slider_1')>
</div>
</div>
</div>
<div class='row no-gutter' style='height:15px' id='ruler_channels_1'></div>
<div class='row no-gutter' id=channels_2>
<div class='col-xs-3 col-sm-2 col-md-2 col-lg-1'>
<div style='width:100%;text-align:center;'>
<div class=channel>
<div class=centered>
<img align=center style='width:60%;height:auto' src='hk_sports/BS2.svg'>
</div>
</div>
</div>
</div>
<div class='col-xs-8 col-sm-9 col-md-9 col-lg-10'>
<div id='slider_2' class=slider><ul id='ul_slider_2'>
<li id='slider_2_item1' data-id='slider_2_item1' data-index='1' data-start='00' data-start-m='20' data-end='02' data-end-m='10' data-img='hk_sports/BS2.svg' data-desc='' parent='slider_2' category='SPFL Premiership 2021/22' live=''invalid=false>
<div class=onecontent>
<p class=title>Celtic vs Hearts</p>
<p class=format>SPFL Premiership 2021/22</p>
</div>
<div class=timer><table border=0 cellspacing=0 cellpadding=0 width=100%><tr><td style=width:80%><p class=time>00:20&nbsp;-&nbsp;02:10</td><td style=width:20% rowspan=2 valign=top class=showornot><img src='images/transparent.png' width=80 height=27 ></p></td></tr><tr><td><div class='progress'><div class='progress-bar progress-bar-custom' role='progressbar' aria-valuenow='0' aria-valuemin='0' aria-valuemax='100'></div></div></tr></table> </li>
<li id='slider_2_item2' data-id='slider_2_item2' data-index='2' data-start='02' data-start-m='10' data-end='04' data-end-m='00' data-img='hk_sports/BS2.svg' data-desc='' parent='slider_2' category='SPFL Premiership 2021/22' live=''invalid=false>
<div class=onecontent>
<p class=title>Inverness CT vs Arbroath</p>
<p class=format>SPFL Premiership 2021/22</p>
</div>
<div class=timer><table border=0 cellspacing=0 cellpadding=0 width=100%><tr><td style=width:80%><p class=time>02:10&nbsp;-&nbsp;04:00</td><td style=width:20% rowspan=2 valign=top class=showornot><img src='images/transparent.png' width=80 height=27 ></p></td></tr><tr><td><div class='progress'><div class='progress-bar progress-bar-custom' role='progressbar' aria-valuenow='0' aria-valuemin='0' aria-valuemax='100'></div></div></tr></table> </li>
<li id='slider_2_item3' data-id='slider_2_item3' data-index='3' data-start='04' data-start-m='00' data-end='05' data-end-m='00' data-img='hk_sports/BS2.svg' data-desc='' parent='slider_2' category='Supercars Championship Highlights 2022' live=''invalid=false>
<div class=onecontent>
<p class=title>Bunnings Trade Perth Supernight Sun</p>
<p class=format>Supercars Championship Highlights 2022</p>
</div>
<div class=timer><table border=0 cellspacing=0 cellpadding=0 width=100%><tr><td style=width:80%><p class=time>04:00&nbsp;-&nbsp;05:00</td><td style=width:20% rowspan=2 valign=top class=showornot><img src='images/transparent.png' width=80 height=27 ></p></td></tr><tr><td><div class='progress'><div class='progress-bar progress-bar-custom' role='progressbar' aria-valuenow='0' aria-valuemin='0' aria-valuemax='100'></div></div></tr></table> </li>
<li id='slider_2_item4' data-id='slider_2_item4' data-index='4' data-start='05' data-start-m='00' data-end='06' data-end-m='50' data-img='hk_sports/BS2.svg' data-desc='' parent='slider_2' category='Ligue 1 2021/22' live=''invalid=false>
<div class=onecontent>
<p class=title>Brest vs Strasbourg</p>
<p class=format>Ligue 1 2021/22</p>
</div>
<div class=timer><table border=0 cellspacing=0 cellpadding=0 width=100%><tr><td style=width:80%><p class=time>05:00&nbsp;-&nbsp;06:50</td><td style=width:20% rowspan=2 valign=top class=showornot><img src='images/transparent.png' width=80 height=27 ></p></td></tr><tr><td><div class='progress'><div class='progress-bar progress-bar-custom' role='progressbar' aria-valuenow='0' aria-valuemin='0' aria-valuemax='100'></div></div></tr></table> </li>
<li id='slider_2_item5' data-id='slider_2_item5' data-index='5' data-start='06' data-start-m='50' data-end='08' data-end-m='20' data-img='hk_sports/BS2.svg' data-desc='' parent='slider_2' category='DTM Race 2022' live=''invalid=false>
<div class=onecontent>
<p class=title>Portimao Race 2</p>
<p class=format>DTM Race 2022</p>
</div>
<div class=timer><table border=0 cellspacing=0 cellpadding=0 width=100%><tr><td style=width:80%><p class=time>06:50&nbsp;-&nbsp;08:20</td><td style=width:20% rowspan=2 valign=top class=showornot><img src='images/transparent.png' width=80 height=27 ></p></td></tr><tr><td><div class='progress'><div class='progress-bar progress-bar-custom' role='progressbar' aria-valuenow='0' aria-valuemin='0' aria-valuemax='100'></div></div></tr></table> </li>
<li id='slider_2_item6' data-id='slider_2_item6' data-index='6' data-start='08' data-start-m='20' data-end='10' data-end-m='10' data-img='hk_sports/BS2.svg' data-desc='' parent='slider_2' category='Champions Cup 2021/22' live=''invalid=false>
<div class=onecontent>
<p class=title>Leicester vs Leinster</p>
<p class=format>Champions Cup 2021/22</p>
</div>
<div class=timer><table border=0 cellspacing=0 cellpadding=0 width=100%><tr><td style=width:80%><p class=time>08:20&nbsp;-&nbsp;10:10</td><td style=width:20% rowspan=2 valign=top class=showornot><img src='images/transparent.png' width=80 height=27 ></p></td></tr><tr><td><div class='progress'><div class='progress-bar progress-bar-custom' role='progressbar' aria-valuenow='0' aria-valuemin='0' aria-valuemax='100'></div></div></tr></table> </li>
<li id='slider_2_item7' data-id='slider_2_item7' data-index='7' data-start='10' data-start-m='10' data-end='12' data-end-m='00' data-img='hk_sports/BS2.svg' data-desc='' parent='slider_2' category='Ligue 1 2021/22' live=''invalid=false>
<div class=onecontent>
<p class=title>Lorient vs Marseille</p>
<p class=format>Ligue 1 2021/22</p>
</div>
<div class=timer><table border=0 cellspacing=0 cellpadding=0 width=100%><tr><td style=width:80%><p class=time>10:10&nbsp;-&nbsp;12:00</td><td style=width:20% rowspan=2 valign=top class=showornot><img src='images/transparent.png' width=80 height=27 ></p></td></tr><tr><td><div class='progress'><div class='progress-bar progress-bar-custom' role='progressbar' aria-valuenow='0' aria-valuemin='0' aria-valuemax='100'></div></div></tr></table> </li>
<li id='slider_2_item8' data-id='slider_2_item8' data-index='8' data-start='12' data-start-m='00' data-end='12' data-end-m='50' data-img='hk_sports/BS2.svg' data-desc='' parent='slider_2' category='Porsche Carrera Cup Germany 2022' live=''invalid=false>
<div class=onecontent>
<p class=title>Spa Race 1</p>
<p class=format>Porsche Carrera Cup Germany 2022</p>
</div>
<div class=timer><table border=0 cellspacing=0 cellpadding=0 width=100%><tr><td style=width:80%><p class=time>12:00&nbsp;-&nbsp;12:50</td><td style=width:20% rowspan=2 valign=top class=showornot><img src='images/transparent.png' width=80 height=27 ></p></td></tr><tr><td><div class='progress'><div class='progress-bar progress-bar-custom' role='progressbar' aria-valuenow='0' aria-valuemin='0' aria-valuemax='100'></div></div></tr></table> </li>
<li id='slider_2_item9' data-id='slider_2_item9' data-index='9' data-start='12' data-start-m='50' data-end='13' data-end-m='40' data-img='hk_sports/BS2.svg' data-desc='' parent='slider_2' category='Porsche Carrera Cup Germany 2022' live=''invalid=false>
<div class=onecontent>
<p class=title>Spa Race 2</p>
<p class=format>Porsche Carrera Cup Germany 2022</p>
</div>
<div class=timer><table border=0 cellspacing=0 cellpadding=0 width=100%><tr><td style=width:80%><p class=time>12:50&nbsp;-&nbsp;13:40</td><td style=width:20% rowspan=2 valign=top class=showornot><img src='images/transparent.png' width=80 height=27 ></p></td></tr><tr><td><div class='progress'><div class='progress-bar progress-bar-custom' role='progressbar' aria-valuenow='0' aria-valuemin='0' aria-valuemax='100'></div></div></tr></table> </li>
<li id='slider_2_item10' data-id='slider_2_item10' data-index='10' data-start='13' data-start-m='40' data-end='14' data-end-m='10' data-img='hk_sports/BS2.svg' data-desc='' parent='slider_2' category='UIM X-Cat World Championship 2022' live=''invalid=false>
<div class=onecontent>
<p class=title>Fujairah</p>
<p class=format>UIM X-Cat World Championship 2022</p>
</div>
<div class=timer><table border=0 cellspacing=0 cellpadding=0 width=100%><tr><td style=width:80%><p class=time>13:40&nbsp;-&nbsp;14:10</td><td style=width:20% rowspan=2 valign=top class=showornot><img src='images/transparent.png' width=80 height=27 ></p></td></tr><tr><td><div class='progress'><div class='progress-bar progress-bar-custom' role='progressbar' aria-valuenow='0' aria-valuemin='0' aria-valuemax='100'></div></div></tr></table> </li>
<li id='slider_2_item11' data-id='slider_2_item11' data-index='11' data-start='14' data-start-m='10' data-end='15' data-end-m='55' data-img='hk_sports/BS2.svg' data-desc='' parent='slider_2' category='Ligue 1 2021/22' live=''invalid=false>
<div class=onecontent>
<p class=title>Lille vs Monaco</p>
<p class=format>Ligue 1 2021/22</p>
</div>
<div class=timer><table border=0 cellspacing=0 cellpadding=0 width=100%><tr><td style=width:80%><p class=time>14:10&nbsp;-&nbsp;15:55</td><td style=width:20% rowspan=2 valign=top class=showornot><img src='images/transparent.png' width=80 height=27 ></p></td></tr><tr><td><div class='progress'><div class='progress-bar progress-bar-custom' role='progressbar' aria-valuenow='0' aria-valuemin='0' aria-valuemax='100'></div></div></tr></table> </li>
<li id='slider_2_item12' data-id='slider_2_item12' data-index='12' data-start='15' data-start-m='55' data-end='16' data-end-m='25' data-img='hk_sports/BS2.svg' data-desc='' parent='slider_2' category='MLS Show 2022' live=''invalid=false>
<div class=onecontent>
<p class=title>RD 10</p>
<p class=format>MLS Show 2022</p>
</div>
<div class=timer><table border=0 cellspacing=0 cellpadding=0 width=100%><tr><td style=width:80%><p class=time>15:55&nbsp;-&nbsp;16:25</td><td style=width:20% rowspan=2 valign=top class=showornot><img src='images/transparent.png' width=80 height=27 ></p></td></tr><tr><td><div class='progress'><div class='progress-bar progress-bar-custom' role='progressbar' aria-valuenow='0' aria-valuemin='0' aria-valuemax='100'></div></div></tr></table> </li>
<li id='slider_2_item13' data-id='slider_2_item13' data-index='13' data-start='16' data-start-m='25' data-end='16' data-end-m='55' data-img='hk_sports/BS2.svg' data-desc='' parent='slider_2' category='Mini Match - Ligue 1 2021/22' live=''invalid=false>
<div class=onecontent>
<p class=title>PSG vs Troyes</p>
<p class=format>Mini Match - Ligue 1 2021/22</p>
</div>
<div class=timer><table border=0 cellspacing=0 cellpadding=0 width=100%><tr><td style=width:80%><p class=time>16:25&nbsp;-&nbsp;16:55</td><td style=width:20% rowspan=2 valign=top class=showornot><img src='images/transparent.png' width=80 height=27 ></p></td></tr><tr><td><div class='progress'><div class='progress-bar progress-bar-custom' role='progressbar' aria-valuenow='0' aria-valuemin='0' aria-valuemax='100'></div></div></tr></table> </li>
<li id='slider_2_item14' data-id='slider_2_item14' data-index='14' data-start='16' data-start-m='55' data-end='18' data-end-m='55' data-img='hk_sports/BS2.svg' data-desc='' parent='slider_2' category='Ligue 1 2021/22' live='1'invalid=false>
<div class=onecontent>
<p class=title>Nice vs St Etienne</p>
<p class=format>Ligue 1 2021/22</p>
</div>
<div class=timer><table border=0 cellspacing=0 cellpadding=0 width=100%><tr><td style=width:80%><p class=time>16:55&nbsp;-&nbsp;18:55</td><td style=width:20% rowspan=2 valign=top class=showornot><img src='images/live.svg' class=image_live_css ></p></td></tr><tr><td><div class='progress'><div class='progress-bar progress-bar-custom' role='progressbar' aria-valuenow='0' aria-valuemin='0' aria-valuemax='100'></div></div></tr></table> </li>
<li id='slider_2_item15' data-id='slider_2_item15' data-index='15' data-start='18' data-start-m='55' data-end='21' data-end-m='00' data-img='hk_sports/BS2.svg' data-desc='' parent='slider_2' category='Ligue 1 2021/22' live='1'invalid=false>
<div class=onecontent>
<p class=title>Nantes vs Rennes</p>
<p class=format>Ligue 1 2021/22</p>
</div>
<div class=timer><table border=0 cellspacing=0 cellpadding=0 width=100%><tr><td style=width:80%><p class=time>18:55&nbsp;-&nbsp;21:00</td><td style=width:20% rowspan=2 valign=top class=showornot><img src='images/live.svg' class=image_live_css ></p></td></tr><tr><td><div class='progress'><div class='progress-bar progress-bar-custom' role='progressbar' aria-valuenow='0' aria-valuemin='0' aria-valuemax='100'></div></div></tr></table> </li>
<li id='slider_2_item16' data-id='slider_2_item16' data-index='16' data-start='21' data-start-m='00' data-end='21' data-end-m='30' data-img='hk_sports/BS2.svg' data-desc='' parent='slider_2' category='Mini Match - Ligue 1 2021/22' live=''invalid=false>
<div class=onecontent>
<p class=title>Lorient vs Marseille</p>
<p class=format>Mini Match - Ligue 1 2021/22</p>
</div>
<div class=timer><table border=0 cellspacing=0 cellpadding=0 width=100%><tr><td style=width:80%><p class=time>21:00&nbsp;-&nbsp;21:30</td><td style=width:20% rowspan=2 valign=top class=showornot><img src='images/transparent.png' width=80 height=27 ></p></td></tr><tr><td><div class='progress'><div class='progress-bar progress-bar-custom' role='progressbar' aria-valuenow='0' aria-valuemin='0' aria-valuemax='100'></div></div></tr></table> </li>
<li id='slider_2_item17' data-id='slider_2_item17' data-index='17' data-start='21' data-start-m='30' data-end='22' data-end-m='30' data-img='hk_sports/BS2.svg' data-desc='' parent='slider_2' category='Supercars Championship Highlights 2022' live=''invalid=false>
<div class=onecontent>
<p class=title>Bunnings Trade Perth Supernight Sat</p>
<p class=format>Supercars Championship Highlights 2022</p>
</div>
<div class=timer><table border=0 cellspacing=0 cellpadding=0 width=100%><tr><td style=width:80%><p class=time>21:30&nbsp;-&nbsp;22:30</td><td style=width:20% rowspan=2 valign=top class=showornot><img src='images/transparent.png' width=80 height=27 ></p></td></tr><tr><td><div class='progress'><div class='progress-bar progress-bar-custom' role='progressbar' aria-valuenow='0' aria-valuemin='0' aria-valuemax='100'></div></div></tr></table> </li>
<li id='slider_2_item18' data-id='slider_2_item18' data-index='18' data-start='22' data-start-m='30' data-end='00' data-end-m='20' data-img='hk_sports/BS2.svg' data-desc='' parent='slider_2' category='Ligue 1 2021/22' live=''invalid=false>
<div class=onecontent>
<p class=title>PSG vs Troyes</p>
<p class=format>Ligue 1 2021/22</p>
</div>
<div class=timer><table border=0 cellspacing=0 cellpadding=0 width=100%><tr><td style=width:80%><p class=time>22:30&nbsp;-&nbsp;00:20</td><td style=width:20% rowspan=2 valign=top class=showornot><img src='images/transparent.png' width=80 height=27 ></p></td></tr><tr><td><div class='progress'><div class='progress-bar progress-bar-custom' role='progressbar' aria-valuenow='0' aria-valuemin='0' aria-valuemax='100'></div></div></tr></table> </li>
<div><ul><li class=item_normal></li><li class=item_normal></li></ul> </ul></div>
</div>
<div class='col-xs-1 nextarrow col-sm-1 nextarrow col-md-1 nextarrow col-lg-1 nextarrow'>
<div class='centered'>
<img align=center width=15 height=15 src=images/nextarrow_en.svg style=cursor:pointer onclick=action('slider_2')>
</div>
</div>
</div>
<div class='row no-gutter' style='height:15px' id='ruler_channels_2'></div>
</div>
</div></div></div>
<div id="immobile" style="display:'none'"></div><div id="imtablet" style="display:'none'"></div><div id="imdesktop" style="display:'none'"></div>

File diff suppressed because it is too large Load Diff

View File

@@ -1,28 +0,0 @@
<script>
currenthour="13";
</script>
<div class=container>
<div class='row no-gutter'>
<div class='col-xs-12 col-sm-12 col-md-12 col-lg-12'>
</div></div><div class='row no-gutter'>
<div class='col-xs-12 col-sm-12 col-md-12 col-lg-12'>
<table width=100% border=0 class=day_table><tr><td><span id=day1t1 style=width:100% class=day_item><a href=javascript:selectday('day1');loaders('utctime.php?cdate=2022-05-08&offset=0&mins=00&category=sports&serviceidentity=beinsports.com',2)>Sun</a></span><span id=day1t2 style=width:100% class=day_item1><a href=javascript:selectday('day1');loaders('utctime.php?cdate=2022-05-08&offset=0&mins=00&category=sports&serviceidentity=beinsports.com',2)>08</a></div></td><td><span id=day2t1 style=width:100% class=day_item><a href=javascript:selectday('day2');loaders('utctime.php?cdate=2022-05-09&offset=0&mins=00&category=sports&serviceidentity=beinsports.com',2)>Mon</a></span><span id=day2t2 style=width:100% class=day_item1><a href=javascript:selectday('day2');loaders('utctime.php?cdate=2022-05-09&offset=0&mins=00&category=sports&serviceidentity=beinsports.com',2)>09</a></div></td><td><span id=day3t1 style=width:100% class=day_item><a href=javascript:selectday('day3');loaders('utctime.php?cdate=2022-05-10&offset=0&mins=00&category=sports&serviceidentity=beinsports.com',2)>Tue</a></span><span id=day3t2 style=width:100% class=day_item1><a href=javascript:selectday('day3');loaders('utctime.php?cdate=2022-05-10&offset=0&mins=00&category=sports&serviceidentity=beinsports.com',2)>10</a></div></td><td><span id=day4t1 style=width:100% class=day_item><a href=javascript:selectday('day4');loaders('utctime.php?cdate=2022-05-11&offset=0&mins=00&category=sports&serviceidentity=beinsports.com',2)>Wed</a></span><span id=day4t2 style=width:100% class=day_item1><a href=javascript:selectday('day4');loaders('utctime.php?cdate=2022-05-11&offset=0&mins=00&category=sports&serviceidentity=beinsports.com',2)>11</a></div></td><td><span id=day5t1 style=width:100% class=day_item><a href=javascript:selectday('day5');loaders('utctime.php?cdate=2022-05-12&offset=0&mins=00&category=sports&serviceidentity=beinsports.com',2)>Thu</a></span><span id=day5t2 style=width:100% class=day_item1><a href=javascript:selectday('day5');loaders('utctime.php?cdate=2022-05-12&offset=0&mins=00&category=sports&serviceidentity=beinsports.com',2)>12</a></div></td><td><span id=day6t1 style=width:100% class=day_item><a href=javascript:selectday('day6');loaders('utctime.php?cdate=2022-05-13&offset=0&mins=00&category=sports&serviceidentity=beinsports.com',2)>Fri</a></span><span id=day6t2 style=width:100% class=day_item1><a href=javascript:selectday('day6');loaders('utctime.php?cdate=2022-05-13&offset=0&mins=00&category=sports&serviceidentity=beinsports.com',2)>13</a></div></td><td><span id=day7t1 style=width:100% class=day_item><a href=javascript:selectday('day7');loaders('utctime.php?cdate=2022-05-14&offset=0&mins=00&category=sports&serviceidentity=beinsports.com',2)>Sat</a></span><span id=day7t2 style=width:100% class=day_item1><a href=javascript:selectday('day7');loaders('utctime.php?cdate=2022-05-14&offset=0&mins=00&category=sports&serviceidentity=beinsports.com',2)>14</a></div></td></table></div>
</div><div class='row no-gutter'>
<div class='col-xs-12 col-sm-12 col-md-12 col-lg-12'>
<div style='background-color:#d1d0de;margin:0px auto;text-align:center;display:flex;width:100%'><div id=left style=width:25px;background-color:red;height:50px;padding-top:13px;background-color:#d1d0de;><img src=ico/left.png onclick=ptime()></div><div id='slider_timer' class='slider_time'>
<ul id='timer'></ul></div><div id=left style=width:25px;background-color:red;height:50px;padding-top:13px;background-color:#d1d0de><img src=ico/right.png onclick=ntime()></div></div>
</div>
</div><div class='row no-gutter' style='height:10px'></div>
<div class='row no-gutter'>
<div class='col-xs-7 col-xs-offset-5 col-sm-4 col-sm-offset-8 col-md-2 col-md-offset-10 col-lg-2 col-lg-offset-10'>
<div style='position:absolute;font-size:18px;margin-top:5px'>Live Events</div><div class="onoffswitch" style='left:120px'><input onchange=showhides() type="checkbox" name="onoffswitch" class="onoffswitch-checkbox" id="myonoffswitch" tabindex="0"><label class="onoffswitch-label" for="myonoffswitch"><span class="onoffswitch-inner"></span><span class="onoffswitch-switch"></span></label></div></div></div><div class='row no-gutter' style='height:10px'></div>
<div class='row no-gutter'>
<div class='col-xs-12 col-sm-12 col-md-12 col-lg-12'>
<div id='loader_inner' style='display:none;margin:0 auto;width:100%;margin-top:5px;margin-bottom:5px;text-align:center'>
<div style='text-align:center;margin:auto 0;'><img src='images/ajax-loader.gif'></div>
</div>
</div>
</div>
</div><div class='container'><div class='row no-gutter' id='cta_row'><div id='cta' class='col-xs-12 col-sm-12 col-md-12 col-lg-12'><img style=cursor:pointer onclick=gobein('entertainment','e') class='img-responsive' src=images/entertain_cta_en.png></div><div></div>
</div>
<div id="immobile" style="display:'none'"></div><div id="imtablet" style="display:'none'"></div><div id="imdesktop" style="display:'none'"></div>

View File

@@ -1,73 +1,73 @@
const axios = require('axios')
const dayjs = require('dayjs')
const utc = require('dayjs/plugin/utc')
const timezone = require('dayjs/plugin/timezone')
const customParseFormat = require('dayjs/plugin/customParseFormat')
dayjs.extend(utc)
dayjs.extend(timezone)
dayjs.extend(customParseFormat)
module.exports = {
site: 'beinsports.com',
days: 2,
request: {
headers: {
'User-Agent':
'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/112.0.0.0 Safari/537.36'
}
},
url: function ({ date, channel }) {
return `https://www.beinsports.com/api/opta/tv-event?&startBefore=${date
.add(1, 'd')
.format('YYYY-MM-DDTHH:mm:ss.SSS')}Z&endAfter=${date.format(
'YYYY-MM-DDTHH:mm:ss.SSS'
)}Z&channelIds=${channel.site_id}`
},
parser: function ({ content }) {
let programs = []
const items = parseItems(content)
if (!items.length == 0) {
items.forEach(item => {
const start = dayjs.utc(item.startDate)
const stop = dayjs.utc(item.endDate)
programs.push({
title: item.title,
description: item.description,
start,
stop
})
})
}
return programs
},
async channels({ region, lang }) {
const data = await axios
.get(`https://www.beinsports.com/api/opta/tv-channel?region=${lang}-${region}`, this.request)
.then(r => r.data)
.catch(console.log)
return data.rows.map(item => {
return {
lang,
site_id: item.id,
name: item.name
}
})
}
}
function parseItems(content) {
let data
try {
data = JSON.parse(content)
} catch {
return []
}
if (!data || !data['rows']) {
return []
}
return data.rows
}
const axios = require('axios')
const dayjs = require('dayjs')
const utc = require('dayjs/plugin/utc')
const timezone = require('dayjs/plugin/timezone')
const customParseFormat = require('dayjs/plugin/customParseFormat')
dayjs.extend(utc)
dayjs.extend(timezone)
dayjs.extend(customParseFormat)
module.exports = {
site: 'beinsports.com',
days: 2,
request: {
headers: {
'User-Agent':
'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/112.0.0.0 Safari/537.36'
}
},
url: function ({ date, channel }) {
return `https://www.beinsports.com/api/opta/tv-event?&startBefore=${date
.add(1, 'd')
.format('YYYY-MM-DDTHH:mm:ss.SSS')}Z&endAfter=${date.format(
'YYYY-MM-DDTHH:mm:ss.SSS'
)}Z&channelIds=${channel.site_id}`
},
parser: function ({ content }) {
let programs = []
const items = parseItems(content)
if (!items.length == 0) {
items.forEach(item => {
const start = dayjs.utc(item.startDate)
const stop = dayjs.utc(item.endDate)
programs.push({
title: item.title,
description: item.description,
start,
stop
})
})
}
return programs
},
async channels({ region, lang }) {
const data = await axios
.get(`https://www.beinsports.com/api/opta/tv-channel?region=${lang}-${region}`, this.request)
.then(r => r.data)
.catch(console.log)
return data.rows.map(item => {
return {
lang,
site_id: item.id,
name: item.name
}
})
}
}
function parseItems(content) {
let data
try {
data = JSON.parse(content)
} catch {
return []
}
if (!data || !data['rows']) {
return []
}
return data.rows
}

View File

@@ -1,43 +1,43 @@
const { parser, url } = require('./beinsports.com.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('2023-10-22T00:00:00.000', '"YYYY-MM-DDTHH:mm:ss.SSS').startOf('d')
const channel = { site_id: 'C244C48D-3B54-406A-94C9-D63B16318267', xmltv_id: 'beINSportsUSA.us' }
it('can generate valid url', () => {
const result = url({ date, channel })
expect(result).toBe(
'https://www.beinsports.com/api/opta/tv-event?&startBefore=2023-10-23T00:00:00.000Z&endAfter=2023-10-22T00:00:00.000Z&channelIds=C244C48D-3B54-406A-94C9-D63B16318267'
)
})
const content =
'{"count":1,"rows":[{"data":{"eventId":"2028126","eventDate":"2023-10-21T10:30:00","utcEventDate":"2023-10-20T23:30:00","duration":"90","programId":"106230","programTypeId":"5","title":"ATP 500"},"duration":5400000,"title":"Tokyo Day 5 QF 2","startDate":"2023-10-20T23:30:00.000Z","endDate":"2023-10-21T01:00:00.000Z","description":"Exclusive coverage of the 2023 ATP Tour on beIN SPORTS","channelId":"164C0EDA-EBCE-4AA6-9DDA-D603E0948B9F"}]}'
it('can parse response', () => {
const result = parser({ content, channel, date }).map(p => {
p.start = p.start.toJSON()
p.stop = p.stop.toJSON()
return p
})
expect(result).toMatchObject([
{
start: '2023-10-20T23:30:00.000Z',
stop: '2023-10-21T01:00:00.000Z',
title: 'Tokyo Day 5 QF 2',
description: 'Exclusive coverage of the 2023 ATP Tour on beIN SPORTS'
}
])
})
it('can handle empty guide', () => {
const result = parser({
content: '[]'
})
expect(result).toMatchObject([])
})
const { parser, url } = require('./beinsports.com.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')
dayjs.extend(customParseFormat)
dayjs.extend(utc)
const date = dayjs.utc('2023-10-22T00:00:00.000', '"YYYY-MM-DDTHH:mm:ss.SSS').startOf('d')
const channel = { site_id: 'C244C48D-3B54-406A-94C9-D63B16318267', xmltv_id: 'beINSportsUSA.us' }
it('can generate valid url', () => {
const result = url({ date, channel })
expect(result).toBe(
'https://www.beinsports.com/api/opta/tv-event?&startBefore=2023-10-23T00:00:00.000Z&endAfter=2023-10-22T00:00:00.000Z&channelIds=C244C48D-3B54-406A-94C9-D63B16318267'
)
})
it('can parse response', () => {
const content = fs.readFileSync(path.resolve(__dirname, '__data__/content.json'))
const result = parser({ content, channel, date }).map(p => {
p.start = p.start.toJSON()
p.stop = p.stop.toJSON()
return p
})
expect(result).toMatchObject([
{
start: '2023-10-20T23:30:00.000Z',
stop: '2023-10-21T01:00:00.000Z',
title: 'Tokyo Day 5 QF 2',
description: 'Exclusive coverage of the 2023 ATP Tour on beIN SPORTS'
}
])
})
it('can handle empty guide', () => {
const result = parser({
content: '[]'
})
expect(result).toMatchObject([])
})

View File

@@ -1,6 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<channels>
<channel site="beinsports.com" lang="en" xmltv_id="beINSports2.qa@Australia" site_id="63A30D9C-609D-4A30-8730-2CA391DF287A">beIN SPORTS 2</channel>
<channel site="beinsports.com" lang="en" xmltv_id="beINSports1.qa@Australia" site_id="164C0EDA-EBCE-4AA6-9DDA-D603E0948B9F">beIN SPORTS 1</channel>
<channel site="beinsports.com" lang="en" xmltv_id="beINSports3.qa@Australia" site_id="2E8A6222-8D90-4291-81E3-AF2F72557746">beIN SPORTS 3</channel>
</channels>
<?xml version="1.0" encoding="UTF-8"?>
<channels>
<channel site="beinsports.com" lang="en" xmltv_id="" site_id="C938A2D0-375A-4876-B05D-08EE29D33B07">beIN SPORTS XTRA</channel>
<channel site="beinsports.com" lang="en" xmltv_id="beINSports1.qa@Australia" site_id="164C0EDA-EBCE-4AA6-9DDA-D603E0948B9F">beIN SPORTS 1</channel>
<channel site="beinsports.com" lang="en" xmltv_id="beINSports2.qa@Australia" site_id="63A30D9C-609D-4A30-8730-2CA391DF287A">beIN SPORTS 2</channel>
<channel site="beinsports.com" lang="en" xmltv_id="beINSports3.qa@Australia" site_id="2E8A6222-8D90-4291-81E3-AF2F72557746">beIN SPORTS 3</channel>
</channels>

View File

@@ -1,13 +1,13 @@
<?xml version="1.0" encoding="UTF-8"?>
<channels>
<channel site="beinsports.com" lang="fr" xmltv_id="beINSports1.qa@France" site_id="66265DD1-D2AA-4A89-9412-2455186E90ED">beIN SPORTS 1</channel>
<channel site="beinsports.com" lang="fr" xmltv_id="beINSports2.qa@France" site_id="1E886E98-3104-4D8E-A97F-734B23108E8A">beIN SPORTS 2</channel>
<channel site="beinsports.com" lang="fr" xmltv_id="beINSports3.qa@France" site_id="6DB008B8-66DA-423E-805D-616211D4B174">beIN SPORTS 3</channel>
<channel site="beinsports.com" lang="fr" xmltv_id="beINSportsMax4.qa@France" site_id="EF7E0369-CFD9-4607-9238-EC483E6D58A3">beIN SPORTS MAX 4</channel>
<channel site="beinsports.com" lang="fr" xmltv_id="beINSportsMax5.qa@France" site_id="A4425E44-B004-4137-ACB4-458BA4D710F8">beIN SPORTS MAX 5</channel>
<channel site="beinsports.com" lang="fr" xmltv_id="beINSportsMax6.qa@France" site_id="BBD26D71-897D-4799-87A1-A87120130D48">beIN SPORTS MAX 6</channel>
<channel site="beinsports.com" lang="fr" xmltv_id="beINSportsMax7.qa@France" site_id="9B4708C5-F5F0-452A-8157-4661C30FAE6A">beIN SPORTS MAX 7</channel>
<channel site="beinsports.com" lang="fr" xmltv_id="beINSportsMax8.qa@France" site_id="76D2430C-8BCB-41BD-A1DE-FBA0D58C5E8A">beIN SPORTS MAX 8</channel>
<channel site="beinsports.com" lang="fr" xmltv_id="beINSportsMax9.qa@France" site_id="FB208953-1C70-4D1E-B918-103AB02AB181">beIN SPORTS MAX 9</channel>
<channel site="beinsports.com" lang="fr" xmltv_id="beINSportsMax10.qa@France" site_id="6F425028-14F0-4E38-B776-71A9DB3F3493">beIN SPORTS MAX 10</channel>
</channels>
<?xml version="1.0" encoding="UTF-8"?>
<channels>
<channel site="beinsports.com" lang="fr" xmltv_id="beINSports1.qa@France" site_id="66265DD1-D2AA-4A89-9412-2455186E90ED">beIN SPORTS 1</channel>
<channel site="beinsports.com" lang="fr" xmltv_id="beINSports2.qa@France" site_id="1E886E98-3104-4D8E-A97F-734B23108E8A">beIN SPORTS 2</channel>
<channel site="beinsports.com" lang="fr" xmltv_id="beINSports3.qa@France" site_id="6DB008B8-66DA-423E-805D-616211D4B174">beIN SPORTS 3</channel>
<channel site="beinsports.com" lang="fr" xmltv_id="beINSportsMax4.qa@France" site_id="EF7E0369-CFD9-4607-9238-EC483E6D58A3">beIN SPORTS MAX 4</channel>
<channel site="beinsports.com" lang="fr" xmltv_id="beINSportsMax5.qa@France" site_id="A4425E44-B004-4137-ACB4-458BA4D710F8">beIN SPORTS MAX 5</channel>
<channel site="beinsports.com" lang="fr" xmltv_id="beINSportsMax6.qa@France" site_id="BBD26D71-897D-4799-87A1-A87120130D48">beIN SPORTS MAX 6</channel>
<channel site="beinsports.com" lang="fr" xmltv_id="beINSportsMax7.qa@France" site_id="9B4708C5-F5F0-452A-8157-4661C30FAE6A">beIN SPORTS MAX 7</channel>
<channel site="beinsports.com" lang="fr" xmltv_id="beINSportsMax8.qa@France" site_id="76D2430C-8BCB-41BD-A1DE-FBA0D58C5E8A">beIN SPORTS MAX 8</channel>
<channel site="beinsports.com" lang="fr" xmltv_id="beINSportsMax9.qa@France" site_id="FB208953-1C70-4D1E-B918-103AB02AB181">beIN SPORTS MAX 9</channel>
<channel site="beinsports.com" lang="fr" xmltv_id="beINSportsMax10.qa@France" site_id="6F425028-14F0-4E38-B776-71A9DB3F3493">beIN SPORTS MAX 10</channel>
</channels>

Some files were not shown because too many files have changed in this diff Show More