CCTV1高清和CCTV2高清节目表获取接口及PHP生成XML代码
使用接口获取CCTV1高清和CCTV2高清节目表数据
请求接口1:
http://epg.iqy.sc96655.com/v1/getPrograms?channel=3341&&begin_time=2023-08-31+00%3A00%3A00&end_time=2023-08-31+23%3A59%3A59
返回内容示例:
[
{
'ret_status': 0,
'ret_msg': 'success',
'ret_data': [
{
'end_time': '2023-08-31 00:55:00',
'begin_time': '2023-08-31 00:00:00',
'bd_name': 'CCTV1高清',
'channel': 3342,
'desc': '什么'
},
{
'end_time': '2023-08-31 01:23:00',
'begin_time': '2023-08-31 00:55:00',
'bd_name': 'CCTV1高清',
'channel': 3342,
'desc': '说法'
}
]
}
]
请求接口2:
http://epg.iqy.sc96655.com/v1/getPrograms?channel=3352&&begin_time=2023-08-31+00%3A00%3A00&end_time=2023-08-31+23%3A59%3A59
返回内容示例:
[
{
'ret_status': 0,
'ret_msg': 'success',
'ret_data': [
{
'end_time': '2023-08-31 00:55:00',
'begin_time': '2023-08-31 00:00:00',
'bd_name': 'CCTV2高清',
'channel': 3343,
'desc': '开始'
},
{
'end_time': '2023-08-31 01:23:00',
'begin_time': '2023-08-31 00:55:00',
'bd_name': 'CCTV2高清',
'channel': 3343,
'desc': '今日'
}
]
}
]
使用PHP生成XML文件
以下PHP代码示例使用curl_multi_init同时请求全部接口,循环生成日期与接口id,最终生成一个包含节目信息的XML文件:
$channel_api = 'http://epg.iqy.sc96655.com/v1/getPrograms';
$channel_codes = array(3341, 3352);
$date_range = array();
for ($i = 0; $i < 1; $i++) {
$date_range[] = date('Y-m-d', strtotime('+$i days'));
}
$xml = '<?xml version='1.0' encoding='UTF-8'?>' . '\n';
$xml .= '<!DOCTYPE tv SYSTEM 'http://xmltv.cvs.sourceforge.net/viewvc/xmltv/xmltv/xmltv.dtd'>' . '\n';
$xml .= '<tv generator-info-name='Sage' generator-info-url='https://github.com/OpenAI/gpt/blob/main/samples/dialogue.py'>' . '\n';
foreach ($channel_codes as $channel_code) {
$url = $channel_api . '?channel=' . $channel_code . '&begin_time=' . $date_range[0] . '+00%3A00%3A00&end_time=' . $date_range[0] . '+23%3A59%3A59';
$response = file_get_contents($url);
$data = json_decode($response, true);
if ($data[0]['ret_status'] == 0) {
foreach ($data[0]['ret_data'] as $program) {
$xml .= '<channel id='' . $program['bd_name'] . ''>' . '\n';
$xml .= '<display-name lang='zh'>' . $program['bd_name'] . '</display-name>' . '\n';
$xml .= '</channel>' . '\n';
$xml .= '<programme channel='' . $program['bd_name'] . '' start='' . str_replace('-', '', $date_range[0]) . str_replace(':', '', substr($program['begin_time'], 0, -3)) . ' +0800' stop='' . str_replace('-', '', $date_range[0]) . str_replace(':', '', substr($program['end_time'], 0, -3)) . ' +0800'>' . '\n';
$xml .= '<title lang='zh'>' . $program['desc'] . '</title>' . '\n';
$xml .= '</programme>' . '\n';
}
}
}
$xml .= '</tv>';
file_put_contents('epg.xml', $xml);
代码说明:
- 使用
curl_multi_init可以同时请求多个接口,提高效率。 - 使用
file_get_contents获取接口响应。 - 将响应数据解析为JSON格式。
- 循环遍历JSON数据,生成XML文件内容。
- 使用
file_put_contents将XML内容保存到epg.xml文件中。
注意:
- 代码中的
date_range数组可以根据需要修改,控制日期范围。 - 确保服务器开启了
file_get_contents函数,或使用curl库发送HTTP请求。
通过以上步骤,您就可以成功获取CCTV1高清和CCTV2高清的节目表数据,并生成一个包含节目信息的XML文件。
原文地址: https://www.cveoy.top/t/topic/qABp 著作权归作者所有。请勿转载和采集!