最新回复 (2)
-
虽然已经找到别的方法代替了,但是我不喜欢其它的cms,就喜欢本站的。
现在就差一个问题了,就可以把网站做成json接口,您能帮我看看吗?
zyapi.php原版代码:
[code]<?php/******************************海洋CMS功能:资源发布zyAPI模块版本:1.0开发:海洋******************************/header('Content-Type: application/json; charset=UTF-8');require_once("include/common.php");require_once("include/main.class.php");require_once("data/config.cache.inc.php");// 判断是否开启api服务$isopenapi = file_get_contents("data/admin/isapi.txt");if ($isopenapi == "0") {echo json_encode(["code" => 0, "msg" => "服务已关闭"]);exit;}$app_apipagenum = 20; // 每页显示条数$action = addslashes($_GET['ac']);$rtype = addslashes($_GET['t']);$rpage = addslashes($_GET['pg']);$rkey = addslashes($_GET['wd']);$rday = addslashes($_GET['h']);$ids = addslashes($_GET['ids']);if (!isNum($rtype)) { $rtype = 0; } else { $rtype = intval($rtype); }if (!isNum($rpage)) { $rpage = 1; } else { $rpage = intval($rpage); }if ($rpage < 1) { $rpage = 1; }if (!isNum($rday)) { $rday = 0; } else { $rday = intval($rday); }$app_apiver = "5.0";switch($action) {case "videolist":cj();break;default:vlist();break;}// 分类列表获取函数function get_type_list() {global $dsql;$classList = [];$sql = "SELECT tid AS type_id, upid AS type_pid, tname AS type_name FROM sea_type ORDER BY tid ASC";$dsql->SetQuery($sql);$dsql->Execute('type_list');while ($row = $dsql->GetObject('type_list')) {$classList[] = ["type_id" => (int)$row->type_id,"type_pid" => (int)$row->type_pid,"type_name" => $row->type_name];}return $classList;}function cj() {global $dsql, $rtype, $rpage, $rkey, $rday, $action, $app_apiver, $app_apipagenum, $cfg_basehost, $ids;$response = ["code" => 1,"msg" => "数据列表","page" => $rpage,"limit" => $app_apipagenum,"list" => [],"class" => get_type_list() // 追加分类];$sql = "SELECT d.*, p.body AS v_playdata, p.body1 AS v_playdata1, t.tnameFROM sea_data dLEFT JOIN sea_type t ON t.tid = d.tidLEFT JOIN sea_playdata p ON p.v_id = d.v_idWHERE d.v_recycled = 0 ";$sql1 = "SELECT COUNT(*) AS dd FROM sea_data WHERE v_recycled = 0 ";if ($ids != "") {$ids = addslashes($ids);$sql .= " AND d.v_id IN (" . $ids . ")";$sql1 .= " AND v_id IN (" . $ids . ")";}if ($rtype > 0) {$sql .= " AND d.tid = " . $rtype;$sql1 .= " AND tid = " . $rtype;}if ($rday > 0) {$whereStr = " AND d.v_addtime > UNIX_TIMESTAMP(DATE_SUB(NOW(), INTERVAL " . $rday . " HOUR))";$sql .= $whereStr;$sql1 .= $whereStr;}$row1 = $dsql->GetOne($sql1);$nums = is_array($row1) ? $row1['dd'] : 0;$pagecount = ceil($nums / $app_apipagenum);$sql .= " LIMIT " . ($app_apipagenum * ($rpage - 1)) . "," . $app_apipagenum;$dsql->SetQuery($sql);$dsql->Execute('video_c');// 在cj()函数的循环中修改:while ($row = $dsql->GetObject('video_c')) {$response['list'][] = ["vod_id" => $row->v_id,"vod_name" => $row->v_name,"type_id" => $row->tid,"type_name" => $row->tname,"vod_time" => MyDate('Y-m-d H:i:s', $row->v_addtime),"vod_remarks" => $row->v_len . " Mins",// 修改以下两行"vod_play_from" => "量子云", // 明确两个来源名称"vod_play_url" => processPlayData($row->v_playdata),"vod_pic" => $row->v_pic];}$response['pagecount'] = $pagecount;$response['total'] = $nums;echo json_encode($response, JSON_UNESCAPED_UNICODE);}function vlist() {global $dsql, $rtype, $rpage, $rkey, $rday, $action, $app_apiver, $app_apipagenum, $cfg_basehost;$response = ["code" => 1,"msg" => "数据列表","page" => $rpage,"limit" => $app_apipagenum,"list" => [],"class" => get_type_list()];$sql = "SELECT d.v_id, d.v_name, d.v_state, d.v_note, d.v_pic, d.tid, d.v_addtime, p.body AS v_playdata, p.body1 AS v_playdata1, t.tnameFROM sea_data dLEFT JOIN sea_type t ON t.tid = d.tidLEFT JOIN sea_playdata p ON p.v_id = d.v_idWHERE d.v_recycled = 0 ";$sql1 = "SELECT COUNT(*) AS dd FROM sea_data WHERE v_recycled = 0 ";if ($rtype > 0) {$sql .= " AND d.tid = " . $rtype;$sql1 .= " AND tid = " . $rtype;}if ($rkey != "") {$sql .= " AND d.v_name LIKE '%" . $rkey . "%' ";$sql1 .= " AND v_name LIKE '%" . $rkey . "%' ";}$sql .= " ORDER BY d.v_addtime DESC";$row1 = $dsql->GetOne($sql1);$nums = is_array($row1) ? $row1['dd'] : 0;$pagecount = ceil($nums / $app_apipagenum);$sql .= " LIMIT " . ($app_apipagenum * ($rpage - 1)) . "," . $app_apipagenum;$dsql->SetQuery($sql);$dsql->Execute('video_list');while ($row = $dsql->GetObject('video_list')) {$vod_pic = $row->v_pic; // 正确赋值图片字段$vod_playdata = $row->v_playdata; // 正确赋值播放数据$response['list'][] = ["vod_id" => $row->v_id,"vod_name" => $row->v_name,"type_id" => $row->tid,"type_name" => $row->tname,"vod_time" => MyDate('Y-m-d H:i:s', $row->v_addtime),"vod_remarks" => $row->v_note,"vod_pic" => $vod_pic,"vod_play_from" => "量子云","vod_play_url" => processPlayData($vod_playdata),"vod_playdata" => $vod_playdata];}$response['pagecount'] = $pagecount;$response['total'] = $nums;echo json_encode($response, JSON_UNESCAPED_UNICODE);}function processPlayData($data) {if (empty($data)) return "";$episodes = explode('#', $data);$processed = [];foreach ($episodes as $ep) {$parts = explode('$', $ep);if (count($parts) >= 2) {// 提取干净的剧集名和URL(去除可能的来源前缀)$name = trim(end(explode('#', $parts[0]))); // 处理类似 "量子云#第02集" 的情况$url = trim($parts[1]);$processed[] = $name . '$' . $url;}}return implode('#', $processed);}function isnum($varnum) {$string_var = "0123456789";for ($i = 0; $i < strlen($varnum); $i++) {if (strpos($string_var, $varnum[$i]) === false) {return false;}}return true;}?>[/code]
修改后的json接口代码zyapi.php
[code]<?php/******************************海洋CMS功能:资源发布zyAPI模块版本:1.0开发:海洋******************************/header('Content-Type: application/json; charset=UTF-8');require_once("include/common.php");require_once("include/main.class.php");require_once("data/config.cache.inc.php");// 判断是否开启api服务$isopenapi = file_get_contents("data/admin/isapi.txt");if ($isopenapi == "0") {echo json_encode(["code" => 0, "msg" => "服务已关闭"]);exit;}$app_apipagenum = 20; // 每页显示条数$action = addslashes($_GET['ac']);$rtype = addslashes($_GET['t']);$rpage = addslashes($_GET['pg']);$rkey = addslashes($_GET['wd']);$rday = addslashes($_GET['h']);$ids = addslashes($_GET['ids']);if (!isNum($rtype)) { $rtype = 0; } else { $rtype = intval($rtype); }if (!isNum($rpage)) { $rpage = 1; } else { $rpage = intval($rpage); }if ($rpage < 1) { $rpage = 1; }if (!isNum($rday)) { $rday = 0; } else { $rday = intval($rday); }$app_apiver = "5.0";switch($action) {case "videolist":cj();break;default:vlist();break;}// 分类列表获取函数function get_type_list() {global $dsql;$classList = [];$sql = "SELECT tid AS type_id, upid AS type_pid, tname AS type_name FROM sea_type ORDER BY tid ASC";$dsql->SetQuery($sql);$dsql->Execute('type_list');while ($row = $dsql->GetObject('type_list')) {$classList[] = ["type_id" => (int)$row->type_id,"type_pid" => (int)$row->type_pid,"type_name" => $row->type_name];}return $classList;}function cj() {global $dsql, $rtype, $rpage, $rkey, $rday, $action, $app_apiver, $app_apipagenum, $cfg_basehost, $ids;$response = ["code" => 1,"msg" => "数据列表","page" => $rpage,"limit" => $app_apipagenum,"list" => [],"class" => get_type_list() // 追加分类];$sql = "SELECT d.*, p.body AS v_playdata, p.body1 AS v_playdata1, t.tnameFROM sea_data dLEFT JOIN sea_type t ON t.tid = d.tidLEFT JOIN sea_playdata p ON p.v_id = d.v_idWHERE d.v_recycled = 0 ";$sql1 = "SELECT COUNT(*) AS dd FROM sea_data WHERE v_recycled = 0 ";if ($ids != "") {$ids = addslashes($ids);$sql .= " AND d.v_id IN (" . $ids . ")";$sql1 .= " AND v_id IN (" . $ids . ")";}if ($rtype > 0) {$sql .= " AND d.tid = " . $rtype;$sql1 .= " AND tid = " . $rtype;}if ($rday > 0) {$whereStr = " AND d.v_addtime > UNIX_TIMESTAMP(DATE_SUB(NOW(), INTERVAL " . $rday . " HOUR))";$sql .= $whereStr;$sql1 .= $whereStr;}$row1 = $dsql->GetOne($sql1);$nums = is_array($row1) ? $row1['dd'] : 0;$pagecount = ceil($nums / $app_apipagenum);$sql .= " LIMIT " . ($app_apipagenum * ($rpage - 1)) . "," . $app_apipagenum;$dsql->SetQuery($sql);$dsql->Execute('video_c');// 在cj()函数的循环中修改:while ($row = $dsql->GetObject('video_c')) {$response['list'][] = ["vod_id" => $row->v_id,"vod_name" => $row->v_name,"type_id" => $row->tid,"type_name" => $row->tname,"vod_time" => MyDate('Y-m-d H:i:s', $row->v_addtime),"vod_remarks" => $row->v_len . " Mins",// 修改以下两行"vod_play_from" => "量子云", // 明确两个来源名称"vod_play_url" => processPlayData($row->v_playdata),"vod_pic" => $row->v_pic];}$response['pagecount'] = $pagecount;$response['total'] = $nums;echo json_encode($response, JSON_UNESCAPED_UNICODE);}function vlist() {global $dsql, $rtype, $rpage, $rkey, $rday, $action, $app_apiver, $app_apipagenum, $cfg_basehost;$response = ["code" => 1,"msg" => "数据列表","page" => $rpage,"limit" => $app_apipagenum,"list" => [],"class" => get_type_list()];$sql = "SELECT d.v_id, d.v_name, d.v_state, d.v_note, d.v_pic, d.tid, d.v_addtime, p.body AS v_playdata, p.body1 AS v_playdata1, t.tnameFROM sea_data dLEFT JOIN sea_type t ON t.tid = d.tidLEFT JOIN sea_playdata p ON p.v_id = d.v_idWHERE d.v_recycled = 0 ";$sql1 = "SELECT COUNT(*) AS dd FROM sea_data WHERE v_recycled = 0 ";if ($rtype > 0) {$sql .= " AND d.tid = " . $rtype;$sql1 .= " AND tid = " . $rtype;}if ($rkey != "") {$sql .= " AND d.v_name LIKE '%" . $rkey . "%' ";$sql1 .= " AND v_name LIKE '%" . $rkey . "%' ";}$sql .= " ORDER BY d.v_addtime DESC";$row1 = $dsql->GetOne($sql1);$nums = is_array($row1) ? $row1['dd'] : 0;$pagecount = ceil($nums / $app_apipagenum);$sql .= " LIMIT " . ($app_apipagenum * ($rpage - 1)) . "," . $app_apipagenum;$dsql->SetQuery($sql);$dsql->Execute('video_list');while ($row = $dsql->GetObject('video_list')) {$vod_pic = $row->v_pic; // 正确赋值图片字段$vod_playdata = $row->v_playdata; // 正确赋值播放数据$response['list'][] = ["vod_id" => $row->v_id,"vod_name" => $row->v_name,"type_id" => $row->tid,"type_name" => $row->tname,"vod_time" => MyDate('Y-m-d H:i:s', $row->v_addtime),"vod_remarks" => $row->v_note,"vod_pic" => $vod_pic,"vod_play_from" => "量子云","vod_play_url" => processPlayData($vod_playdata),"vod_playdata" => $vod_playdata];}$response['pagecount'] = $pagecount;$response['total'] = $nums;echo json_encode($response, JSON_UNESCAPED_UNICODE);}function processPlayData($data) {if (empty($data)) return "";$episodes = explode('#', $data);$processed = [];foreach ($episodes as $ep) {$parts = explode('$', $ep);if (count($parts) >= 2) {// 提取干净的剧集名和URL(去除可能的来源前缀)$name = trim(end(explode('#', $parts[0]))); // 处理类似 "量子云#第02集" 的情况$url = trim($parts[1]);$processed[] = $name . '$' . $url;}}return implode('#', $processed);}function isnum($varnum) {$string_var = "0123456789";for ($i = 0; $i < strlen($varnum); $i++) {if (strpos($string_var, $varnum[$i]) === false) {return false;}}return true;}?>[/code]
原版显示的是xml接口,修改版显示的是json接口
问题:调用这个json接口后,tvbox显示加载成功,首页也显示出了完整的列表。但是播放视频全部都是同一个视频。比如第一个视频是:海洋cms
之后我随便点开一个名字不同的视频,接下的全部播放的都是这个。
您能帮我看看代码哪里出现问题了吗?十分无比的万分感谢了! -
