Merge pull request #16963 from iptv-org/patch-2025.03.2

Patch 2025.03.2
This commit is contained in:
PopeyeTheSai10r 2025-03-30 14:07:48 -07:00 committed by GitHub
commit 58663494bd
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
25 changed files with 40674 additions and 3989 deletions

View file

@ -80,6 +80,27 @@ body:
validations: validations:
required: true required: true
- type: input
id: launched
attributes:
label: Launched (optional)
description: Launch date of the channel (`YYYY-MM-DD`)
placeholder: '2016-07-28'
- type: input
id: closed
attributes:
label: Closed (optional)
description: Date on which the channel closed (`YYYY-MM-DD`)
placeholder: '2020-05-31'
- type: input
id: replaced_by
attributes:
label: Replaced By (optional)
description: The ID of the channel that this channel was replaced by
placeholder: 'CCTV1.cn'
- type: input - type: input
id: website id: website
attributes: attributes:
@ -160,27 +181,6 @@ body:
validations: validations:
required: true required: true
- type: input
id: launched
attributes:
label: Launched (optional)
description: Launch date of the feed (`YYYY-MM-DD`)
placeholder: '2016-07-28'
- type: input
id: closed
attributes:
label: Closed (optional)
description: Date on which the feed closed (`YYYY-MM-DD`)
placeholder: '2020-05-31'
- type: input
id: replaced_by
attributes:
label: Replaced By (optional)
description: "ID of the channel and feed this feed was replaced with. Possible values: `<channel_id>` or `<channel_id>@<feed_id>`"
placeholder: 'CCTV1.cn@SD'
- type: textarea - type: textarea
attributes: attributes:
label: Notes label: Notes

View file

@ -83,6 +83,27 @@ body:
- 'FALSE' - 'FALSE'
- 'TRUE' - 'TRUE'
- type: input
id: launched
attributes:
label: Launched (optional)
description: Launch date of the channel (`YYYY-MM-DD`)
placeholder: '2016-07-28'
- type: input
id: closed
attributes:
label: Closed (optional)
description: Date on which the channel closed (`YYYY-MM-DD`)
placeholder: '2020-05-31'
- type: input
id: replaced_by
attributes:
label: Replaced By (optional)
description: The ID of the channel that this channel was replaced by
placeholder: 'CCTV1.cn'
- type: input - type: input
id: website id: website
attributes: attributes:

View file

@ -86,27 +86,6 @@ body:
validations: validations:
required: true required: true
- type: input
id: launched
attributes:
label: Launched (optional)
description: Launch date of the feed (`YYYY-MM-DD`)
placeholder: '2016-07-28'
- type: input
id: closed
attributes:
label: Closed (optional)
description: Date on which the feed closed (`YYYY-MM-DD`)
placeholder: '2020-05-31'
- type: input
id: replaced_by
attributes:
label: Replaced By (optional)
description: "ID of the channel and feed this feed was replaced with. Possible values: `<channel_id>` or `<channel_id>@<feed_id>`"
placeholder: 'CCTV1.cn@SD'
- type: textarea - type: textarea
attributes: attributes:
label: Notes label: Notes

View file

@ -82,27 +82,6 @@ body:
- '360p' - '360p'
- '240p' - '240p'
- type: input
id: launched
attributes:
label: Launched
description: Launch date of the feed (`YYYY-MM-DD`)
placeholder: '2016-07-28'
- type: input
id: closed
attributes:
label: Closed
description: Date on which the feed closed (`YYYY-MM-DD`)
placeholder: '2020-05-31'
- type: input
id: replaced_by
attributes:
label: Replaced By
description: "ID of the channel and feed this feed was replaced with. Possible values: `<channel_id>` or `<channel_id>@<feed_id>`"
placeholder: 'CCTV1.cn@SD'
- type: textarea - type: textarea
attributes: attributes:
label: Notes label: Notes

View file

