_param = input('','','trim,urldecode'); } public function index() { } public function vod() { if($GLOBALS['config']['api']['vod']['status'] != 1){ echo 'closed'; exit; } if($GLOBALS['config']['api']['vod']['charge'] == 1) { $h = $_SERVER['REMOTE_ADDR']; if (!$h) { echo lang('api/auth_err'); exit; } else { $auth = $GLOBALS['config']['api']['vod']['auth']; $this->checkDomainAuth($auth); } } $cache_time = intval($GLOBALS['config']['api']['vod']['cachetime']); $cach_name = $GLOBALS['config']['app']['cache_flag']. '_'.'api_vod_'.md5(http_build_query($this->_param)); $html = Cache::get($cach_name); if(empty($html) || $cache_time==0) { $where = []; if (!empty($this->_param['ids'])) { $where['vod_id'] = ['in', $this->_param['ids']]; } if (!empty($GLOBALS['config']['api']['vod']['typefilter'])) { $where['type_id'] = ['in', $GLOBALS['config']['api']['vod']['typefilter']]; } if (!empty($this->_param['t'])) { if (empty($GLOBALS['config']['api']['vod']['typefilter']) || strpos($GLOBALS['config']['api']['vod']['typefilter'], $this->_param['t']) !== false) { $where['type_id'] = $this->_param['t']; } } // 支持isend参数,是否完结 if (isset($this->_param['isend'])) { $where['vod_isend'] = $this->_param['isend'] == 1 ? 1 : 0; } if (!empty($this->_param['h'])) { $todaydate = date('Y-m-d', strtotime('+1 days')); $tommdate = date('Y-m-d H:i:s', strtotime('-' . $this->_param['h'] . ' hours')); $todayunix = strtotime($todaydate); $tommunix = strtotime($tommdate); $where['vod_time'] = [['gt', $tommunix], ['lt', $todayunix]]; } if (!empty($this->_param['wd'])) { $where['vod_name'] = ['like', '%' . $this->_param['wd'] . '%']; } // 增加年份筛选 https://github.com/magicblack/maccms10/issues/815 if (!empty($this->_param['year'])) { $param_year = trim($this->_param['year']); if (strlen($param_year) == 4) { $year = intval($param_year); } elseif (strlen($param_year) == 9) { $start = (int)substr($param_year, 0, 4); $end = (int)substr($param_year, 5, 4); if ($start > $end) { $tmp_num = $end; $end = $start; $start = $tmp_num; } $tmp_arr = []; $start = max($start, 1900); $end = min($end, date('Y') + 3); for ($i = $start; $i <= $end; $i++) { $tmp_arr[] = $i; } $year = join(',', $tmp_arr); } $where['vod_year'] = ['in', explode(',', $year)]; } if (empty($GLOBALS['config']['api']['vod']['from']) && !empty($this->_param['from']) && strlen($this->_param['from']) >= 2) { $GLOBALS['config']['api']['vod']['from'] = $this->_param['from']; } // 采集播放组支持多个播放器 // https://github.com/magicblack/maccms10/issues/888 if (!empty($GLOBALS['config']['api']['vod']['from'])) { $vod_play_from_list = explode(',', trim($GLOBALS['config']['api']['vod']['from'])); $vod_play_from_list = array_unique($vod_play_from_list); $vod_play_from_list = array_filter($vod_play_from_list); if (!empty($vod_play_from_list)) { $where['vod_play_from'] = ['or']; foreach ($vod_play_from_list as $vod_play_from) { array_unshift($where['vod_play_from'], ['like', '%' . trim($vod_play_from) . '%']); } } } if (!empty($GLOBALS['config']['api']['vod']['datafilter'])) { $where['_string'] .= ' ' . $GLOBALS['config']['api']['vod']['datafilter']; } if (empty($this->_param['pg'])) { $this->_param['pg'] = 1; } $pagesize = $GLOBALS['config']['api']['vod']['pagesize']; if (!empty($this->_param['pagesize']) && $this->_param['pagesize'] > 0) { $pagesize = min((int)$this->_param['pagesize'], 100); } $sort_direction = !empty($this->_param['sort_direction']) && $this->_param['sort_direction'] == 'asc' ? 'asc' : 'desc'; $order = 'vod_time ' . $sort_direction; $field = 'vod_id,vod_name,type_id,"" as type_name,vod_en,vod_time,vod_remarks,vod_play_from,vod_time'; if ($this->_param['ac'] == 'videolist' || $this->_param['ac'] == 'detail') { $field = '*'; } $res = model('vod')->listData($where, $order, $this->_param['pg'], $pagesize, 0, $field, 0); if ($this->_param['at'] == 'xml') { $html = $this->vod_xml($res); } else { $html = json_encode($this->vod_json($res),JSON_UNESCAPED_UNICODE); } $html = mac_filter_tags($html); if($cache_time>0) { Cache::set($cach_name, $html, $cache_time); } } // https://github.com/magicblack/maccms10/issues/818 影片的播放量+1 if ( isset($this->_param['ac']) && $this->_param['ac'] == 'detail' && !empty($this->_param['ids']) && (int)$this->_param['ids'] == $this->_param['ids'] && !empty($GLOBALS['config']['api']['vod']['detail_inc_hits']) ) { model('Vod')->fieldData(['vod_id' => (int)$this->_param['ids']], ['vod_hits' => ['inc', 1]]); } echo $html; exit; } public function vod_url_deal($urls,$froms,$from,$flag) { $res_xml = ''; $res_json = []; $arr1 = explode("$$$",$urls); $arr1count = count($arr1); $arr2 = explode("$$$",$froms); $arr2count = count($arr2); for ($i=0;$i<$arr2count;$i++){ if ($arr1count >= $i){ if($from!=''){ if($arr2[$i]==$from || str_contains($from, $arr2[$i])){ $res_xml .= '
'; $res_json[$arr2[$i]] = $arr1[$i]; } } else{ $res_xml .= '
'; $res_json[$arr2[$i]] = $arr1[$i]; } } } $res = str_replace(array(chr(10),chr(13)),array('','#'),$res_xml); return $flag=='xml' ? $res_xml : $res_json; } public function vod_json($res) { $type_list = model('Type')->getCache('type_list'); foreach($res['list'] as $k=>&$v){ $type_info = $type_list[$v['type_id']]; $v['type_name'] = $type_info['type_name']; $v['vod_time'] = date('Y-m-d H:i:s',$v['vod_time']); if(substr($v["vod_pic"],0,4)=="mac:"){ $v["vod_pic"] = str_replace('mac:',$this->getImgUrlProtocol('vod'), $v["vod_pic"]); } elseif(!empty($v["vod_pic"]) && substr($v["vod_pic"],0,4)!="http" && substr($v["vod_pic"],0,2)!="//"){ $v["vod_pic"] = $GLOBALS['config']['api']['vod']['imgurl'] . $v["vod_pic"]; } if ($this->_param['ac']=='videolist' || $this->_param['ac']=='detail') { // 如果指定返回播放组,则只返回对应播放组的播放数据 // https://github.com/magicblack/maccms10/issues/957 if (!empty($GLOBALS['config']['api']['vod']['from'])) { // 准备数据,逐个处理 $arr_from = explode('$$$', $v['vod_play_from']); $arr_url = explode('$$$', $v['vod_play_url']); $arr_server = explode('$$$', $v['vod_play_server']); $arr_note = explode('$$$', $v['vod_play_note']); $vod_play_from_list = explode(',', trim($GLOBALS['config']['api']['vod']['from'])); $vod_play_from_list = array_unique($vod_play_from_list); $vod_play_from_list = array_filter($vod_play_from_list); $vod_play_url_list = []; $vod_play_server_list = []; $vod_play_note_list = []; foreach ($vod_play_from_list as $vod_play_from_index => $vod_play_from) { $key = array_search($vod_play_from, $arr_from); if ($key === false) { unset($vod_play_from_list[$vod_play_from_index]); continue; } $vod_play_url_list[] = $arr_url[$key]; $vod_play_server_list[] = $arr_server[$key]; $vod_play_note_list[] = $arr_note[$key]; } $res['list'][$k]['vod_play_from'] = join(',', $vod_play_from_list); $res['list'][$k]['vod_play_url'] = join('$$$', $vod_play_url_list); $res['list'][$k]['vod_play_server'] = join('$$$', $vod_play_server_list); $res['list'][$k]['vod_play_note'] = join('$$$', $vod_play_note_list); } } else { if (!empty($GLOBALS['config']['api']['vod']['from'])) { // 准备数据,逐个处理 $arr_from = explode('$$$', $v['vod_play_from']); $vod_play_from_list = explode(',', trim($GLOBALS['config']['api']['vod']['from'])); $vod_play_from_list = array_unique($vod_play_from_list); $vod_play_from_list = array_filter($vod_play_from_list); foreach ($vod_play_from_list as $vod_play_from_index => $vod_play_from) { $key = array_search($vod_play_from, $arr_from); if ($key === false) { unset($vod_play_from_list[$vod_play_from_index]); continue; } } $res['list'][$k]['vod_play_from'] = join(',', $vod_play_from_list); } else { $res['list'][$k]['vod_play_from'] = str_replace('$$$', ',', $v['vod_play_from']); } } } if($this->_param['ac']!='videolist' && $this->_param['ac']!='detail') { $class = []; $typefilter = explode(',',$GLOBALS['config']['api']['vod']['typefilter']); foreach ($type_list as $k=>&$v) { if (!empty($GLOBALS['config']['api']['vod']['typefilter'])){ if(in_array($v['type_id'],$typefilter)) { $class[] = ['type_id' => $v['type_id'], 'type_pid' => $v['type_pid'], 'type_name' => $v['type_name']]; } } else { $class[] = ['type_id' => $v['type_id'], 'type_pid' => $v['type_pid'], 'type_name' => $v['type_name']]; } } $res['class'] = $class; } return $res; } public function vod_xml($res) { $xml = ''; $xml .= ''; $type_list = model('Type')->getCache('type_list'); //视频列表开始 $xml .= ''; foreach($res['list'] as $k=>&$v){ $type_info = $type_list[$v['type_id']]; $xml .= ''; } $xml .= ''; //视频列表结束 if($this->_param['ac'] != 'videolist' && $this->_param['ac']!='detail') { //分类列表开始 $xml .= ""; $typefilter = explode(',',$GLOBALS['config']['api']['vod']['typefilter']); foreach ($type_list as $k=>&$v) { if($v['type_mid']==1) { if (!empty($GLOBALS['config']['api']['vod']['typefilter'])){ if(in_array($v['type_id'],$typefilter)) { $xml .= "" . $v["type_name"] . ""; } } else { $xml .= "" . $v["type_name"] . ""; } } } unset($rs); $xml .= ""; //分类列表结束 } $xml .= ""; return $xml; } public function art() { if($GLOBALS['config']['api']['art']['status'] != 1){ echo 'closed';die; } if($GLOBALS['config']['api']['art']['charge'] == 1) { $h = $_SERVER['REMOTE_ADDR']; if (!$h) { echo lang('api/auth_err'); exit; } else { $auth = $GLOBALS['config']['api']['art']['auth']; $this->checkDomainAuth($auth); } } $cache_time = intval($GLOBALS['config']['api']['art']['cachetime']); $cach_name = $GLOBALS['config']['app']['cache_flag']. '_'.'api_art_'.md5(http_build_query($this->_param)); $html = Cache::get($cach_name); if(empty($html) || $cache_time==0) { $where = []; if (!empty($this->_param['ids'])) { $where['art_id'] = ['in', $this->_param['ids']]; } if (!empty($this->_param['t'])) { if (empty($GLOBALS['config']['api']['art']['typefilter']) || strpos($GLOBALS['config']['api']['art']['typefilter'], $this->_param['t']) !== false) { $where['type_id'] = $this->_param['t']; } } if (!empty(intval($this->_param['h']))) { $todaydate = date('Y-m-d', strtotime('+1 days')); $tommdate = date('Y-m-d', strtotime('-' . $this->_param['h'] . ' hours')); $todayunix = strtotime($todaydate); $tommunix = strtotime($tommdate); $where['art_time'] = [['gt', $tommunix], ['lt', $todayunix]]; } if (!empty($this->_param['wd'])) { $where['art_name'] = ['like', '%' . $this->_param['wd'] . '%']; } if (!empty($GLOBALS['config']['api']['art']['datafilter'])) { $where['_string'] = $GLOBALS['config']['api']['art']['datafilter']; } if (empty(intval($this->_param['pg']))) { $this->_param['pg'] = 1; } $order = 'art_time desc'; $field = 'art_id,art_name,type_id,"" as type_name,art_en,art_time,art_author,art_from,art_remarks,art_pic,art_time'; if ($this->_param['ac'] == 'detail') { $field = '*'; } $res = model('art')->listData($where, $order, $this->_param['pg'], $GLOBALS['config']['api']['art']['pagesize'], 0, $field, 0); if ($res['code'] > 1) { echo $res['msg']; exit; } $type_list = model('Type')->getCache('type_list'); foreach ($res['list'] as $k => &$v) { $type_info = $type_list[$v['type_id']]; $v['type_name'] = $type_info['type_name']; $v['art_time'] = date('Y-m-d H:i:s', $v['art_time']); if (substr($v["art_pic"], 0, 4) == "mac:") { $v["art_pic"] = str_replace('mac:', $this->getImgUrlProtocol('art'), $v["art_pic"]); } elseif (!empty($v["art_pic"]) && substr($v["art_pic"], 0, 4) != "http" && substr($v["art_pic"], 0, 2) != "//") { $v["art_pic"] = $GLOBALS['config']['api']['art']['imgurl'] . $v["art_pic"]; } if ($this->_param['ac'] == 'detail') { } else { } } if ($this->_param['ac'] != 'detail') { $class = []; $typefilter = explode(',', $GLOBALS['config']['api']['art']['typefilter']); foreach ($type_list as $k => &$v) { if ($v['type_mid'] == 2) { if (!empty($GLOBALS['config']['api']['art']['typefilter'])) { if (in_array($v['type_id'], $typefilter)) { $class[] = ['type_id' => $v['type_id'], 'type_pid' => $v['type_pid'], 'type_name' => $v['type_name']]; } } else { $class[] = ['type_id' => $v['type_id'], 'type_pid' => $v['type_pid'], 'type_name' => $v['type_name']]; } } } $res['class'] = $class; } $html = json_encode($res,JSON_UNESCAPED_UNICODE); $html = mac_filter_tags($html); if($cache_time>0) { Cache::set($cach_name, $html, $cache_time); } } echo $html; exit; } public function actor() { if($GLOBALS['config']['api']['actor']['status'] != 1){ echo 'closed';die; } if($GLOBALS['config']['api']['actor']['charge'] == 1) { $h = $_SERVER['REMOTE_ADDR']; if (!$h) { echo lang('api/auth_err'); exit; } else { $auth = $GLOBALS['config']['api']['actor']['auth']; $this->checkDomainAuth($auth); } } $cache_time = intval($GLOBALS['config']['api']['actor']['cachetime']); $cach_name = $GLOBALS['config']['app']['cache_flag']. '_'.'api_actor_'.md5(http_build_query($this->_param)); $html = Cache::get($cach_name); if(empty($html) || $cache_time==0) { $where = []; if (!empty($this->_param['ids'])) { $where['actor_id'] = ['in', $this->_param['ids']]; } if (!empty($this->_param['t'])) { if (empty($GLOBALS['config']['api']['actor']['typefilter']) || strpos($GLOBALS['config']['api']['actor']['typefilter'], $this->_param['t']) !== false) { $where['type_id'] = $this->_param['t']; } } if (!empty(intval($this->_param['h']))) { $todaydate = date('Y-m-d', strtotime('+1 days')); $tommdate = date('Y-m-d', strtotime('-' . $this->_param['h'] . ' hours')); $todayunix = strtotime($todaydate); $tommunix = strtotime($tommdate); $where['actor_time'] = [['gt', $tommunix], ['lt', $todayunix]]; } if (!empty($this->_param['wd'])) { $where['actor_name'] = ['like', '%' . $this->_param['wd'] . '%']; } if (!empty($GLOBALS['config']['api']['actor']['datafilter'])) { $where['_string'] = $GLOBALS['config']['api']['actor']['datafilter']; } if (empty(intval($this->_param['pg']))) { $this->_param['pg'] = 1; } $order = 'actor_time desc'; $field = 'actor_id,actor_name,type_id,"" as type_name,actor_en,actor_area,actor_time,actor_alias,actor_sex,actor_pic'; if ($this->_param['ac'] == 'detail') { $field = '*'; } $res = model('actor')->listData($where, $order, $this->_param['pg'], $GLOBALS['config']['api']['actor']['pagesize'], 0, $field, 0); if ($res['code'] > 1) { echo $res['msg']; exit; } $type_list = model('Type')->getCache('type_list'); foreach ($res['list'] as $k => &$v) { $type_info = $type_list[$v['type_id']]; $v['type_name'] = $type_info['type_name']; $v['actor_time'] = date('Y-m-d H:i:s', $v['actor_time']); if (substr($v["actor_pic"], 0, 4) == "mac:") { $v["actor_pic"] = str_replace('mac:', $this->getImgUrlProtocol('actor'), $v["actor_pic"]); } elseif (!empty($v["actor_pic"]) && substr($v["actor_pic"], 0, 4) != "http" && substr($v["actor_pic"], 0, 2) != "//") { $v["actor_pic"] = $GLOBALS['config']['api']['actor']['imgurl'] . $v["actor_pic"]; } if ($this->_param['ac'] == 'detail') { } else { } } if ($this->_param['ac'] != 'detail') { $class = []; $typefilter = explode(',', $GLOBALS['config']['api']['actor']['typefilter']); foreach ($type_list as $k => &$v) { if ($v['type_mid'] == 8) { if (!empty($GLOBALS['config']['api']['actor']['typefilter'])) { if (in_array($v['type_id'], $typefilter)) { $class[] = ['type_id' => $v['type_id'], 'type_pid' => $v['type_pid'], 'type_name' => $v['type_name']]; } } else { $class[] = ['type_id' => $v['type_id'], 'type_pid' => $v['type_pid'], 'type_name' => $v['type_name']]; } } } $res['class'] = $class; } $html = json_encode($res,JSON_UNESCAPED_UNICODE); $html = mac_filter_tags($html); if($cache_time>0) { Cache::set($cach_name, $html, $cache_time); } } echo $html; exit; } public function role() { if($GLOBALS['config']['api']['role']['status'] != 1){ echo 'closed';die; } if($GLOBALS['config']['api']['role']['charge'] == 1) { $h = $_SERVER['REMOTE_ADDR']; if (!$h) { echo lang('api/auth_err'); exit; } else { $auth = $GLOBALS['config']['api']['role']['auth']; $this->checkDomainAuth($auth); } } $cache_time = intval($GLOBALS['config']['api']['role']['cachetime']); $cach_name = $GLOBALS['config']['app']['cache_flag']. '_'.'api_role_'.md5(http_build_query($this->_param)); $html = Cache::get($cach_name); if(empty($html) || $cache_time==0) { $where = []; if (!empty($this->_param['ids'])) { $where['role_id'] = ['in', $this->_param['ids']]; } if (!empty($this->_param['t'])) { if (empty($GLOBALS['config']['api']['role']['typefilter']) || strpos($GLOBALS['config']['api']['role']['typefilter'], $this->_param['t']) !== false) { $where['type_id'] = $this->_param['t']; } } if (!empty(intval($this->_param['h']))) { $todaydate = date('Y-m-d', strtotime('+1 days')); $tommdate = date('Y-m-d', strtotime('-' . $this->_param['h'] . ' hours')); $todayunix = strtotime($todaydate); $tommunix = strtotime($tommdate); $where['role_time'] = [['gt', $tommunix], ['lt', $todayunix]]; } if (!empty($this->_param['wd'])) { $where['role_name'] = ['like', '%' . $this->_param['wd'] . '%']; } if (!empty($GLOBALS['config']['api']['role']['datafilter'])) { $where['_string'] = $GLOBALS['config']['api']['role']['datafilter']; } if (empty(intval($this->_param['pg']))) { $this->_param['pg'] = 1; } $order = 'role_time desc'; $field = 'role_id,role_name,role_rid,role_en,role_actor,role_time,role_pic'; if ($this->_param['ac'] == 'detail') { $field = '*'; } $res = model('role')->listData($where, $order, $this->_param['pg'], $GLOBALS['config']['api']['role']['pagesize'], 0, $field, 1); if ($res['code'] > 1) { echo $res['msg']; exit; } foreach ($res['list'] as $k => &$v) { $v['role_time'] = date('Y-m-d H:i:s', $v['role_time']); $v['douban_id'] = $v['data']['vod_douban_id']; $v['vod_name'] = $v['data']['vod_name']; $v['vod_director'] = $v['data']['vod_director']; unset($v['data']); if (substr($v["role_pic"], 0, 4) == "mac:") { $v["role_pic"] = str_replace('mac:', $this->getImgUrlProtocol('role'), $v["role_pic"]); } elseif (!empty($v["role_pic"]) && substr($v["role_pic"], 0, 4) != "http" && substr($v["role_pic"], 0, 2) != "//") { $v["role_pic"] = $GLOBALS['config']['api']['role']['imgurl'] . $v["role_pic"]; } if ($this->_param['ac'] == 'detail') { } else { } } if ($this->_param['ac'] != 'detail') { $class = []; $typefilter = explode(',', $GLOBALS['config']['api']['role']['typefilter']); $res['class'] = $class; } $html = json_encode($res,JSON_UNESCAPED_UNICODE); $html = mac_filter_tags($html); if($cache_time>0) { Cache::set($cach_name, $html, $cache_time); } } echo $html; exit; } public function manga() { if($GLOBALS['config']['api']['manga']['status'] != 1){ echo 'closed'; exit; } if($GLOBALS['config']['api']['manga']['charge'] == 1) { $h = $_SERVER['REMOTE_ADDR']; if (!$h) { echo lang('api/auth_err'); exit; } else { $auth = $GLOBALS['config']['api']['manga']['auth']; $this->checkDomainAuth($auth); } } $cache_time = intval($GLOBALS['config']['api']['manga']['cachetime']); $cach_name = $GLOBALS['config']['app']['cache_flag']. '_'.'api_manga_'.md5(http_build_query($this->_param)); $html = Cache::get($cach_name); if(empty($html) || $cache_time==0) { $where = []; if (!empty($this->_param['ids'])) { $where['manga_id'] = ['in', $this->_param['ids']]; } if (!empty($GLOBALS['config']['api']['manga']['typefilter'])) { $where['type_id'] = ['in', $GLOBALS['config']['api']['manga']['typefilter']]; } if (!empty($this->_param['t'])) { if (empty($GLOBALS['config']['api']['manga']['typefilter']) || strpos($GLOBALS['config']['api']['manga']['typefilter'], $this->_param['t']) !== false) { $where['type_id'] = $this->_param['t']; } } if (!empty($this->_param['h'])) { $todaydate = date('Y-m-d', strtotime('+1 days')); $tommdate = date('Y-m-d H:i:s', strtotime('-' . $this->_param['h'] . ' hours')); $todayunix = strtotime($todaydate); $tommunix = strtotime($tommdate); $where['manga_time'] = [['gt', $tommunix], ['lt', $todayunix]]; } if (!empty($this->_param['wd'])) { $where['manga_name'] = ['like', '%' . $this->_param['wd'] . '%']; } if (!empty($GLOBALS['config']['api']['manga']['datafilter'])) { $where['_string'] .= ' ' . $GLOBALS['config']['api']['manga']['datafilter']; } if (empty($this->_param['pg'])) { $this->_param['pg'] = 1; } $pagesize = $GLOBALS['config']['api']['manga']['pagesize']; if (!empty($this->_param['pagesize']) && $this->_param['pagesize'] > 0) { $pagesize = min((int)$this->_param['pagesize'], 100); } $order = 'manga_time desc'; $field = 'manga_id,manga_name,type_id,"" as type_name,manga_en,manga_time,manga_remarks,manga_chapter_from,manga_time'; if ($this->_param['ac'] == 'detail') { $field = '*'; } $res = model('manga')->listData($where, $order, $this->_param['pg'], $pagesize, 0, $field, 0); if ($this->_param['at'] == 'xml') { $html = $this->manga_xml($res); } else { $html = json_encode($this->manga_json($res),JSON_UNESCAPED_UNICODE); } $html = mac_filter_tags($html); if($cache_time>0) { Cache::set($cach_name, $html, $cache_time); } } echo $html; exit; } public function manga_json($res) { $type_list = model('Type')->getCache('type_list'); foreach($res['list'] as $k=>&$v){ $type_info = $type_list[$v['type_id']]; $v['type_name'] = $type_info['type_name']; $v['manga_time'] = date('Y-m-d H:i:s',$v['manga_time']); if(substr($v["manga_pic"],0,4)=="mac:"){ $v["manga_pic"] = str_replace('mac:',$this->getImgUrlProtocol('manga'), $v["manga_pic"]); } elseif(!empty($v["manga_pic"]) && substr($v["manga_pic"],0,4)!="http" && substr($v["manga_pic"],0,2)!="//"){ $v["manga_pic"] = $GLOBALS['config']['api']['manga']['imgurl'] . $v["manga_pic"]; } } if($this->_param['ac']!='detail') { $class = []; $typefilter = explode(',',$GLOBALS['config']['api']['manga']['typefilter']); foreach ($type_list as $k=>&$v) { if (!empty($GLOBALS['config']['api']['manga']['typefilter'])){ if(in_array($v['type_id'],$typefilter)) { $class[] = ['type_id' => $v['type_id'], 'type_pid' => $v['type_pid'], 'type_name' => $v['type_name']]; } } else { $class[] = ['type_id' => $v['type_id'], 'type_pid' => $v['type_pid'], 'type_name' => $v['type_name']]; } } $res['class'] = $class; } return $res; } public function manga_xml($res) { $xml = ''; $xml .= ''; $type_list = model('Type')->getCache('type_list'); $xml .= ''; foreach($res['list'] as $k=>&$v){ $type_info = $type_list[$v['type_id']]; $xml .= ''; } $xml .= ''; if($this->_param['ac']!='detail') { $xml .= ""; $typefilter = explode(',',$GLOBALS['config']['api']['manga']['typefilter']); foreach ($type_list as $k=>&$v) { if($v['type_mid']==12) { if (!empty($GLOBALS['config']['api']['manga']['typefilter'])){ if(in_array($v['type_id'],$typefilter)) { $xml .= "" . $v["type_name"] . ""; } } else { $xml .= "" . $v["type_name"] . ""; } } } unset($rs); $xml .= ""; } $xml .= ""; return $xml; } public function website() { if($GLOBALS['config']['api']['website']['status'] != 1){ echo 'closed';die; } if($GLOBALS['config']['api']['website']['charge'] == 1) { $h = $_SERVER['REMOTE_ADDR']; if (!$h) { echo lang('api/auth_err'); exit; } else { $auth = $GLOBALS['config']['api']['website']['auth']; $this->checkDomainAuth($auth); } } $cache_time = intval($GLOBALS['config']['api']['website']['cachetime']); $cach_name = $GLOBALS['config']['app']['cache_flag']. '_'.'api_website_'.md5(http_build_query($this->_param)); $html = Cache::get($cach_name); if(empty($html) || $cache_time==0) { $where = []; if (!empty($this->_param['ids'])) { $where['website_id'] = ['in', $this->_param['ids']]; } if (!empty($this->_param['t'])) { if (empty($GLOBALS['config']['api']['website']['typefilter']) || strpos($GLOBALS['config']['api']['website']['typefilter'], $this->_param['t']) !== false) { $where['type_id'] = $this->_param['t']; } } if (!empty(intval($this->_param['h']))) { $todaydate = date('Y-m-d', strtotime('+1 days')); $tommdate = date('Y-m-d', strtotime('-' . $this->_param['h'] . ' hours')); $todayunix = strtotime($todaydate); $tommunix = strtotime($tommdate); $where['website_time'] = [['gt', $tommunix], ['lt', $todayunix]]; } if (!empty($this->_param['wd'])) { $where['website_name'] = ['like', '%' . $this->_param['wd'] . '%']; } if (!empty($GLOBALS['config']['api']['website']['datafilter'])) { $where['_string'] = $GLOBALS['config']['api']['website']['datafilter']; } if (empty(intval($this->_param['pg']))) { $this->_param['pg'] = 1; } $order = 'website_time desc'; $field = 'website_id,website_name,type_id,"" as type_name,website_en,website_time,website_area,website_lang,website_pic'; if ($this->_param['ac'] == 'detail') { $field = '*'; } $res = model('website')->listData($where, $order, $this->_param['pg'], $GLOBALS['config']['api']['website']['pagesize'], 0, $field, 0); if ($res['code'] > 1) { echo $res['msg']; exit; } $type_list = model('Type')->getCache('type_list'); foreach ($res['list'] as $k => &$v) { $type_info = $type_list[$v['type_id']]; $v['type_name'] = $type_info['type_name']; $v['website_time'] = date('Y-m-d H:i:s', $v['website_time']); if (substr($v["website_pic"], 0, 4) == "mac:") { $v["website_pic"] = str_replace('mac:', $this->getImgUrlProtocol('website'), $v["website_pic"]); } elseif (!empty($v["website_pic"]) && substr($v["website_pic"], 0, 4) != "http" && substr($v["website_pic"], 0, 2) != "//") { $v["website_pic"] = $GLOBALS['config']['api']['website']['imgurl'] . $v["website_pic"]; } if ($this->_param['ac'] == 'detail') { } else { } } if ($this->_param['ac'] != 'detail') { $class = []; $typefilter = explode(',', $GLOBALS['config']['api']['website']['typefilter']); foreach ($type_list as $k => &$v) { if ($v['type_mid'] == 11) { if (!empty($GLOBALS['config']['api']['website']['typefilter'])) { if (in_array($v['type_id'], $typefilter)) { $class[] = ['type_id' => $v['type_id'], 'type_pid' => $v['type_pid'], 'type_name' => $v['type_name']]; } } else { $class[] = ['type_id' => $v['type_id'], 'type_pid' => $v['type_pid'], 'type_name' => $v['type_name']]; } } } $res['class'] = $class; } $html = json_encode($res,JSON_UNESCAPED_UNICODE); $html = mac_filter_tags($html); if($cache_time>0) { Cache::set($cach_name, $html, $cache_time); } } echo $html; exit; } public function comment() { } private function checkDomainAuth($auth) { $ip = mac_get_client_ip(); $auth_list = ['127.0.0.1']; if (!empty($auth)) { foreach (explode('#', $auth) as $domain) { $domain = trim($domain); $auth_list[] = $domain; if (!mac_string_is_ip($domain)) { $auth_list[] = gethostbyname($domain); } } $auth_list = array_unique($auth_list); $auth_list = array_filter($auth_list); } if (!in_array($ip, $auth_list)) { echo lang('api/auth_err'); exit; } } private function getImgUrlProtocol($key) { $default = (isset($GLOBALS['config']['upload']['protocol']) ? $GLOBALS['config']['upload']['protocol'] : 'http') . ':'; if (!isset($GLOBALS['config']['api'][$key]['imgurl'])) { return $default; } if (substr($GLOBALS['config']['api'][$key]['imgurl'], 0, 5) == 'https') { return 'https:'; } return $default; } }