发布到苹果CMS教程
1 - 采集API配置教程
开启采集api
之后,可提供给苹果CMS
采集已发布的视频和剧集,包括视频标签、简介等在EFV
编辑的所有视频信息。
且后面新增的、或修改过相关信息的视频和剧集均可以自动同步更新到苹果CMS
。
即在苹果CMS
配置好EFV
采集api
后,视频上传,标签、简介等数据编辑可全在EFV
后台通过豆瓣获取或自行编辑。
采集步骤
开启EFV的采集api并配置正确的域名
提示:转码设置的第一个设置域名选项一定要填写正确,也就是采集过去的M3U8和封面域名。
我们先去EFV
后台,前往左侧转码相关,找到对接苹果CMS
,点进去可设置采集api
。
建议设置采集key
,如果你只想给某些人采集,那么还可以设置采集ip白名单
,多个ip
使用$
隔开,如:
#只给ip为123.23.123.123的苹果CMS采集
123.23.123.123
#只给ip为123.23.123.123和132.132.43.12的苹果CMS采集
123.23.123.123$132.132.43.12
#只给ip为123.23.123.123、132.132.43.12和143.154.34.23的苹果CMS采集
123.23.123.123$132.132.43.12$143.154.34.23
然后再前往转码设置,找到最上面的设置域名,填入你EFV
绑定的域名地址,也就是采集接口显示的M3U8
、截图等域名。
前往苹果CMS后台调整采集参数配置
先进入到苹果CMS
后台,点击最上面导航的系统
栏目,在左侧找到采集参数配置
,大致需要调整的地方如下:
配置说明:
1、入库重复规则,该处默认就行了;注意如果老用户此前使用过第三方CMS发布系统,建议取消掉演员和导演,不然采集数据可能会和发布系统重复。
2、二次更新规则,也就是你在EFV修改过视频和剧集的相关信息的会不会再次同步更新到苹果CMS,可自行设置,也可默认;如果你有剧集,请把连载数、备注和总集数选上。
前往苹果CMS后台设置采集接口
先进入到苹果CMS
后台,点击最上面导航的采集
栏目,在左侧找到自定义接口
,点击添加
,设置如下:
提示:接口地址为 EFV绑定域名 + /api/provider/vod/?ac=detail&apiKey=yourkey,yourkey为采集key;如未设置key,则接口地址为/api/provider/vod/?ac=detail
资源名称和接口地址自行设置,接口类型选择JSON
,其它和上面截图一样即可,添加好自定义接口
后,再点击接口列表已添加的接口地址
,如下:
点进去后,在最上面我们会看到EFV
的分类信息,如下:
然后点击分类旁边的绑定,选择苹果CMS
的分类,这样就可以将EFV
的分类视频同步到苹果CMS
指定分类下了。
最后回到自定义接口
列表,点击右侧的采集全部
即可,等待采集完,EFV
全部的已发布视频和剧集都会被同步到苹果CMS
。
相关说明
注意事项
EFV
的视频和剧集一定要设置好分类,且配置接口的时候,EFV
分类一定要绑定好苹果CMS
的分类,不然未设置或未绑定好分类的视频无法被苹果CMS
采集。
EFV
只有已发布的视频和剧集才能被采集,可先对已转码完成的视频和剧集进行相关编辑后再发布出去。
如果有剧集,建议不要在EFV
给剧集的单集设置分类,防止单集被误操作发布出去了,这样苹果CMS
会当电影采集下来,不绑定分类,就不会采集误发布的单集。
发布视频和剧集的多种方法
视频发布分为单个视频发布、批量发布和全部发布,可前往EFV
后台 ⇒ 进入视频管理,进行相关操作,如图:
剧集发布,发布剧集之前,请提前将剧集里面的单集添加到剧集里面,然后找到想要发布的剧集右侧操作选项,点击正式发布即可。
2 - 设置定时自动采集
配置定时采集任务
先进入到苹果CMS
后台,点击最上面导航的采集
栏目,打开自定义接口
,找到你添加的接口,把鼠标移动到右边的采集所有
,右键复制链接地址
。
提示:这里默认设置采集所有,如果你数据量比较大,可能采集会比较慢,可自行根据实际情况选择 采集当天 或 采集本周。
我们复制好接口的采集所有
链接后,再点击最上面导航的系统
栏目,在左侧找到定时任务配置
,点击添加,大致如下:
状态开启,名称和备注自行填入,执行文件选择自定义采集collect
,附加参数就是上面复制的接口采集所有
链接,执行周期和时间可不填,好像不会生效。
设置好了定时配置后,返回定时任务列表,找到你添加的任务,继续把鼠标移动到右边的测试
按钮,右键复制链接地址
。
提示:复制测试链接之前,我们可以先点击测试按钮,看看能不能正常采集,确定没问题了,再复制连接。
最后保存好定时任务的测试链接,我们进入下一步。
设置定时计划
如果你有安装宝塔面板,且任何服务器的宝塔面板都可以直接设置,进入宝塔后台,找到左侧的计划任务,点击添加,如下:
任务类型为访问URL
,名称和执行周期自行设置,URL地址
为上面获取到的测试链接。
如果你没有安装过宝塔面板,可直接使用SSH
客户端,登录EFV
所在的服务器,运行命令:
#先将下面命令行中的https://cms.test整个链接全部换成你的测试链接,再一起全部复制到ssh运行
crontab -l > crontab.bak
echo '*/30 * * * * curl -sSL "https://cms.test/api.php/timming/index.html?enforce=1&name=postapi"' >> crontab.bak
crontab crontab.bak
rm -rf crontab.bak
该命令行是每30
分钟运行一次,可在运行之前,自行调整时间,怕调整出问题的,可直接默认。
3 - 采集播放器类型参考
先前往苹果CMS
后台,再点击最上面导航的视频
栏目,在左侧找到播放器
,每个播放器的编码就可以直接看到了,如下:
然后将你要使用的播放器编码,填入到采集设置页面的播放器选项。
4 - 采集下载器类型参考
可前往苹果CMS
后台,再点击最上面导航的视频
栏目,在左侧找到下载器
,每个下载器的编码就可以直接看到了,如下:
然后将你要使用的下载器编码,填入到采集设置页面的下载器选项。
5 - 对接时间戳防盗链功能
开启EFV时间戳功能
先前往EFV
后台防盗链/图片加密设置
,开启时间戳+播放次数防盗链
,并设置时间戳防盗链key
值,然后再看下该功能对接的一些参数介绍 ⇒ 传送门。
修改苹果CMS相关文件
首先编辑苹果CMS
源码的application/common/controller/All.php
文件,在开头根据下面示例,在指定位置添加相关代码,如:
class All extends Controller
{
var $_ref;
var $_cl;
var $_ac;
var $_tsp;
var $_url;
public function __construct()
{
parent::__construct();
$this->_ref = mac_get_refer();
$this->_cl = request()->controller();
$this->_ac = request()->action();
$this->_tsp = date('Ymd');
}
// 在后面添加下面这一段代码
protected function getKey($url, $from)
{ $efvtokenKey = 'efvtoken'; //设置EFV时间戳防盗链KEY值,修改efvtoken值即可
if (strpos($url, "/movie") !== false) {
$removedProtocolAndDomain = preg_replace('#^(https?:)?(//)?#', '', $url);
$removedDomain = substr($removedProtocolAndDomain, strpos($removedProtocolAndDomain, '/'));
$removedMovieAndM3U8 = str_replace(['/movie', '.m3u8'], '', $removedDomain);
$currentTimestamp = time() * 1000;
$fiveMinutesLaterTimestamp = $currentTimestamp + (60 * 1000); //链接过期时间,默认60秒,如果你想缩短时间,修改60即可
$combinedString = $removedMovieAndM3U8 . '&counts=2×tamp=' . $fiveMinutesLaterTimestamp . $efvtokenKey;
$encryptedString = md5($combinedString);
$outurl = $url . '?counts=2×tamp=' . $fiveMinutesLaterTimestamp . '&key=' . $encryptedString;
}
else if (strpos($url, "/videos") !== false) {
$removedProtocolAndDomain = preg_replace('#^(https?:)?(//)?#', '', $url);
$removedDomain = substr($removedProtocolAndDomain, strpos($removedProtocolAndDomain, '/'));
$currentTimestamp = time() * 1000;
$fiveMinutesLaterTimestamp = $currentTimestamp + (60 * 1000); //链接过期时间,默认60秒,如果你想缩短时间,修改60即可
$combinedString = $removedDomain . '&counts=2×tamp=' . $fiveMinutesLaterTimestamp . $efvtokenKey;
$encryptedString = md5($combinedString);
$outurl = $url . '?counts=2×tamp=' . $fiveMinutesLaterTimestamp . '&key=' . $encryptedString;
}
else {
$outurl = $url;
}
if ($from == 'dplayer') {
$outurl = urlencode($outurl);
}
return $outurl;
}
// 添加到这里结束
protected function load_page_cache($tpl,$type='html')
{
if(defined('ENTRANCE') && ENTRANCE == 'index' && $GLOBALS['config']['app']['cache_page'] ==1 && $GLOBALS['config']['app']['cache_time_page'] ) {
// 代码省略
}
}
&counts=2
为链接读取多少次后过期,默认2
次就过期,可自行修改,一起有4
个地方,且最少设置为2
,或者3
次,有些手机浏览器会替换播放器,导致需要多加载1
次,甚至2
次才能播放。
接下来还是在All.php
文件修改,修改如下:
$player_info['url'] = (string)$info[$listfun][$param['sid']]['urls'][$param['nid']]['url'];
// 可通过搜索上面的代码关键词定位到指定位置,再添加下面2行代码即可
$url = $this->getKey($player_info['url'], $player_info['from']);
$player_info['url'] = $url;
// 添加到这里结束
$player_info['url_next'] = (string)$info[$listfun][$param['sid']]['urls'][$param['nid']+1]['url'];
修改后基本算是对接完成,后面如果你关闭时间戳防盗链功能,需恢复源文件,以免播放出现问题。
6 - 采集报错和字段修改
采集报错
如果报错SQLSTATE[HY000]: General error: 1364 Field 'vod_plot_name' doesn't have a default value
,vod_plot_name
为数据字段,可能会是其它,可以直接联系我们进行修复。
如果报错Data too long for column ‘vod_blurb’ at row 1
,这种大概就是有标签数据超过了Mysql
数据库字段长度,如果你是宝塔安装的MYSQL
,可直接找到安装的Mysql
,点击右侧的设置,选择配置修改,将sql-mode
一行改成sql-mode=NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION;
,然后重启Mysql
后再次尝试。
字段修改
采集代码在EFV
源码的controller/cms.js
的8604-8784
行之间,后续行数可能会有稍微变动,可以直接搜索dplayer
关键词定位到大概位置。
比如关键词正片
等固定字段,都可以自己修改,或者有能力的可以加入一些其它发布字段,修改后使用命令pm2 reload efvcms
重启程序生效。