@ -35,7 +35,7 @@ To remove a channel fill out this [form](https://github.com/iptv-org/database/is
### How to mark a channel as closed? ### How to mark a channel as closed?
To do this, you need to mark the main feed of the channel as closed. [How to mark a feed as closed?](#how-to-mark-a-feed-as-closed?) To do this, use this [form](https://github.com/iptv-org/database/issues/new?assignees=&labels=channels%3Aedit&projects=&template=2_channels_edit.yml&title=Edit%3A+). In it, in the "Closed" field you will need to specify at least the approximate date of closing. And there you can also specify the ID of the channel that replaced it, if necessary.
### How to add a new feed to the database? ### How to add a new feed to the database?
@ -51,13 +51,7 @@ _Option 2:_ Edit the [data/feeds.csv](data/feeds.csv) file using a text editor a
### How to remove a feed from the database? ### How to remove a feed from the database?
To remove a feed just fill out this [form](https://github.com/iptv-org/database/issues/new?assignees=&labels=feeds%3Aremove&projects=&template=6_feeds_remove.yml&title=Remove%3A+). Just fill out this [form](https://github.com/iptv-org/database/issues/new?assignees=&labels=feeds%3Aremove&projects=&template=6_feeds_remove.yml&title=Remove%3A+).
**NOTE:** Ceased broadcasting is no reason to remove a feed from the database. In this case you just need to mark the feed as closed.
### How to mark a feed as closed?
To do this, use this [form](https://github.com/iptv-org/database/issues/new?assignees=&labels=feeds%3Aedit&projects=&template=5_feeds_edit.yml&title=Edit%3A+). In it, in the "Closed" field you will need to specify at least the approximate date of broadcast termination. And there you can also specify the ID of the channel and feed that replaced it, if necessary.
## Data Scheme ## Data Scheme
@ -77,9 +71,9 @@ To do this, use this [form](https://github.com/iptv-org/database/issues/new?assi
| languages | [DEPRECATED] List of languages in which the channel is broadcast separated by `;`. A list of all supported languages and their codes can be found in [data/languages.csv](data/languages.csv). | Required | `zho;eng` | | languages | [DEPRECATED] List of languages in which the channel is broadcast separated by `;`. A list of all supported languages and their codes can be found in [data/languages.csv](data/languages.csv). | Required | `zho;eng` |
| categories | List of categories to which this channel belongs separated by `;`. A list of all supported categories can be found in [data/categories.csv](data/categories.csv). | Optional | `animation;kids` | | categories | List of categories to which this channel belongs separated by `;`. A list of all supported categories can be found in [data/categories.csv](data/categories.csv). | Optional | `animation;kids` |
| is_nsfw | Indicates whether the channel broadcasts adult content (`TRUE` or `FALSE`). | Required | `FALSE` | | is_nsfw | Indicates whether the channel broadcasts adult content (`TRUE` or `FALSE`). | Required | `FALSE` |
| launched | [DEPRECATED] Launch date of the channel (`YYYY-MM-DD`). | Optional | `2016-07-28` | | launched | Launch date of the channel (`YYYY-MM-DD`). | Optional | `2016-07-28` |
| closed | [DEPRECATED] Date on which the channel closed (`YYYY-MM-DD`). | Optional | `2020-05-31` | | closed | Date on which the channel closed (`YYYY-MM-DD`). | Optional | `2020-05-31` |
| replaced_by | [DEPRECATED] The ID of the channel that this channel was replaced by. | Optional | `CCTV1.cn` | | replaced_by | The ID of the channel that this channel was replaced by. | Optional | `CCTV1.cn` |
| website | Official website URL. | Optional | `http://www.ahtv.cn/` | | website | Official website URL. | Optional | `http://www.ahtv.cn/` |
| logo | Logo URL. Only URL with [HTTPS](https://ru.wikipedia.org/wiki/HTTPS) protocol are allowed. Supported image types: `PNG`, `JPEG`. Max size: 512x512 pixels. The link should not be [geo-blocked](https://en.wikipedia.org/wiki/Geo-blocking). May contain any characters except `,` and `"`. | Required | `https://example.com/logo.png` | | logo | Logo URL. Only URL with [HTTPS](https://ru.wikipedia.org/wiki/HTTPS) protocol are allowed. Supported image types: `PNG`, `JPEG`. Max size: 512x512 pixels. The link should not be [geo-blocked](https://en.wikipedia.org/wiki/Geo-blocking). May contain any characters except `,` and `"`. | Required | `https://example.com/logo.png` |
@ -95,9 +89,6 @@ To do this, use this [form](https://github.com/iptv-org/database/issues/new?assi
| timezones | List of timezones in which the feed is broadcast separated by `;`. A list of all supported timezones and their codes can be found in [data/timezones.csv](data/timezones.csv). | Required | `America/Los_Angeles` | | timezones | List of timezones in which the feed is broadcast separated by `;`. A list of all supported timezones and their codes can be found in [data/timezones.csv](data/timezones.csv). | Required | `America/Los_Angeles` |
| languages | List of languages in which the feed is broadcast separated by `;`. A list of all supported languages and their codes can be found in [data/languages.csv](data/languages.csv). | Required | `eng;spa` | | languages | List of languages in which the feed is broadcast separated by `;`. A list of all supported languages and their codes can be found in [data/languages.csv](data/languages.csv). | Required | `eng;spa` |
| video_format | Video format of the feed. | Required | `1080i` | | video_format | Video format of the feed. | Required | `1080i` |
| launched | Launch date of the feed (`YYYY-MM-DD`). | Optional | `2016-07-28` |
| closed | Date on which the feed ceased broadcasting (`YYYY-MM-DD`). | Optional | `2020-05-31` |
| replaced_by | ID of the channel and feed this feed was replaced with. Possible values: `<channel_id>` or `<channel_id>@<feed_id>`. | Optional | `HBO.us@East` |
### categories ### categories

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

View file

@ -116,10 +116,7 @@ async function editFeeds() {
broadcast_area: data.getArray('broadcast_area'), broadcast_area: data.getArray('broadcast_area'),
timezones: data.getArray('timezones'), timezones: data.getArray('timezones'),
languages: data.getArray('languages'), languages: data.getArray('languages'),
video_format: data.getString('video_format'), video_format: data.getString('video_format')
launched: data.getString('launched'),
closed: data.getString('closed'),
replaced_by: data.getString('replaced_by')
}) })
found.merge(updated) found.merge(updated)
@ -169,10 +166,7 @@ async function addFeeds() {
broadcast_area: data.getArray('broadcast_area'), broadcast_area: data.getArray('broadcast_area'),
timezones: data.getArray('timezones'), timezones: data.getArray('timezones'),
languages: data.getArray('languages'), languages: data.getArray('languages'),
video_format: data.getString('video_format'), video_format: data.getString('video_format')
launched: data.getString('launched'),
closed: data.getString('closed'),
replaced_by: data.getString('replaced_by')
}) })
) )
@ -381,12 +375,6 @@ function onFeedIdChange(channelId: string, feedId: string, newFeedId: string) {
channel.replaced_by = `${channelId}@${newFeedId}` channel.replaced_by = `${channelId}@${newFeedId}`
} }
}) })
feeds.forEach((feed: Feed) => {
if (feed.replaced_by && feed.replaced_by === `${channelId}@${feedId}`) {
feed.replaced_by = `${channelId}@${newFeedId}`
}
})
} }
function onFeedNewMain(channelId: string, feedId: string) { function onFeedNewMain(channelId: string, feedId: string) {
@ -403,12 +391,6 @@ function onFeedRemoval(channelId: string, feedId: string) {
channel.replaced_by = '' channel.replaced_by = ''
} }
}) })
feeds.forEach((feed: Feed) => {
if (feed.replaced_by && feed.replaced_by === `${channelId}@${feedId}`) {
feed.replaced_by = ''
}
})
} }
function onChannelIdChange(channelId: string, newChannelId: string) { function onChannelIdChange(channelId: string, newChannelId: string) {
@ -422,10 +404,6 @@ function onChannelIdChange(channelId: string, newChannelId: string) {
if (feed.channel === channelId) { if (feed.channel === channelId) {
feed.channel = newChannelId feed.channel = newChannelId
} }
if (feed.replaced_by && feed.replaced_by.includes(channelId)) {
feed.replaced_by = feed.replaced_by.replace(channelId, newChannelId)
}
}) })
blocklist.forEach((blocked: Blocked) => { blocklist.forEach((blocked: Blocked) => {
@ -443,9 +421,4 @@ function onChannelRemoval(channelId: string) {
}) })
feeds.remove((feed: Feed) => feed.channel === channelId) feeds.remove((feed: Feed) => feed.channel === channelId)
feeds.forEach((feed: Feed) => {
if (feed.replaced_by && feed.replaced_by.includes(channelId)) {
feed.replaced_by = ''
}
})
} }

View file

