这是本节的多页打印视图。 点击此处打印.

返回本页常规视图.

发布到苹果CMS教程

可提供给苹果CMS采集已发布的视频和剧集的M3U8、截图,包括视频标签、简介等在EFV编辑的所有视频信息。

1 - 采集API配置教程

采集api只适用于苹果CMS V10,且api可同时供多个苹果CMS一起采集。

开启采集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自动从EFV采集数据,则需要设置定时采集。

配置定时采集任务

先进入到苹果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 - 采集播放器类型参考

采集api默认的播放器为dplayer,如果你要使用到其它播放器,可自行修改播放器编码。

先前往苹果CMS后台,再点击最上面导航的视频栏目,在左侧找到播放器,每个播放器的编码就可以直接看到了,如下:

然后将你要使用的播放器编码,填入到采集设置页面的播放器选项。

4 - 采集下载器类型参考

采集api默认的下载器为http,如果你要使用到其它下载器,可自行修改下载器编码。

可前往苹果CMS后台,再点击最上面导航的视频栏目,在左侧找到下载器,每个下载器的编码就可以直接看到了,如下:

然后将你要使用的下载器编码,填入到采集设置页面的下载器选项。

5 - 对接时间戳防盗链功能

EFV开启时间戳防盗链后,苹果CMS默认是用不了,这里提供对接好的文件,可直接使用。

开启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&timestamp=' . $fiveMinutesLaterTimestamp . $efvtokenKey;
            $encryptedString = md5($combinedString);
            $outurl = $url . '?counts=2&timestamp=' . $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&timestamp=' . $fiveMinutesLaterTimestamp . $efvtokenKey;
            $encryptedString = md5($combinedString);
            $outurl = $url . '?counts=2&timestamp=' . $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 - 采集报错和字段修改

苹果CMS采集的时候可能会出现一些小问题,或者你想修改一些字段,可直接查看。

采集报错

如果报错SQLSTATE[HY000]: General error: 1364 Field 'vod_plot_name' doesn't have a default valuevod_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.js8604-8784行之间,后续行数可能会有稍微变动,可以直接搜索dplayer关键词定位到大概位置。

比如关键词正片等固定字段,都可以自己修改,或者有能力的可以加入一些其它发布字段,修改后使用命令pm2 reload efvcms重启程序生效。