diff --git a/.github/workflows/auto-update.yml b/.github/workflows/auto-update.yml index ac110da7..4b8c8885 100644 --- a/.github/workflows/auto-update.yml +++ b/.github/workflows/auto-update.yml @@ -32,6 +32,7 @@ jobs: programme-tv.net, programtv.onet.pl, telkussa.fi, + tv.cctv.com, tv.lv, tv.yandex.ru, tvgid.ua, diff --git a/README.md b/README.md index 237ac621..df30cab0 100644 --- a/README.md +++ b/README.md @@ -30,6 +30,7 @@ To load a program guide, all you need to do is copy the link to one of the guide 🇧🇬 Bulgariahttps://iptv-org.github.io/epg/guides/tvprofil.com.guide.xml 🇨🇦 Canadahttps://iptv-org.github.io/epg/guides/tvtv.ca.guide.xml 🇨🇱 Chilehttps://iptv-org.github.io/epg/guides/mi.tv.guide.xml + 🇨🇳 Chinahttps://iptv-org.github.io/epg/guides/tv.cctv.com.guide.xml 🇨🇴 Colombiahttps://iptv-org.github.io/epg/guides/mi.tv.guide.xml 🇭🇷 Croatiahttps://iptv-org.github.io/epg/guides/maxtv.hrvatskitelekom.hr.guide.xml 🇨🇿 Czechiahttps://iptv-org.github.io/epg/guides/m.tv.sms.cz.guide.xml diff --git a/package-lock.json b/package-lock.json index cc83d0ea..47d3bd9a 100644 --- a/package-lock.json +++ b/package-lock.json @@ -10,7 +10,7 @@ "axios": "^0.21.1", "cheerio": "^1.0.0-rc.10", "dayjs": "^1.10.4", - "epg-grabber": "^0.6.6", + "epg-grabber": "^0.9.0", "epg-parser": "^0.1.3", "form-data": "^4.0.0", "html-to-text": "^7.0.0", @@ -417,9 +417,9 @@ "integrity": "sha512-hCx1oky9PFrJ611mf0ifBLBRW8lUUVRlFolb5gWRfIELabBlbp9xZvrqZLZAs+NxFnbfQoeGd8wDkygjg7U85w==" }, "node_modules/epg-grabber": { - "version": "0.6.6", - "resolved": "https://registry.npmjs.org/epg-grabber/-/epg-grabber-0.6.6.tgz", - "integrity": "sha512-EWTEIczzDPWywtDSLePtmBHpSphNHq2DJbe3OhQM8smaKBprAFtlZzpV+OrQY8aWk2UZsYAMNegtvrrD02IsNw==", + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/epg-grabber/-/epg-grabber-0.9.0.tgz", + "integrity": "sha512-dVJPJ3XlCJUneU0P68Zz7OtTG50YYeblRbyRRLGg+8trB/3ZLL8uZaphqDMDiZi2iR0icvXVbWJTll2SCnMidg==", "dependencies": { "axios": "^0.21.1", "axios-cookiejar-support": "^1.0.1", @@ -1628,9 +1628,9 @@ "integrity": "sha512-hCx1oky9PFrJ611mf0ifBLBRW8lUUVRlFolb5gWRfIELabBlbp9xZvrqZLZAs+NxFnbfQoeGd8wDkygjg7U85w==" }, "epg-grabber": { - "version": "0.6.6", - "resolved": "https://registry.npmjs.org/epg-grabber/-/epg-grabber-0.6.6.tgz", - "integrity": "sha512-EWTEIczzDPWywtDSLePtmBHpSphNHq2DJbe3OhQM8smaKBprAFtlZzpV+OrQY8aWk2UZsYAMNegtvrrD02IsNw==", + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/epg-grabber/-/epg-grabber-0.9.0.tgz", + "integrity": "sha512-dVJPJ3XlCJUneU0P68Zz7OtTG50YYeblRbyRRLGg+8trB/3ZLL8uZaphqDMDiZi2iR0icvXVbWJTll2SCnMidg==", "requires": { "axios": "^0.21.1", "axios-cookiejar-support": "^1.0.1", diff --git a/package.json b/package.json index 23bff8fc..6cde3438 100644 --- a/package.json +++ b/package.json @@ -10,7 +10,7 @@ "axios": "^0.21.1", "cheerio": "^1.0.0-rc.10", "dayjs": "^1.10.4", - "epg-grabber": "^0.6.6", + "epg-grabber": "^0.9.0", "epg-parser": "^0.1.3", "form-data": "^4.0.0", "html-to-text": "^7.0.0", diff --git a/sites/tv.cctv.com.channels.xml b/sites/tv.cctv.com.channels.xml new file mode 100755 index 00000000..afa3a886 --- /dev/null +++ b/sites/tv.cctv.com.channels.xml @@ -0,0 +1,118 @@ + + + + BTV体育 + BTV卡酷少儿 + BTV国际 + BTV影视 + BTV文艺 + BTV新闻 + BTV生活 + BTV科教 + BTV纪实 + BTV财经 + BTV青少 + CCTV-10科教 + CCTV-11戏曲 + CCTV-12社会与法 + CCTV-13新闻 + CCTV-14少儿 + CCTV-15音乐 + CCTV-1综合 + CCTV-2财经 + CCTV-3文艺 + CCTV-4亚洲 + CCTV-4欧洲 + CCTV-4美洲 + CCTV-5体育 + CCTV-6电影 + CCTV-7军事农业 + CCTV-8电视剧 + CCTV-9纪录 + CCTV世界地理 + CCTV中视购物 + CCTV体育赛事 + CCTV国防军事 + CCTV央视台球 + CCTV央视文化精品 + CCTV女性时尚 + CCTV娱乐 + CCTV怀旧剧场 + CCTV戏曲 + CCTV新科动漫 + CCTV气象 + CCTV电视指南 + CCTV第一剧场 + CCTV老故事 + CCTV风云剧场 + CCTV风云足球 + CCTV风云音乐 + CCTV高尔夫网球 + CETV-1 + CETV-2 + CETV-3 + 东南卫视 + 东方卫视 + 书画 + 云南卫视 + 兵团卫视 + 内蒙古卫视 + 北京卫视 + 卫生健康 + 厦门卫视 + 吉林卫视 + 四川卫视 + 国学(说文解字) + 天元围棋 + 天津1套 + 天津2套 + 天津卫视 + 宁夏卫视 + 宁波一套 + 宁波三套 + 宁波二套 + 宁波五套 + 宁波四套 + 安徽卫视 + 山东卫视 + 山东教育台 + 山西卫视 + 广东卫视 + 广西卫视 + 延边卫视 + 成都新闻综合 + 成都经济资讯服务 + 摄影 + 文物宝库 + 新疆卫视 + 旅游卫视 + 早期教育 + 梨园 + 武术世界 + 江苏卫视 + 江西卫视 + 汽摩 + 河北卫视 + 河南卫视 + 浙江卫视 + 深圳卫视 + 游戏竞技 + 湖北卫视 + 湖南卫视 + 滨海新闻综合 + 滨海综艺频道 + 环球奇观 + 现代女性 + 珠海一套 + 珠海二套 + 甘肃卫视 + 西藏卫视 + 证券资讯 + 贵州卫视 + 辽宁卫视 + 重庆卫视 + 青海卫视 + 靓妆 + 黑龙江卫视 + + \ No newline at end of file diff --git a/sites/tv.cctv.com.config.js b/sites/tv.cctv.com.config.js new file mode 100644 index 00000000..a7f5b328 --- /dev/null +++ b/sites/tv.cctv.com.config.js @@ -0,0 +1,47 @@ +const dayjs = require('dayjs') + +module.exports = { + lang: 'cn', + days: 3, + request: { + timeout: 10000 + }, + site: 'tv.cctv.com', + channels: 'tv.cctv.com.channels.xml', + output: '.gh-pages/guides/tv.cctv.com.guide.xml', + url({ channel, date }) { + return `https://api.cntv.cn/epg/getEpgInfoByChannelNew?serviceId=tvcctv&c=${ + channel.site_id + }&d=${date.format('YYYYMMDD')}` + }, + parser({ content, channel }) { + const programs = [] + const items = parseItems(content, channel) + items.forEach(item => { + const title = item.title + const start = parseStart(item) + const stop = parseStop(item) + programs.push({ + title, + start, + stop + }) + }) + + return programs + } +} + +function parseStop(item) { + return dayjs.unix(item.endTime) +} + +function parseStart(item) { + return dayjs.unix(item.startTime) +} + +function parseItems(content, channel) { + const data = JSON.parse(content) + + return data.data[channel.site_id].list || [] +}