Merge pull request #99 from iptv-org/add-tv-cctv-com

Add guide from tv.cctv.com
This commit is contained in:
Shadix A 2021-09-23 13:39:56 +03:00 committed by GitHub
commit 7b727520ba
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
6 changed files with 175 additions and 8 deletions

View file

@ -32,6 +32,7 @@ jobs:
programme-tv.net,
programtv.onet.pl,
telkussa.fi,
tv.cctv.com,
tv.lv,
tv.yandex.ru,
tvgid.ua,

View file

@ -30,6 +30,7 @@ To load a program guide, all you need to do is copy the link to one of the guide
<tr><td align="left" nowrap>🇧🇬 Bulgaria</td><td align="left" nowrap><code>https://iptv-org.github.io/epg/guides/tvprofil.com.guide.xml</code></td></tr>
<tr><td align="left" nowrap>🇨🇦 Canada</td><td align="left" nowrap><code>https://iptv-org.github.io/epg/guides/tvtv.ca.guide.xml</code></td></tr>
<tr><td align="left" nowrap>🇨🇱 Chile</td><td align="left" nowrap><code>https://iptv-org.github.io/epg/guides/mi.tv.guide.xml</code></td></tr>
<tr><td align="left" nowrap>🇨🇳 China</td><td align="left" nowrap><code>https://iptv-org.github.io/epg/guides/tv.cctv.com.guide.xml</code></td></tr>
<tr><td align="left" nowrap>🇨🇴 Colombia</td><td align="left" nowrap><code>https://iptv-org.github.io/epg/guides/mi.tv.guide.xml</code></td></tr>
<tr><td align="left" nowrap>🇭🇷 Croatia</td><td align="left" nowrap><code>https://iptv-org.github.io/epg/guides/maxtv.hrvatskitelekom.hr.guide.xml</code></td></tr>
<tr><td align="left" nowrap>🇨🇿 Czechia</td><td align="left" nowrap><code>https://iptv-org.github.io/epg/guides/m.tv.sms.cz.guide.xml</code></td></tr>

14
package-lock.json generated
View file

@ -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",

View file

@ -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",

118
sites/tv.cctv.com.channels.xml Executable file
View file