@ -41,25 +41,39 @@ async function main() {
const data = await parser.parse(csv) const data = await parser.parse(csv)
const filename = file.name() const filename = file.name()
let grouped
switch (filename) { switch (filename) {
case 'feeds': case 'feeds':
grouped = data.keyBy(item => item.channel + item.id) buffer.set(
'feeds',
data.keyBy(item => item.channel + item.id)
)
buffer.set(
'feedsByChannel',
data.filter(item => item.is_main).keyBy(item => item.channel)
)
break break
case 'blocklist': case 'blocklist':
grouped = data.keyBy(item => item.channel + item.ref) buffer.set(
'blocklist',
data.keyBy(item => item.channel + item.ref)
)
break break
case 'categories': case 'categories':
case 'channels': case 'channels':
case 'timezones': case 'timezones':
grouped = data.keyBy(item => item.id) buffer.set(
filename,
data.keyBy(item => item.id)
)
break break
default: default:
grouped = data.keyBy(item => item.code) buffer.set(
filename,
data.keyBy(item => item.code)
)
break break
} }
buffer.set(filename, grouped)
files.set(filename, data) files.set(filename, data)
} }
@ -78,6 +92,7 @@ async function main() {
fileErrors = fileErrors.concat(findDuplicatesBy(rowsCopy, ['id'])) fileErrors = fileErrors.concat(findDuplicatesBy(rowsCopy, ['id']))
for (const [i, row] of rowsCopy.entries()) { for (const [i, row] of rowsCopy.entries()) {
fileErrors = fileErrors.concat(validateChannelId(row, i)) fileErrors = fileErrors.concat(validateChannelId(row, i))
fileErrors = fileErrors.concat(validateMainFeed(row, i))
fileErrors = fileErrors.concat(validateChannelBroadcastArea(row, i)) fileErrors = fileErrors.concat(validateChannelBroadcastArea(row, i))
fileErrors = fileErrors.concat(validateReplacedBy(row, i)) fileErrors = fileErrors.concat(validateReplacedBy(row, i))
fileErrors = fileErrors.concat( fileErrors = fileErrors.concat(
@ -96,11 +111,10 @@ async function main() {
break break
case 'feeds': case 'feeds':
fileErrors = fileErrors.concat(findDuplicatesBy(rowsCopy, ['channel', 'id'])) fileErrors = fileErrors.concat(findDuplicatesBy(rowsCopy, ['channel', 'id']))
fileErrors = fileErrors.concat(validateMainFeeds(rowsCopy)) fileErrors = fileErrors.concat(findDuplicateMainFeeds(rowsCopy))
for (const [i, row] of rowsCopy.entries()) { for (const [i, row] of rowsCopy.entries()) {
fileErrors = fileErrors.concat(validateChannel(row.channel, i)) fileErrors = fileErrors.concat(validateChannel(row.channel, i))
fileErrors = fileErrors.concat(validateTimezones(row, i)) fileErrors = fileErrors.concat(validateTimezones(row, i))
fileErrors = fileErrors.concat(validateReplacedBy(row, i))
} }
break break
case 'blocklist': case 'blocklist':
@ -232,6 +246,20 @@ function validateChannel(channelId: string, i: number) {
return errors return errors
} }
function validateMainFeed(row: { [key: string]: string }, i: number) {
const errors = new Collection()
const feedsByChannel = buffer.get('feedsByChannel')
if (feedsByChannel.missing(row.id)) {
errors.push({
line: i + 2,
message: `"${row.id}" channel does not have a main feed`
})
}
return errors
}
function findDuplicatesBy(rows: { [key: string]: string }[], keys: string[]) { function findDuplicatesBy(rows: { [key: string]: string }[], keys: string[]) {
const errors = new Collection() const errors = new Collection()
const buffer = new Dictionary() const buffer = new Dictionary()
@ -252,7 +280,7 @@ function findDuplicatesBy(rows: { [key: string]: string }[], keys: string[]) {
return errors return errors
} }
function validateMainFeeds(rows: { [key: string]: string }[]) { function findDuplicateMainFeeds(rows: { [key: string]: string }[]) {
const errors = new Collection() const errors = new Collection()
const buffer = new Dictionary() const buffer = new Dictionary()

View file

@ -7,9 +7,6 @@ type FeedProps = {
timezones?: string[] timezones?: string[]
languages?: string[] languages?: string[]
video_format?: string video_format?: string
launched?: string
closed?: string
replaced_by?: string
} }
export class Feed { export class Feed {
@ -21,9 +18,6 @@ export class Feed {
timezones: string[] timezones: string[]
languages: string[] languages: string[]
video_format?: string video_format?: string
launched?: string
closed?: string
replaced_by?: string
constructor({ constructor({
channel, channel,
@ -33,10 +27,7 @@ export class Feed {
broadcast_area, broadcast_area,
timezones, timezones,
languages, languages,
video_format, video_format
launched,
closed,
replaced_by
}: FeedProps) { }: FeedProps) {
this.channel = channel this.channel = channel
this.id = id this.id = id
@ -46,9 +37,6 @@ export class Feed {
this.timezones = timezones || [] this.timezones = timezones || []
this.languages = languages || [] this.languages = languages || []
this.video_format = video_format this.video_format = video_format
this.launched = launched
this.closed = closed
this.replaced_by = replaced_by
} }
data() { data() {

View file

@ -32,10 +32,5 @@ export default {
), ),
video_format: Joi.string() video_format: Joi.string()
.regex(/^\d+(i|p)$/) .regex(/^\d+(i|p)$/)
.allow(null),
launched: Joi.date().format('YYYY-MM-DD').raw().allow(null),
closed: Joi.date().format('YYYY-MM-DD').raw().allow(null).greater(Joi.ref('launched')),
replaced_by: Joi.string()
.regex(/^[A-Za-z0-9]+\.[a-z]{2}($|@[A-Za-z0-9]+$)/)
.allow(null) .allow(null)
} }

View file

@ -1 +1 @@
[{"channel":"002RadioTV.do","id":"SD","name":"SD","is_main":true,"broadcast_area":["c/DO"],"timezones":["America/Santo_Domingo"],"languages":["spa"],"video_format":"480i","launched":null,"closed":null,"replaced_by":null},{"channel":"M5.hu","id":"SD","name":"SD","is_main":false,"broadcast_area":["c/DO"],"timezones":["America/Santo_Domingo"],"languages":["spa"],"video_format":"480i","launched":null,"closed":"2021-01-01","replaced_by":"002RadioTV.do@SD"}] [{"channel":"002RadioTV.do","id":"SD","name":"SD","is_main":true,"broadcast_area":["c/DO"],"timezones":["America/Santo_Domingo"],"languages":["spa"],"video_format":"480i"},{"channel":"M5.hu","id":"SD","name":"SD","is_main":false,"broadcast_area":["c/DO"],"timezones":["America/Santo_Domingo"],"languages":["spa"],"video_format":"480i"}]

View file

@ -1,8 +1,8 @@
id,name,alt_names,network,owners,country,subdivision,city,broadcast_area,languages,categories,is_nsfw,launched,closed,replaced_by,website,logo id,name,alt_names,network,owners,country,subdivision,city,broadcast_area,languages,categories,is_nsfw,launched,closed,replaced_by,website,logo
0TV.dk,0-TV,,,,DK,,København,c/DK,dan,general,FALSE,,,,https://0-tv.dk/,https://i.imgur.com/aR5q6mA.png 0TV.dk,0-TV,,,,DK,,København,c/DK,dan,general,FALSE,,,,https://0-tv.dk/,https://i.imgur.com/aR5q6mA.png
1000xHoraTV.uy,1000xHora TV,,,,UY,,Montevideo,c/UY,spa,auto,FALSE,,,M5.hu@HD,https://www.1000xhoratv.com/,https://i.imgur.com/wP3bbYr.png 1000xHoraTV.uy,1000xHora TV,,,,UY,,Montevideo,c/UY,spa,auto,FALSE,2020-01-01,2021-01-01,M5.hu@HD,https://www.1000xhoratv.com/,https://i.imgur.com/wP3bbYr.png
beINMoviesTurk.tr,beIN Movies Turk,beIN Movies Türk,BBC,Gazprom Media,TR,US-CA,London,c/TR,tur,movies,FALSE,1979-05-16,1980-05-16,M5.hu,http://www.digiturk.com.tr/,https://i.imgur.com/nw8Sa2z.png beINMoviesTurk.tr,beIN Movies Turk,beIN Movies Türk,BBC,Gazprom Media,TR,US-CA,London,c/TR,tur,movies,FALSE,1979-05-16,1980-05-16,M5.hu,http://www.digiturk.com.tr/,https://i.imgur.com/nw8Sa2z.png
M5.hu,M5,,,Duna Médiaszolgáltató Nonprofit Zrt.,HU,,,c/HU,hun,,TRUE,,,beINMoviesTurk.tr,https://www.mediaklikk.hu/m5/,https://i.imgur.com/y21wFd0.png M5.hu,M5,,,Duna Médiaszolgáltató Nonprofit Zrt.,HU,,,c/HU,hun,,TRUE,2020-01-01,,0TV.dk@SD,https://www.mediaklikk.hu/m5/,https://i.imgur.com/y21wFd0.png
WenzhouEconomicandEducation.cn,Wenzhou Economic and Education,,,,CN,,Wenzhou,c/CN,zho,science,FALSE,,,,,https://www.tvchinese.net/uploads/tv/wzjjkj.jpg WenzhouEconomicandEducation.cn,Wenzhou Economic and Education,,,,CN,,Wenzhou,c/CN,zho,science,FALSE,,,,,https://www.tvchinese.net/uploads/tv/wzjjkj.jpg
YiwuBusinessChannel.cn,Yiwu Business Channel,,,,CN,,,c/CN,zho,business,FALSE,,,,,https://www.tvchinese.net/uploads/tv/yiwutv.jpg YiwuBusinessChannel.cn,Yiwu Business Channel,,,,CN,,,c/CN,zho,business,FALSE,,,,,https://www.tvchinese.net/uploads/tv/yiwutv.jpg
YiwuNewsIntegratedChannel.cn,Yiwu News Integrated Channel,,,,CN,,,c/CN,zho,news,FALSE,,,,,https://www.tvchinese.net/uploads/tv/yiwutv.jpg YiwuNewsIntegratedChannel.cn,Yiwu News Integrated Channel,,,,CN,,,c/CN,zho,news,FALSE,,,,,https://www.tvchinese.net/uploads/tv/yiwutv.jpg
1 id name alt_names network owners country subdivision city broadcast_area languages categories is_nsfw launched closed replaced_by website logo
2 0TV.dk 0-TV DK København c/DK dan general FALSE https://0-tv.dk/ https://i.imgur.com/aR5q6mA.png
3 1000xHoraTV.uy 1000xHora TV UY Montevideo c/UY spa auto FALSE 2020-01-01 2021-01-01 M5.hu@HD https://www.1000xhoratv.com/ https://i.imgur.com/wP3bbYr.png
4 beINMoviesTurk.tr beIN Movies Turk beIN Movies Türk BBC Gazprom Media TR US-CA London c/TR tur movies FALSE 1979-05-16 1980-05-16 M5.hu http://www.digiturk.com.tr/ https://i.imgur.com/nw8Sa2z.png
5 M5.hu M5 Duna Médiaszolgáltató Nonprofit Zrt. HU c/HU hun TRUE 2020-01-01 beINMoviesTurk.tr 0TV.dk@SD https://www.mediaklikk.hu/m5/ https://i.imgur.com/y21wFd0.png
6 WenzhouEconomicandEducation.cn Wenzhou Economic and Education CN Wenzhou c/CN zho science FALSE https://www.tvchinese.net/uploads/tv/wzjjkj.jpg
7 YiwuBusinessChannel.cn Yiwu Business Channel CN c/CN zho business FALSE https://www.tvchinese.net/uploads/tv/yiwutv.jpg
8 YiwuNewsIntegratedChannel.cn Yiwu News Integrated Channel CN c/CN zho news FALSE https://www.tvchinese.net/uploads/tv/yiwutv.jpg

View file

@ -1,10 +1,10 @@
channel,id,name,is_main,broadcast_area,timezones,languages,video_format,launched,closed,replaced_by channel,id,name,is_main,broadcast_area,timezones,languages,video_format
0TV.dk,SD,SD,TRUE,c/DK,Europe/Copenhagen,dan,576i,,, 0TV.dk,SD,SD,TRUE,c/DK,Europe/Copenhagen,dan,576i
1000xHoraTV.uy,HD,HD,TRUE,c/CN,Africa/Johannesburg;Africa/Kigali,zho,576i,2020-01-01,2021-01-01,M5.hu@HD 1000xHoraTV.uy,HD,HD,TRUE,c/CN,Africa/Johannesburg;Africa/Kigali,zho,576i
1000xHoraTV.uy,SD,SD,FALSE,c/UY,America/Montevideo,spa,576i,,,M5.hu@HD 1000xHoraTV.uy,SD,SD,FALSE,c/UY,America/Montevideo,spa,576i
beINMoviesTurk.tr,SD,SD,TRUE,c/DO,America/Santo_Domingo,spa,480i,,, beINMoviesTurk.tr,SD,SD,TRUE,c/DO,America/Santo_Domingo,spa,480i
M5.hu,HD,HD,TRUE,c/BR,Africa/Dakar;Africa/El_Aaiun,por;spa,1080i,2020-01-01,,0TV.dk@SD M5.hu,HD,HD,TRUE,c/BR,Africa/Dakar;Africa/El_Aaiun,por;spa,1080i
M5.hu,West,West,FALSE,c/DO,America/Santo_Domingo,spa,480i,,2021-01-01, M5.hu,West,West,FALSE,c/DO,America/Santo_Domingo,spa,480i
WenzhouEconomicandEducation.cn,SD,SD,TRUE,c/CN,Africa/Johannesburg;Africa/Kigali,zho,576i,,, WenzhouEconomicandEducation.cn,SD,SD,TRUE,c/CN,Africa/Johannesburg;Africa/Kigali,zho,576i
YiwuBusinessChannel.cn,SD,SD,TRUE,c/CN,Africa/Johannesburg;Africa/Kigali,zho,576i,,, YiwuBusinessChannel.cn,SD,SD,TRUE,c/CN,Africa/Johannesburg;Africa/Kigali,zho,576i
YiwuNewsIntegratedChannel.cn,SD,SD,TRUE,c/CN,Africa/Johannesburg;Africa/Kigali,zho,576i,,, YiwuNewsIntegratedChannel.cn,SD,SD,TRUE,c/CN,Africa/Johannesburg;Africa/Kigali,zho,576i
1 channel id name is_main broadcast_area timezones languages video_format launched closed replaced_by
2 0TV.dk SD SD TRUE c/DK Europe/Copenhagen dan 576i
3 1000xHoraTV.uy HD HD TRUE c/CN Africa/Johannesburg;Africa/Kigali zho 576i 2020-01-01 2021-01-01 M5.hu@HD
4 1000xHoraTV.uy SD SD FALSE c/UY America/Montevideo spa 576i M5.hu@HD
5 beINMoviesTurk.tr SD SD TRUE c/DO America/Santo_Domingo spa 480i
6 M5.hu HD HD TRUE c/BR Africa/Dakar;Africa/El_Aaiun por;spa 1080i 2020-01-01 0TV.dk@SD
7 M5.hu West West FALSE c/DO America/Santo_Domingo spa 480i 2021-01-01
8 WenzhouEconomicandEducation.cn SD SD TRUE c/CN Africa/Johannesburg;Africa/Kigali zho 576i
9 YiwuBusinessChannel.cn SD SD TRUE c/CN Africa/Johannesburg;Africa/Kigali zho 576i
10 YiwuNewsIntegratedChannel.cn SD SD TRUE c/CN Africa/Johannesburg;Africa/Kigali zho 576i

View file

@ -1,3 +1,3 @@
channel,id,name,is_main,broadcast_area,timezones,languages,video_format,launched,closed,replaced_by channel,id,name,is_main,broadcast_area,timezones,languages,video_format
002RadioTV.do,SD,SD,TRUE,c/DO,America/Santo_Domingo,spa,480i,,, 002RadioTV.do,SD,SD,TRUE,c/DO,America/Santo_Domingo,spa,480i
M5.hu,SD,SD,FALSE,c/DO,America/Santo_Domingo,spa,480i,,2021-01-01,002RadioTV.do@SD M5.hu,SD,SD,FALSE,c/DO,America/Santo_Domingo,spa,480i
1 channel id name is_main broadcast_area timezones languages video_format launched closed replaced_by
2 002RadioTV.do SD SD TRUE c/DO America/Santo_Domingo spa 480i
3 M5.hu SD SD FALSE c/DO America/Santo_Domingo spa 480i 2021-01-01 002RadioTV.do@SD

View file

@ -2,5 +2,5 @@ id,name,alt_names,network,owners,country,subdivision,city,broadcast_area,languag
002RadioTV.do,002 Radio TV,,,,DO,,,c/DO,spa,general,FALSE,,,,https://www.002radio.com/,https://i.imgur.com/7oNe8xj.png 002RadioTV.do,002 Radio TV,,,,DO,,,c/DO,spa,general,FALSE,,,,https://www.002radio.com/,https://i.imgur.com/7oNe8xj.png
0TV.dk,0-TV,,,,DK,,København,c/DK,dan,general,FALSE,,,01TV.fr@SD,https://0-tv.dk/,https://i.imgur.com/aR5q6mA.png 0TV.dk,0-TV,,,,DK,,København,c/DK,dan,general,FALSE,,,01TV.fr@SD,https://0-tv.dk/,https://i.imgur.com/aR5q6mA.png
1000xHoraTV.uy,1000xHora TV,,,,UY,,Montevideo,c/UY,spa,auto,FALSE,,,M5.hu@SD,https://www.1000xhoratv.com/,https://i.imgur.com/wP3bbYr.png 1000xHoraTV.uy,1000xHora TV,,,,UY,,Montevideo,c/UY,spa,auto,FALSE,,,M5.hu@SD,https://www.1000xhoratv.com/,https://i.imgur.com/wP3bbYr.png
BeijingSatelliteTV.cn,Beijing Satellite TV,北京卫视,,,CN,,Beijing,c/CN,zho,general,FALSE,1979-05-16,,002RadioTV.do@SD,https://www.brtn.cn/btv/,https://i.imgur.com/vsktAez.png BeijingSatelliteTV.cn,Beijing Satellite TV,北京卫视,,,CN,,Beijing,c/CN,zho,general,FALSE,,,002RadioTV.do@SD,https://www.brtn.cn/btv/,https://i.imgur.com/vsktAez.png
M5.hu,M5,,,,HU,,,c/HU,hun,auto,TRUE,,2001-01-01,BeijingSatelliteTV.cn,https://www.mediaklikk.hu/m5/,https://i.imgur.com/y21wFd0.png M5.hu,M5,,,,HU,,,c/HU,hun,auto,TRUE,,2021-01-01,002RadioTV.do@SD,https://www.mediaklikk.hu/m5/,https://i.imgur.com/y21wFd0.png
1 id name alt_names network owners country subdivision city broadcast_area languages categories is_nsfw launched closed replaced_by website logo
2 002RadioTV.do 002 Radio TV DO c/DO spa general FALSE https://www.002radio.com/ https://i.imgur.com/7oNe8xj.png
3 0TV.dk 0-TV DK København c/DK dan general FALSE 01TV.fr@SD https://0-tv.dk/ https://i.imgur.com/aR5q6mA.png
4 1000xHoraTV.uy 1000xHora TV UY Montevideo c/UY spa auto FALSE M5.hu@SD https://www.1000xhoratv.com/ https://i.imgur.com/wP3bbYr.png
5 BeijingSatelliteTV.cn Beijing Satellite TV 北京卫视 CN Beijing c/CN zho general FALSE 1979-05-16 002RadioTV.do@SD https://www.brtn.cn/btv/ https://i.imgur.com/vsktAez.png
6 M5.hu M5 HU c/HU hun auto TRUE 2001-01-01 2021-01-01 BeijingSatelliteTV.cn 002RadioTV.do@SD https://www.mediaklikk.hu/m5/ https://i.imgur.com/y21wFd0.png

View file

@ -1,8 +1,8 @@
channel,id,name,is_main,broadcast_area,timezones,languages,video_format,launched,closed,replaced_by channel,id,name,is_main,broadcast_area,timezones,languages,video_format
002RadioTV.do,SD,SD,TRUE,c/DO,America/Santo_Domingo,spa,480i,,, 002RadioTV.do,SD,SD,TRUE,c/DO,America/Santo_Domingo,spa,480i
01TV.fr,SD,SD,TRUE,c/FR,Europe/Paris,fra,576i,,, 01TV.fr,SD,SD,TRUE,c/FR,Europe/Paris,fra,576i
0TV.dk,SD,SD,TRUE,c/DK,Europe/Copenhagen,dan,576i,,,01TV.fr@SD 0TV.dk,SD,SD,TRUE,c/DK,Europe/Copenhagen,dan,576i
1000xHoraTV.uy,SD,SD,TRUE,c/UY,America/Montevideo,spa,576i,,,M5.hu@SD 1000xHoraTV.uy,SD,SD,TRUE,c/UY,America/Montevideo,spa,576i
BeijingSatelliteTV.cn,SD,SD,TRUE,c/DO,America/Santo_Domingo,spa,480i,,,002RadioTV.do@SD BeijingSatelliteTV.cn,SD,SD,TRUE,c/DO,America/Santo_Domingo,spa,480i
M5.hu,SD,SD,FALSE,c/DO,America/Santo_Domingo,spa,480i,,2021-01-01,002RadioTV.do@SD M5.hu,SD,SD,FALSE,c/DO,America/Santo_Domingo,spa,480i
M5.hu,West,West,TRUE,c/DO,America/Santo_Domingo,spa,480i,,2021-01-01, M5.hu,West,West,TRUE,c/DO,America/Santo_Domingo,spa,480i
1 channel id name is_main broadcast_area timezones languages video_format launched closed replaced_by
2 002RadioTV.do SD SD TRUE c/DO America/Santo_Domingo spa 480i
3 01TV.fr SD SD TRUE c/FR Europe/Paris fra 576i
4 0TV.dk SD SD TRUE c/DK Europe/Copenhagen dan 576i 01TV.fr@SD
5 1000xHoraTV.uy SD SD TRUE c/UY America/Montevideo spa 576i M5.hu@SD
6 BeijingSatelliteTV.cn SD SD TRUE c/DO America/Santo_Domingo spa 480i 002RadioTV.do@SD
7 M5.hu SD SD FALSE c/DO America/Santo_Domingo spa 480i 2021-01-01 002RadioTV.do@SD
8 M5.hu West West TRUE c/DO America/Santo_Domingo spa 480i 2021-01-01

View file

@ -219,7 +219,7 @@ module.exports = [
closed_at: null, closed_at: null,
author_association: 'CONTRIBUTOR', author_association: 'CONTRIBUTOR',
active_lock_reason: null, active_lock_reason: null,
body: '### Channel Name\n\nYiwu News Integrated Channel\n\n### Alternative Names (optional)\n\n_No response_\n\n### Network (optional)\n\n_No response_\n\n### Owners (optional)\n\n_No response_\n\n### Country\n\nCN\n\n### Subdivision (optional)\n\n_No response_\n\n### City (optional)\n\n_No response_\n\n### Categories (optional)\n\nnews\n\n### NSFW\n\nFALSE\n\n### Website (optional)\n\n_No response_\n\n### Logo\n\nhttps://www.tvchinese.net/uploads/tv/yiwutv.jpg\n\n### Feed Name\n\nSD\n\n### Broadcast Area\n\nc/CN\n\n### Languages\n\nzho\n\n### Timezones\n\nAfrica/Johannesburg;Africa/Kigali\n\n### Format\n\n576i\n\n### Launched (optional)\n\n_No response_\n\n### Closed (optional)\n\n_No response_\n\n### Replaced By (optional)\n\n_No response_\n\n### Notes\n\n_No response_', body: '### Channel Name\n\nYiwu News Integrated Channel\n\n### Alternative Names (optional)\n\n_No response_\n\n### Network (optional)\n\n_No response_\n\n### Owners (optional)\n\n_No response_\n\n### Country\n\nCN\n\n### Subdivision (optional)\n\n_No response_\n\n### City (optional)\n\n_No response_\n\n### Categories (optional)\n\nnews\n\n### NSFW\n\nFALSE\n\n### Launched (optional)\n\n_No response_\n\n### Closed (optional)\n\n_No response_\n\n### Replaced By (optional)\n\n_No response_\n\n### Website (optional)\n\n_No response_\n\n### Logo\n\nhttps://www.tvchinese.net/uploads/tv/yiwutv.jpg\n\n### Feed Name\n\nSD\n\n### Broadcast Area\n\nc/CN\n\n### Languages\n\nzho\n\n### Timezones\n\nAfrica/Johannesburg;Africa/Kigali\n\n### Format\n\n576i\n\n### Notes\n\n_No response_',
reactions: { reactions: {
url: 'https://api.github.com/repos/iptv-org/database/issues/5900/reactions', url: 'https://api.github.com/repos/iptv-org/database/issues/5900/reactions',
total_count: 0, total_count: 0,
@ -243,7 +243,7 @@ module.exports = [
comments_url: 'https://api.github.com/repos/iptv-org/database/issues/5899/comments', comments_url: 'https://api.github.com/repos/iptv-org/database/issues/5899/comments',
events_url: 'https://api.github.com/repos/iptv-org/database/issues/5899/events', events_url: 'https://api.github.com/repos/iptv-org/database/issues/5899/events',
html_url: 'https://github.com/iptv-org/database/issues/5899', html_url: 'https://github.com/iptv-org/database/issues/5899',
id: 1929318573, id: 1929318575,
node_id: 'I_kwDOG1Kwp85y_xCt', node_id: 'I_kwDOG1Kwp85y_xCt',
number: 5899, number: 5899,
title: 'Add: Yiwu Business Channel', title: 'Add: Yiwu Business Channel',
@ -298,7 +298,7 @@ module.exports = [
closed_at: null, closed_at: null,
author_association: 'CONTRIBUTOR', author_association: 'CONTRIBUTOR',
active_lock_reason: null, active_lock_reason: null,
body: '### Channel Name\n\nYiwu Business Channel\n\n### Alternative Names (optional)\n\n_No response_\n\n### Network (optional)\n\n_No response_\n\n### Owners (optional)\n\n_No response_\n\n### Country\n\nCN\n\n### Subdivision (optional)\n\n_No response_\n\n### City (optional)\n\n_No response_\n\n### Categories (optional)\n\nbusiness\n\n### NSFW\n\nFALSE\n\n### Website (optional)\n\n_No response_\n\n### Logo\n\nhttps://www.tvchinese.net/uploads/tv/yiwutv.jpg\n\n### Feed Name\n\nSD\n\n### Broadcast Area\n\nc/CN\n\n### Languages\n\nzho\n\n### Timezones\n\nAfrica/Johannesburg;Africa/Kigali\n\n### Format\n\n576i\n\n### Launched (optional)\n\n_No response_\n\n### Closed (optional)\n\n_No response_\n\n### Replaced By (optional)\n\n_No response_\n\n### Notes\n\n_No response_', body: '### Channel Name\n\nYiwu Business Channel\n\n### Alternative Names (optional)\n\n_No response_\n\n### Network (optional)\n\n_No response_\n\n### Owners (optional)\n\n_No response_\n\n### Country\n\nCN\n\n### Subdivision (optional)\n\n_No response_\n\n### City (optional)\n\n_No response_\n\n### Categories (optional)\n\nbusiness\n\n### NSFW\n\nFALSE\n\n### Launched (optional)\n\n_No response_\n\n### Closed (optional)\n\n_No response_\n\n### Replaced By (optional)\n\n_No response_\n\n### Website (optional)\n\n_No response_\n\n### Logo\n\nhttps://www.tvchinese.net/uploads/tv/yiwutv.jpg\n\n### Feed Name\n\nSD\n\n### Broadcast Area\n\nc/CN\n\n### Languages\n\nzho\n\n### Timezones\n\nAfrica/Johannesburg;Africa/Kigali\n\n### Format\n\n576i\n\n### Notes\n\n_No response_',
reactions: { reactions: {
url: 'https://api.github.com/repos/iptv-org/database/issues/5899/reactions', url: 'https://api.github.com/repos/iptv-org/database/issues/5899/reactions',
total_count: 0, total_count: 0,
@ -377,7 +377,7 @@ module.exports = [
closed_at: null, closed_at: null,
author_association: 'CONTRIBUTOR', author_association: 'CONTRIBUTOR',
active_lock_reason: null, active_lock_reason: null,
body: '### Channel Name\n\nWenzhou Economic and Education\n\n### Alternative Names (optional)\n\n_No response_\n\n### Network (optional)\n\n_No response_\n\n### Owners (optional)\n\n_No response_\n\n### Country\n\nCN\n\n### Subdivision (optional)\n\n_No response_\n\n### City (optional)\n\nWenzhou\n\n### Categories (optional)\n\nscience\n\n### NSFW\n\nFALSE\n\n### Website (optional)\n\n_No response_\n\n### Logo\n\nhttps://www.tvchinese.net/uploads/tv/wzjjkj.jpg\n\n### Feed Name\n\nSD\n\n### Broadcast Area\n\nc/CN\n\n### Languages\n\nzho\n\n### Timezones\n\nAfrica/Johannesburg;Africa/Kigali\n\n### Format\n\n576i\n\n### Launched (optional)\n\n_No response_\n\n### Closed (optional)\n\n_No response_\n\n### Replaced By (optional)\n\n_No response_\n\n### Notes\n\n_No response_', body: '### Channel Name\n\nWenzhou Economic and Education\n\n### Alternative Names (optional)\n\n_No response_\n\n### Network (optional)\n\n_No response_\n\n### Owners (optional)\n\n_No response_\n\n### Country\n\nCN\n\n### Subdivision (optional)\n\n_No response_\n\n### City (optional)\n\nWenzhou\n\n### Categories (optional)\n\nscience\n\n### NSFW\n\nFALSE\n\n### Launched (optional)\n\n_No response_\n\n### Closed (optional)\n\n_No response_\n\n### Replaced By (optional)\n\n_No response_\n\n### Website (optional)\n\n_No response_\n\n### Logo\n\nhttps://www.tvchinese.net/uploads/tv/wzjjkj.jpg\n\n### Feed Name\n\nSD\n\n### Broadcast Area\n\nc/CN\n\n### Languages\n\nzho\n\n### Timezones\n\nAfrica/Johannesburg;Africa/Kigali\n\n### Format\n\n576i\n\n### Notes\n\n_No response_',
reactions: { reactions: {
url: 'https://api.github.com/repos/iptv-org/database/issues/5898/reactions', url: 'https://api.github.com/repos/iptv-org/database/issues/5898/reactions',
total_count: 0, total_count: 0,
@ -473,6 +473,164 @@ module.exports = [
performed_via_github_app: null, performed_via_github_app: null,
state_reason: null state_reason: null
}, },
{
url: 'https://api.github.com/repos/iptv-org/database/issues/5902',
repository_url: 'https://api.github.com/repos/iptv-org/database',
labels_url: 'https://api.github.com/repos/iptv-org/database/issues/5902/labels{/name}',
comments_url: 'https://api.github.com/repos/iptv-org/database/issues/5902/comments',
events_url: 'https://api.github.com/repos/iptv-org/database/issues/5902/events',
html_url: 'https://github.com/iptv-org/database/issues/5902',
id: 1929459172,
node_id: 'I_kwDOG1Kwp85zATXj',
number: 5902,
title: 'Edit: 1000xHoraTV.uy',
user: {
login: 'freearhey',
id: 7253922,
node_id: 'MDQ6VXNlcjcyNTM5MjI=',
avatar_url: 'https://avatars.githubusercontent.com/u/7253922?v=4',
gravatar_id: '',
url: 'https://api.github.com/users/freearhey',
html_url: 'https://github.com/freearhey',
followers_url: 'https://api.github.com/users/freearhey/followers',
following_url: 'https://api.github.com/users/freearhey/following{/other_user}',
gists_url: 'https://api.github.com/users/freearhey/gists{/gist_id}',
starred_url: 'https://api.github.com/users/freearhey/starred{/owner}{/repo}',
subscriptions_url: 'https://api.github.com/users/freearhey/subscriptions',
organizations_url: 'https://api.github.com/users/freearhey/orgs',
repos_url: 'https://api.github.com/users/freearhey/repos',
events_url: 'https://api.github.com/users/freearhey/events{/privacy}',
received_events_url: 'https://api.github.com/users/freearhey/received_events',
type: 'User',
site_admin: false
},
labels: [
{
id: 5303574335,
node_id: 'LA_kwDOG1Kwp88AAAABPB4fPw',
url: 'https://api.github.com/repos/iptv-org/database/labels/channels:edit',
name: 'channels:edit',
color: 'E12977',
default: false,
description: 'Request to edit channel description'
},
{
id: 5366738347,
node_id: 'LA_kwDOG1Kwp88AAAABP-Htqw',
url: 'https://api.github.com/repos/iptv-org/database/labels/approved',
name: 'approved',
color: '85DDDE',
default: false,
description: ''
}
],
state: 'open',
locked: false,
assignee: null,
assignees: [],
milestone: null,
comments: 0,
created_at: '2023-10-06T05:25:44Z',
updated_at: '2023-10-06T05:25:44Z',
closed_at: null,
author_association: 'CONTRIBUTOR',
active_lock_reason: null,
body: '### Channel ID (required)\n\n1000xHoraTV.uy\n\n### Channel Name\n\n_No response_\n\n### Alternative Names\n\n_No response_\n\n### Network\n\n_No response_\n\n### Owners\n\n_No response_\n\n### Country\n\n_No response_\n\n### Subdivision\n\n_No response_\n\n### City\n\n_No response_\n\n### Broadcast Area\n\n_No response_\n\n### Languages\n\n_No response_\n\n### Categories\n\n_No response_\n\n### NSFW\n\nNone\n\n### Launched\n\n2020-01-01\n\n### Closed\n\n2021-01-01\n\n### Replaced By\n\n_No response_\n\n### Website\n\n_No response_\n\n### Logo\n\n_No response_\n\n### Notes\n\n_No response_',
reactions: {
url: 'https://api.github.com/repos/iptv-org/database/issues/5902/reactions',
total_count: 0,
'+1': 0,
'-1': 0,
laugh: 0,
hooray: 0,
confused: 0,
heart: 0,
rocket: 0,
eyes: 0
},
timeline_url: 'https://api.github.com/repos/iptv-org/database/issues/5902/timeline',
performed_via_github_app: null,
state_reason: null
},
{
url: 'https://api.github.com/repos/iptv-org/database/issues/5903',
repository_url: 'https://api.github.com/repos/iptv-org/database',
labels_url: 'https://api.github.com/repos/iptv-org/database/issues/5903/labels{/name}',
comments_url: 'https://api.github.com/repos/iptv-org/database/issues/5903/comments',
events_url: 'https://api.github.com/repos/iptv-org/database/issues/5903/events',
html_url: 'https://github.com/iptv-org/database/issues/5903',
id: 1929459173,
node_id: 'I_kwDOG1Kwp85zATXj',
number: 5903,
title: 'Edit: M5',
user: {
login: 'freearhey',
id: 7253922,
node_id: 'MDQ6VXNlcjcyNTM5MjI=',
avatar_url: 'https://avatars.githubusercontent.com/u/7253922?v=4',
gravatar_id: '',
url: 'https://api.github.com/users/freearhey',
html_url: 'https://github.com/freearhey',
followers_url: 'https://api.github.com/users/freearhey/followers',
following_url: 'https://api.github.com/users/freearhey/following{/other_user}',
gists_url: 'https://api.github.com/users/freearhey/gists{/gist_id}',
starred_url: 'https://api.github.com/users/freearhey/starred{/owner}{/repo}',
subscriptions_url: 'https://api.github.com/users/freearhey/subscriptions',
organizations_url: 'https://api.github.com/users/freearhey/orgs',
repos_url: 'https://api.github.com/users/freearhey/repos',
events_url: 'https://api.github.com/users/freearhey/events{/privacy}',
received_events_url: 'https://api.github.com/users/freearhey/received_events',
type: 'User',
site_admin: false
},
labels: [
{
id: 5303574335,
node_id: 'LA_kwDOG1Kwp88AAAABPB4fPw',
url: 'https://api.github.com/repos/iptv-org/database/labels/channels:edit',
name: 'channels:edit',
color: 'E12977',
default: false,
description: 'Request to edit channel description'
},
{
id: 5366738347,
node_id: 'LA_kwDOG1Kwp88AAAABP-Htqw',
url: 'https://api.github.com/repos/iptv-org/database/labels/approved',
name: 'approved',
color: '85DDDE',
default: false,
description: ''
}
],
state: 'open',
locked: false,
assignee: null,
assignees: [],
milestone: null,
comments: 0,
created_at: '2023-10-06T05:25:44Z',
updated_at: '2023-10-06T05:25:44Z',
closed_at: null,
author_association: 'CONTRIBUTOR',
active_lock_reason: null,
body: '### Channel ID (required)\n\nM5.hu\n\n### Channel Name\n\n_No response_\n\n### Alternative Names\n\n_No response_\n\n### Network\n\n_No response_\n\n### Owners\n\n_No response_\n\n### Country\n\n_No response_\n\n### Subdivision\n\n_No response_\n\n### City\n\n_No response_\n\n### Broadcast Area\n\n_No response_\n\n### Languages\n\n_No response_\n\n### Categories\n\n_No response_\n\n### NSFW\n\nNone\n\n### Launched\n\n2020-01-01\n\n### Closed\n\n_No response_\n\n### Replaced By\n\n0TV.dk@SD\n\n### Website\n\n_No response_\n\n### Logo\n\n_No response_\n\n### Notes\n\n_No response_',
reactions: {
url: 'https://api.github.com/repos/iptv-org/database/issues/5903/reactions',
total_count: 0,
'+1': 0,
'-1': 0,
laugh: 0,
hooray: 0,
confused: 0,
heart: 0,
rocket: 0,
eyes: 0
},
timeline_url: 'https://api.github.com/repos/iptv-org/database/issues/5903/timeline',
performed_via_github_app: null,
state_reason: null
},
{ {
url: 'https://api.github.com/repos/iptv-org/database/issues/5701', url: 'https://api.github.com/repos/iptv-org/database/issues/5701',
repository_url: 'https://api.github.com/repos/iptv-org/database', repository_url: 'https://api.github.com/repos/iptv-org/database',
@ -693,7 +851,7 @@ module.exports = [
closed_at: null, closed_at: null,
author_association: 'CONTRIBUTOR', author_association: 'CONTRIBUTOR',
active_lock_reason: null, active_lock_reason: null,
body: '### Channel ID\n\n1000xHoraTV.uy\n\n### Feed Name\n\nHD\n\n### Main Feed\n\nTRUE\n\n### Broadcast Area\n\nc/CN\n\n### Languages\n\nzho\n\n### Timezones\n\nAfrica/Johannesburg;Africa/Kigali\n\n### Format\n\n576i\n\n### Launched (optional)\n\n2020-01-01\n\n### Closed (optional)\n\n2021-01-01\n\n### Replaced By (optional)\n\nM5.hu@HD\n\n### Notes\n\n_No response_', body: '### Channel ID\n\n1000xHoraTV.uy\n\n### Feed Name\n\nHD\n\n### Main Feed\n\nTRUE\n\n### Broadcast Area\n\nc/CN\n\n### Languages\n\nzho\n\n### Timezones\n\nAfrica/Johannesburg;Africa/Kigali\n\n### Format\n\n576i\n\n### Notes\n\n_No response_',
reactions: { reactions: {
url: 'https://api.github.com/repos/iptv-org/database/issues/8900/reactions', url: 'https://api.github.com/repos/iptv-org/database/issues/8900/reactions',
total_count: 0, total_count: 0,
@ -745,7 +903,7 @@ module.exports = [
{ {
id: 5303574335, id: 5303574335,
node_id: 'LA_kwDOG1Kwp88AAAABPB4fPw', node_id: 'LA_kwDOG1Kwp88AAAABPB4fPw',
url: 'https://api.github.com/repos/iptv-org/database/labels/channels:edit', url: 'https://api.github.com/repos/iptv-org/database/labels/feeds:edit',
name: 'feeds:edit', name: 'feeds:edit',
color: 'E12977', color: 'E12977',
default: false, default: false,
@ -772,7 +930,7 @@ module.exports = [
closed_at: null, closed_at: null,
author_association: 'CONTRIBUTOR', author_association: 'CONTRIBUTOR',
active_lock_reason: null, active_lock_reason: null,
body: '### Channel ID (required)\n\nM5.hu\n\n### Feed ID (required)\n\nSD\n\n### Feed Name\n\nHD\n\n### Main Feed\n\nTRUE\n\n### Broadcast Area\n\nc/BR\n\n### Timezones\n\nAfrica/Dakar;Africa/El_Aaiun\n\n### Languages\n\npor;spa\n\n### Format\n\n1080i\n\n### Launched\n\n2020-01-01\n\n### Closed\n\n~\n\n### Replaced By\n\n0TV.dk@SD\n\n### Notes\n\n_No response_', body: '### Channel ID (required)\n\nM5.hu\n\n### Feed ID (required)\n\nSD\n\n### Feed Name\n\nHD\n\n### Main Feed\n\nTRUE\n\n### Broadcast Area\n\nc/BR\n\n### Timezones\n\nAfrica/Dakar;Africa/El_Aaiun\n\n### Languages\n\npor;spa\n\n### Format\n\n1080i\n\n### Notes\n\n_No response_',
reactions: { reactions: {
url: 'https://api.github.com/repos/iptv-org/database/issues/7901/reactions', url: 'https://api.github.com/repos/iptv-org/database/issues/7901/reactions',
total_count: 0, total_count: 0,

View file

@ -1,3 +1,3 @@
channel,id,name,is_main,broadcast_area,timezones,languages,video_format,launched,closed,replaced_by channel,id,name,is_main,broadcast_area,timezones,languages,video_format
002RadioTV.do,SD,SD,TRUE,c/DO,America/Santo_Domingo,spa,480i,,, 002RadioTV.do,SD,SD,TRUE,c/DO,America/Santo_Domingo,spa,480i
002RadioTV.do,SD,HD,FALSE,c/DO,America/Santo_Domingo,spa,1080i,,, 002RadioTV.do,SD,HD,FALSE,c/DO,America/Santo_Domingo,spa,1080i
1 channel id name is_main broadcast_area timezones languages video_format launched closed replaced_by
2 002RadioTV.do SD SD TRUE c/DO America/Santo_Domingo spa 480i
3 002RadioTV.do SD HD FALSE c/DO America/Santo_Domingo spa 1080i

View file

@ -1,2 +1,4 @@
id,name,alt_names,network,owners,country,subdivision,city,broadcast_area,languages,categories,is_nsfw,launched,closed,replaced_by,website,logo id,name,alt_names,network,owners,country,subdivision,city,broadcast_area,languages,categories,is_nsfw,launched,closed,replaced_by,website,logo
002RadioTV.do,002 Radio TV,,,,DO,,,c/DO,spa,,FALSE,,,002RadioTV.do@4K,ttps://www.002radio.com/,https://i.imgur.com/7oNe8xj.png 002RadioTV.do,002 Radio TV,,,,DO,,,c/DO,spa,,FALSE,,,002RadioTV.do@4K,ttps://www.002radio.com/,https://i.imgur.com/7oNe8xj.png
10Channel.do,10 Channel,,,,DO,,,c/DO,spa,,FALSE,,,,,https://i.ibb.co/0XMM4gn/download-7.png
24B.do,24B,,,,DO,,,c/DO,spa,,FALSE,,,,,https://i.imgur.com/8LgdPst.png
1 id name alt_names network owners country subdivision city broadcast_area languages categories is_nsfw launched closed replaced_by website logo
2 002RadioTV.do 002 Radio TV DO c/DO spa FALSE 002RadioTV.do@4K ttps://www.002radio.com/ https://i.imgur.com/7oNe8xj.png
3 10Channel.do 10 Channel DO c/DO spa FALSE https://i.ibb.co/0XMM4gn/download-7.png
4 24B.do 24B DO c/DO spa FALSE https://i.imgur.com/8LgdPst.png

View file

@ -1,4 +1,5 @@
channel,id,name,is_main,broadcast_area,timezones,languages,video_format,launched,closed,replaced_by channel,id,name,is_main,broadcast_area,timezones,languages,video_format
0TV.dk,SD,SD,TRUE,c/DK,Europe/Copenhagen,dan,576I,,,M5.hu@HD 0TV.dk,SD,SD,TRUE,c/DK,Europe/Copenhagen,dan,576I
002RadioTV.do,SD,SD,TRUE,c/DK,Africa/Accra,dan,576i,,, 002RadioTV.do,SD,SD,TRUE,c/DK,Africa/Accra,dan,576i
002RadioTV.do,HD,HD,TRUE,c/DK,Africa/Accra,dan,576i,,, 002RadioTV.do,HD,HD,TRUE,c/DK,Africa/Accra,dan,576i
24B.do,SD,SD,FALSE,c/DK,Africa/Accra,dan,576i
1 channel id name is_main broadcast_area timezones languages video_format launched closed replaced_by
2 0TV.dk SD SD TRUE c/DK Europe/Copenhagen dan 576I M5.hu@HD
3 002RadioTV.do SD SD TRUE c/DK Africa/Accra dan 576i
4 002RadioTV.do HD HD TRUE c/DK Africa/Accra dan 576i
5 24B.do SD SD FALSE c/DK Africa/Accra dan 576i

View file

@ -1,5 +1,5 @@
channel,id,name,is_main,broadcast_area,timezones,languages,video_format,launched,closed,replaced_by channel,id,name,is_main,broadcast_area,timezones,languages,video_format
KSTVKids.ua,HD,HD,TRUE,c/UA,America/Santo_Domingo,ukr,480i,,, KSTVKids.ua,HD,HD,TRUE,c/UA,America/Santo_Domingo,ukr,480i
PeoplesWeather.do,SD,SD,TRUE,c/DO,America/Santo_Domingo,spa,480i,,, PeoplesWeather.do,SD,SD,TRUE,c/DO,America/Santo_Domingo,spa,480i
PeoplesWeather.do,HD,HD,FALSE,c/DO,America/Santo_Domingo,spa,1080i,,,KSTVKids.ua@HD PeoplesWeather.do,HD,HD,FALSE,c/DO,America/Santo_Domingo,spa,1080i
PeoplesWeather.do,West,West,FALSE,c/DO,America/Santo_Domingo,spa,1080i,,, PeoplesWeather.do,West,West,FALSE,c/DO,America/Santo_Domingo,spa,1080i
1 channel id name is_main broadcast_area timezones languages video_format launched closed replaced_by
2 KSTVKids.ua HD HD TRUE c/UA America/Santo_Domingo ukr 480i
3 PeoplesWeather.do SD SD TRUE c/DO America/Santo_Domingo spa 480i
4 PeoplesWeather.do HD HD FALSE c/DO America/Santo_Domingo spa 1080i KSTVKids.ua@HD
5 PeoplesWeather.do West West FALSE c/DO America/Santo_Domingo spa 1080i

View file

@ -15,7 +15,7 @@ it('can update db with data from issues', () => {
expect(content('output/data/channels.csv')).toEqual(content('expected/data/channels.csv')) expect(content('output/data/channels.csv')).toEqual(content('expected/data/channels.csv'))
expect(content('output/data/feeds.csv')).toEqual(content('expected/data/feeds.csv')) expect(content('output/data/feeds.csv')).toEqual(content('expected/data/feeds.csv'))
expect(stdout).toEqual( expect(stdout).toEqual(
'OUTPUT=closes #6871, closes #5871, closes #7901, closes #5901, closes #5701, closes #8900, closes #5900, closes #5899, closes #5898, closes #5897, closes #5891' 'OUTPUT=closes #6871, closes #5871, closes #7901, closes #5901, closes #5902, closes #5903, closes #5701, closes #8900, closes #5900, closes #5899, closes #5898, closes #5897, closes #5891'
) )
}) })

View file

@ -64,6 +64,10 @@ describe('db:validate', () => {
expect((error as ExecError).stdout).toContain( expect((error as ExecError).stdout).toContain(
'"002RadioTV.do" has an invalid replaced_by "002RadioTV.do@4K"' '"002RadioTV.do" has an invalid replaced_by "002RadioTV.do@4K"'
) )
expect((error as ExecError).stdout).toContain(
'"10Channel.do" channel does not have a main feed'
)
expect((error as ExecError).stdout).toContain('"24B.do" channel does not have a main feed')
expect((error as ExecError).stdout).toContain( expect((error as ExecError).stdout).toContain(
'002RadioTV.do: "website" must be a valid uri with a scheme matching the http|https pattern' '002RadioTV.do: "website" must be a valid uri with a scheme matching the http|https pattern'
) )
@ -71,14 +75,13 @@ describe('db:validate', () => {
'entry with the channel "002RadioTV.do" and is_main "true" already exists' 'entry with the channel "002RadioTV.do" and is_main "true" already exists'
) )
expect((error as ExecError).stdout).toContain('"0TV.dk" is missing in the channels.csv') expect((error as ExecError).stdout).toContain('"0TV.dk" is missing in the channels.csv')
expect((error as ExecError).stdout).toContain('"SD" has an invalid replaced_by "M5.hu@HD"')
expect((error as ExecError).stdout).toContain( expect((error as ExecError).stdout).toContain(
'"0TV.dk@SD" has the wrong timezone "Europe/Copenhagen"' '"0TV.dk@SD" has the wrong timezone "Europe/Copenhagen"'
) )
expect((error as ExecError).stdout).toContain( expect((error as ExecError).stdout).toContain(
'SD: "video_format" with value "576I" fails to match the required pattern' 'SD: "video_format" with value "576I" fails to match the required pattern'
) )
expect((error as ExecError).stdout).toContain('8 error(s)') expect((error as ExecError).stdout).toContain('9 error(s)')
} }
}) })