@ -0,0 +1,118 @@
<?xml version="1.0" encoding="UTF-8"?>
<site site="tv.cctv.com">
<channels>
<channel site_id="btv6" xmltv_id="BTVTiYu.cn">BTV体育</channel>
<channel site_id="btvchild" xmltv_id="BTVQiaKuShaoEr.cn">BTV卡酷少儿</channel>
<channel site_id="btvInternational" xmltv_id="BTVGuoJi.cn">BTV国际</channel>
<channel site_id="btv4" xmltv_id="BTVYingShi.cn">BTV影视</channel>
<channel site_id="btv2" xmltv_id="BTVWenYi.cn">BTV文艺</channel>
<channel site_id="btv9" xmltv_id="BTVXinWen.cn">BTV新闻</channel>
<channel site_id="btv7" xmltv_id="BTVShengHuo.cn">BTV生活</channel>
<channel site_id="btv3" xmltv_id="BTVKeJiao.cn">BTV科教</channel>
<channel site_id="btvjishi" xmltv_id="BTVJiShi.cn">BTV纪实</channel>
<channel site_id="btv5" xmltv_id="BTVCaiJing.cn">BTV财经</channel>
<channel site_id="btv8" xmltv_id="BTVQingShao.cn">BTV青少</channel>
<channel site_id="cctv10" xmltv_id="CCTV10.cn">CCTV-10科教</channel>
<channel site_id="cctv11" xmltv_id="CCTV11.cn">CCTV-11戏曲</channel>
<channel site_id="cctv12" xmltv_id="CCTV12.cn">CCTV-12社会与法</channel>
<channel site_id="cctv13" xmltv_id="CCTV13.cn">CCTV-13新闻</channel>
<channel site_id="cctvchild" xmltv_id="CCTV14.cn">CCTV-14少儿</channel>
<channel site_id="cctv15" xmltv_id="CCTV15.cn">CCTV-15音乐</channel>
<channel site_id="cctv1" xmltv_id="CCTV1.cn">CCTV-1综合</channel>
<channel site_id="cctv2" xmltv_id="CCTV2.cn">CCTV-2财经</channel>
<channel site_id="cctv3" xmltv_id="CCTV3.cn">CCTV-3文艺</channel>
<channel site_id="cctv4" xmltv_id="CCTV4.cn">CCTV-4亚洲</channel>
<channel site_id="cctveurope" xmltv_id="CCTV4Europe.cn">CCTV-4欧洲</channel>
<channel site_id="cctvamerica" xmltv_id="CCTV4America.cn">CCTV-4美洲</channel>
<channel site_id="cctv5" xmltv_id="CCTV5.cn">CCTV-5体育</channel>
<channel site_id="cctv6" xmltv_id="CCTV6.cn">CCTV-6电影</channel>
<channel site_id="cctv7" xmltv_id="CCTV7.cn">CCTV-7军事农业</channel>
<channel site_id="cctv8" xmltv_id="CCTV8.cn">CCTV-8电视剧</channel>
<channel site_id="cctvjilu" xmltv_id="CCTV9.cn">CCTV-9纪录</channel>
<channel site_id="shijiedili" xmltv_id="CCTVShiJieDiLi.cn">CCTV世界地理</channel>
<channel site_id="dianshigouwu" xmltv_id="CCTVZhongShiGouWu.cn">CCTV中视购物</channel>
<channel site_id="cctv5plus" xmltv_id="CCTV5Plus.cn">CCTV体育赛事</channel>
<channel site_id="guofang" xmltv_id="CCTVGuoFangJunShi.cn">CCTV国防军事</channel>
<channel site_id="taiqiu" xmltv_id="CCTVYangShiTaiQiu.cn">CCTV央视台球</channel>
<channel site_id="jingpin" xmltv_id="CCTVYangShiWenHuaJingPin.cn">CCTV央视文化精品</channel>
<channel site_id="shishang" xmltv_id="CCTVNuXingShiShang.cn">CCTV女性时尚</channel>
<channel site_id="cctvyule" xmltv_id="CCTVYuLe.cn">CCTV娱乐</channel>
<channel site_id="hjjc" xmltv_id="CCTVHuaiJiuJuChang.cn">CCTV怀旧剧场</channel>
<channel site_id="cctvxiqu" xmltv_id="CCTVXiQu.cn">CCTV戏曲</channel>
<channel site_id="xinkedongman" xmltv_id="CCTVXinKeDongMan.cn">CCTV新科动漫</channel>
<channel site_id="cctvqixiang" xmltv_id="CCTVQiXiang.cn">CCTV气象</channel>
<channel site_id="zhinan" xmltv_id="CCTVDianShiZhiNan.cn">CCTV电视指南</channel>
<channel site_id="diyijuchang" xmltv_id="CCTVDiYiJuChang.cn">CCTV第一剧场</channel>
<channel site_id="cctvlaogushi" xmltv_id="CCTVLaoGuShi.cn">CCTV老故事</channel>
<channel site_id="fyjc" xmltv_id="CCTVFengYunJuChang.cn">CCTV风云剧场</channel>
<channel site_id="cctvfyzq" xmltv_id="CCTVFengYunZuQiu.cn">CCTV风云足球</channel>
<channel site_id="fyyy" xmltv_id="CCTVFengYunYinLe.cn">CCTV风云音乐</channel>
<channel site_id="cctvgaowang" xmltv_id="CCTVGaoErFuWangQiu.cn">CCTV高尔夫网球</channel>
<channel site_id="cetv1" xmltv_id="CETV1.cn">CETV-1</channel>
<channel site_id="cetv2" xmltv_id="CETV2.cn">CETV-2</channel>
<channel site_id="cetv3" xmltv_id="CETV3.cn">CETV-3</channel>
<channel site_id="dongnan" xmltv_id="DongNanWeiShi.cn">东南卫视</channel>
<channel site_id="dongfang" xmltv_id="DongFangWeiShi.cn">东方卫视</channel>
<channel site_id="shuhua" xmltv_id="ShuHua.cn">书画</channel>
<channel site_id="yunnan" xmltv_id="YunNanWeiShi.cn">云南卫视</channel>
<channel site_id="bingtuan" xmltv_id="BingTuanWeiShi.cn">兵团卫视</channel>
<channel site_id="neimenggu" xmltv_id="NeiMengGuWeiShi.cn">内蒙古卫视</channel>
<channel site_id="btv1" xmltv_id="BeiJingWeiShi.cn">北京卫视</channel>
<channel site_id="wsjk" xmltv_id="WeiShengJianKang.cn">卫生健康</channel>
<channel site_id="xiamen" xmltv_id="ShaMenWeiShi.cn">厦门卫视</channel>
<channel site_id="jilin" xmltv_id="JiLinWeiShi.cn">吉林卫视</channel>
<channel site_id="sichuan" xmltv_id="SiChuanWeiShi.cn">四川卫视</channel>
<channel site_id="shuowenjiezi" xmltv_id="GuoXueShuoWenJieZi.cn">国学(说文解字)</channel>
<channel site_id="tianyuanweiqi" xmltv_id="TianYuanWeiQi.cn">天元围棋</channel>
<channel site_id="tianjin1" xmltv_id="TianJin1Tao.cn">天津1套</channel>
<channel site_id="tianjin2" xmltv_id="TianJin2Tao.cn">天津2套</channel>
<channel site_id="tianjin" xmltv_id="TianJinWeiShi.cn">天津卫视</channel>
<channel site_id="ningxia" xmltv_id="NingXiaWeiShi.cn">宁夏卫视</channel>
<channel site_id="nbtv1" xmltv_id="NingBoYiTao.cn">宁波一套</channel>
<channel site_id="nbtv3" xmltv_id="NingBoSanTao.cn">宁波三套</channel>
<channel site_id="nbtv2" xmltv_id="NingBoErTao.cn">宁波二套</channel>
<channel site_id="nbtv5" xmltv_id="NingBoWuTao.cn">宁波五套</channel>
<channel site_id="nbtv4" xmltv_id="NingBoSiTao.cn">宁波四套</channel>
<channel site_id="anhui" xmltv_id="AnHuiWeiShi.cn">安徽卫视</channel>
<channel site_id="shandong" xmltv_id="ShanDongWeiShi.cn">山东卫视</channel>
<channel site_id="sdetv" xmltv_id="ShanDongJiaoYuTai.cn">山东教育台</channel>
<channel site_id="shan1xi" xmltv_id="ShanXiWeiShi.cn">山西卫视</channel>
<channel site_id="guangdong" xmltv_id="GuangDongWeiShi.cn">广东卫视</channel>
<channel site_id="guangxi" xmltv_id="GuangXiWeiShi.cn">广西卫视</channel>
<channel site_id="yanbian" xmltv_id="YanBianWeiShi.cn">延边卫视</channel>
<channel site_id="cdtv1" xmltv_id="ChengDuXinWenZongHe.cn">成都新闻综合</channel>
<channel site_id="cdtv2new" xmltv_id="ChengDuJingJiZiXunFuWu.cn">成都经济资讯服务</channel>
<channel site_id="sheyingpindao" xmltv_id="SheYing.cn">摄影</channel>
<channel site_id="wenwubaoku" xmltv_id="WenWuBaoKu.cn">文物宝库</channel>
<channel site_id="xinjiang" xmltv_id="XinJiangWeiShi.cn">新疆卫视</channel>
<channel site_id="travel" xmltv_id="LuYouWeiShi.cn">旅游卫视</channel>
<channel site_id="zaoqijiaoyu" xmltv_id="ZaoQiJiaoYu.cn">早期教育</channel>
<channel site_id="cctvliyuan" xmltv_id="LiYuan.cn">梨园</channel>
<channel site_id="wushushijie" xmltv_id="WuShuShiJie.cn">武术世界</channel>
<channel site_id="jiangsu" xmltv_id="JiangSuWeiShi.cn">江苏卫视</channel>
<channel site_id="jiangxi" xmltv_id="JiangXiWeiShi.cn">江西卫视</channel>
<channel site_id="cctvqimo" xmltv_id="QiMo.cn">汽摩</channel>
<channel site_id="hebei" xmltv_id="HeBeiWeiShi.cn">河北卫视</channel>
<channel site_id="henan" xmltv_id="HeNanWeiShi.cn">河南卫视</channel>
<channel site_id="zhejiang" xmltv_id="ZheJiangWeiShi.cn">浙江卫视</channel>
<channel site_id="shenzhen" xmltv_id="ShenZhenWeiShi.cn">深圳卫视</channel>
<channel site_id="youxijingji" xmltv_id="YouXiJingJi.cn">游戏竞技</channel>
<channel site_id="hubei" xmltv_id="HuBeiWeiShi.cn">湖北卫视</channel>
<channel site_id="hunan" xmltv_id="HuNanWeiShi.cn">湖南卫视</channel>
<channel site_id="tianjinbh" xmltv_id="BinHaiXinWenZongHe.cn">滨海新闻综合</channel>
<channel site_id="tianjinbh2" xmltv_id="BinHaiZongYiPinDao.cn">滨海综艺频道</channel>
<channel site_id="huanqiuqiguan" xmltv_id="HuanQiuQiGuan.cn">环球奇观</channel>
<channel site_id="xiandainvxing" xmltv_id="XianDaiNuXing.cn">现代女性</channel>
<channel site_id="zhuhaiyitao" xmltv_id="ZhuHaiYiTao.cn">珠海一套</channel>
<channel site_id="zhuhaiertao" xmltv_id="ZhuHaiErTao.cn">珠海二套</channel>
<channel site_id="gansu" xmltv_id="GanSuWeiShi.cn">甘肃卫视</channel>
<channel site_id="xizang" xmltv_id="XiCangWeiShi.cn">西藏卫视</channel>
<channel site_id="cctvzhengquanzixun" xmltv_id="ZhengQuanZiXun.cn">证券资讯</channel>
<channel site_id="guizhou" xmltv_id="GuiZhouWeiShi.cn">贵州卫视</channel>
<channel site_id="liaoning" xmltv_id="LiaoNingWeiShi.cn">辽宁卫视</channel>
<channel site_id="chongqing" xmltv_id="ChongQingWeiShi.cn">重庆卫视</channel>
<channel site_id="qinghai" xmltv_id="QingHaiWeiShi.cn">青海卫视</channel>
<channel site_id="cctvliangzhuang" xmltv_id="JingZhuang.cn">靓妆</channel>
<channel site_id="heilongjiang" xmltv_id="HeiLongJiangWeiShi.cn">黑龙江卫视</channel>
</channels>
</site>

View file

@ -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 || []
}