Browse Source

fix #1057 支持指定年份的视频采集

magicblack 2 years ago
parent
commit
8103529b1e

+ 4 - 4
application/admin/view/collect/index.html

@@ -49,11 +49,11 @@
                 <td>{$vo.collect_id}</td>
                 <td>{if condition="$vo['collect_type'] eq 1"}xml{else/}json{/if} </td>
                 <td>{$vo.collect_mid|mac_get_mid_text}</td>
-                <td><a class="layui-badge-rim" href="{:url('api')}?{:http_build_query(['ac'=>'list','cjflag'=>md5($vo.collect_url),'cjurl'=>$vo.collect_url,'h'=>'','t'=>'','ids'=>'','wd'=>'','type'=>$vo.collect_type,'mid'=>$vo.collect_mid,'opt'=>$vo.collect_opt,'sync_pic_opt'=>$vo.collect_sync_pic_opt,'filter'=>$vo.collect_filter,'filter_from'=>$vo.collect_filter_from,'param'=>base64_encode($vo.collect_param)])}" title="进入资源库">【{$vo.collect_name}】{$vo.collect_url}</a></td>
+                <td><a class="layui-badge-rim" href="{:url('api')}?{:http_build_query(['ac'=>'list','cjflag'=>md5($vo.collect_url),'cjurl'=>$vo.collect_url,'h'=>'','t'=>'','ids'=>'','wd'=>'','type'=>$vo.collect_type,'mid'=>$vo.collect_mid,'opt'=>$vo.collect_opt,'sync_pic_opt'=>$vo.collect_sync_pic_opt,'filter'=>$vo.collect_filter,'filter_from'=>$vo.collect_filter_from,'filter_year'=>$vo.collect_filter_year,'param'=>base64_encode($vo.collect_param)])}" title="进入资源库">【{$vo.collect_name}】{$vo.collect_url}</a></td>
                 <td>
-                    <a class="layui-badge-rim" href="{:url('api')}?{:http_build_query(['ac'=>'cj','cjflag'=>md5($vo.collect_url),'cjurl'=>$vo.collect_url,'h'=>'24','t'=>'','ids'=>'','wd'=>'','type'=>$vo.collect_type,'mid'=>$vo.collect_mid,'opt'=>$vo.collect_opt,'sync_pic_opt'=>$vo.collect_sync_pic_opt,'filter'=>$vo.collect_filter,'filter_from'=>$vo.collect_filter_from,'param'=>base64_encode($vo.collect_param)])}" title="采集当天">采集当天</a>
-                    <a class="layui-badge-rim" href="{:url('api')}?{:http_build_query(['ac'=>'cj','cjflag'=>md5($vo.collect_url),'cjurl'=>$vo.collect_url,'h'=>'168','t'=>'','ids'=>'','wd'=>'','type'=>$vo.collect_type,'mid'=>$vo.collect_mid,'opt'=>$vo.collect_opt,'sync_pic_opt'=>$vo.collect_sync_pic_opt,'filter'=>$vo.collect_filter,'filter_from'=>$vo.collect_filter_from,'param'=>base64_encode($vo.collect_param)])}" title="采集本周">采集本周</a>
-                    <a class="layui-badge-rim" href="{:url('api')}?{:http_build_query(['ac'=>'cj','cjflag'=>md5($vo.collect_url),'cjurl'=>$vo.collect_url,'h'=>'','t'=>'','ids'=>'','wd'=>'','type'=>$vo.collect_type,'mid'=>$vo.collect_mid,'opt'=>$vo.collect_opt,'sync_pic_opt'=>$vo.collect_sync_pic_opt,'filter'=>$vo.collect_filter,'filter_from'=>$vo.collect_filter_from,'param'=>base64_encode($vo.collect_param)])}" title="采集所有">采集所有</a>
+                    <a class="layui-badge-rim" href="{:url('api')}?{:http_build_query(['ac'=>'cj','cjflag'=>md5($vo.collect_url),'cjurl'=>$vo.collect_url,'h'=>'24','t'=>'','ids'=>'','wd'=>'','type'=>$vo.collect_type,'mid'=>$vo.collect_mid,'opt'=>$vo.collect_opt,'sync_pic_opt'=>$vo.collect_sync_pic_opt,'filter'=>$vo.collect_filter,'filter_from'=>$vo.collect_filter_from,'filter_year'=>$vo.collect_filter_year,'param'=>base64_encode($vo.collect_param)])}" title="采集当天">采集当天</a>
+                    <a class="layui-badge-rim" href="{:url('api')}?{:http_build_query(['ac'=>'cj','cjflag'=>md5($vo.collect_url),'cjurl'=>$vo.collect_url,'h'=>'168','t'=>'','ids'=>'','wd'=>'','type'=>$vo.collect_type,'mid'=>$vo.collect_mid,'opt'=>$vo.collect_opt,'sync_pic_opt'=>$vo.collect_sync_pic_opt,'filter'=>$vo.collect_filter,'filter_from'=>$vo.collect_filter_from,'filter_year'=>$vo.collect_filter_year,'param'=>base64_encode($vo.collect_param)])}" title="采集本周">采集本周</a>
+                    <a class="layui-badge-rim" href="{:url('api')}?{:http_build_query(['ac'=>'cj','cjflag'=>md5($vo.collect_url),'cjurl'=>$vo.collect_url,'h'=>'','t'=>'','ids'=>'','wd'=>'','type'=>$vo.collect_type,'mid'=>$vo.collect_mid,'opt'=>$vo.collect_opt,'sync_pic_opt'=>$vo.collect_sync_pic_opt,'filter'=>$vo.collect_filter,'filter_from'=>$vo.collect_filter_from,'filter_year'=>$vo.collect_filter_year,'param'=>base64_encode($vo.collect_param)])}" title="采集所有">采集所有</a>
                 </td>
                 <td>
                     <a class="layui-badge-rim j-iframe" data-href="{:url('info?id='.$vo['collect_id'])}" data-width="800px" data-height="610px" href="javascript:;" title="{:lang('edit')}">{:lang('edit')}</a>

+ 7 - 2
application/admin/view/collect/info.html

@@ -63,9 +63,14 @@
         <div class="layui-form-item row_filer" {if condition="$info['collect_mid'] neq '1'"} style="display:none;" {/if}>
             <label class="layui-form-label">{:lang('admin/collect/filter_code')}:</label>
             <div class="layui-input-block">
-                <input type="text" class="layui-input" value="{$info.collect_filter_from}" placeholder="" id="collect_filter_from" name="collect_filter_from">
+                <input type="text" class="layui-input" value="{$info.collect_filter_from}" placeholder="{:lang('admin/collect/filter_code_tip')}" id="collect_filter_from" name="collect_filter_from">
+            </div>
+        </div>
+        <div class="layui-form-item row_filer" {if condition="$info['collect_mid'] neq '1'"} style="display:none;" {/if}>
+            <label class="layui-form-label">{:lang('admin/collect/filter_year')}:</label>
+            <div class="layui-input-block">
+                <input type="text" class="layui-input" value="{$info.collect_filter_year}" placeholder="{:lang('admin/collect/filter_year_tip')}" id="collect_filter_year" name="collect_filter_year">
             </div>
-            <div class="layui-form-mid layui-word-aux" style="margin-left:110px; ">{:lang('admin/collect/filter_code_tip')}</div>
         </div>
         <div class="layui-form-item row_filer">
             <label class="layui-form-label">{:lang('pic_sync')}:</label>

+ 9 - 0
application/common.php

@@ -13,6 +13,15 @@ error_reporting(E_ERROR | E_PARSE );
 
 
 
+function get_array_unique_id_list($list, $need_sort = false) {
+    $list = array_unique($list);
+    $list = array_map('intval', $list);
+    $list = array_filter($list);
+    $list = array_values($list);
+    $need_sort && sort($list);
+    return $list;
+}
+
 if (!function_exists('str_starts_with')) {
     function str_starts_with($haystack, $needle) {
         return (string)$needle !== '' && strncmp($haystack, $needle, strlen($needle)) === 0;

+ 11 - 7
application/common/model/Collect.php

@@ -421,6 +421,8 @@ class Collect extends Base {
         $config = config('maccms.collect');
         $config = $config['vod'];
         $config_sync_pic = $param['sync_pic_opt'] > 0 ? $param['sync_pic_opt'] : $config['pic'];
+        $filter_year = !empty($param['filter_year']) ? $param['filter_year'] : '';
+        $filter_year_list = $filter_year ? get_array_unique_id_list(explode(',', $filter_year)) : [];
         $players = config('vodplayer');
         $downers = config('voddowner');
         $vod_search = model('VodSearch');
@@ -444,16 +446,18 @@ class Collect extends Base {
             $msg='';
             $tmp='';
 
-            if($v['type_id'] ==0){
+            if ($v['type_id'] ==0) {
                 $des = lang('model/collect/type_err');
-            }
-            elseif(empty($v['vod_name'])) {
+            } elseif (empty($v['vod_name'])) {
                 $des = lang('model/collect/name_err');
-            }
-            elseif( mac_array_filter($filter_arr,$v['vod_name']) !==false) {
+            } elseif (mac_array_filter($filter_arr,$v['vod_name']) !==false) {
                 $des = lang('model/collect/name_in_filter_err');
-            }
-            else {
+            } elseif ($filter_year_list && !in_array(intval($v['vod_year']), $filter_year_list)) {
+                // 采集时,过滤年份
+                // https://github.com/magicblack/maccms10/issues/1057
+                $color = 'orange';
+                $des = 'year [' . intval($v['vod_year']) . '] not in: ' . join(',', $filter_year_list);
+            } else {
                 unset($v['vod_id']);
 
                 foreach($v as $k2=>$v2){

+ 6 - 0
application/data/update/database.php

@@ -91,3 +91,9 @@ if (empty($col_list[$pre.'vod_search'])) {
     $sql .= "CREATE TABLE `mac_vod_search` ( `search_key` char(32) CHARACTER SET ascii COLLATE ascii_bin NOT NULL COMMENT '搜索键(关键词md5)', `search_word` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '搜索关键词', `search_field` varchar(64) CHARACTER SET ascii COLLATE ascii_bin NOT NULL COMMENT '搜索字段名(可有多个,用|分隔)', `search_hit_count` bigint unsigned NOT NULL DEFAULT '0' COMMENT '搜索命中次数', `search_last_hit_time` int unsigned NOT NULL DEFAULT '0' COMMENT '最近命中时间', `search_update_time` int unsigned NOT NULL DEFAULT '0' COMMENT '添加时间', `search_result_count` int unsigned NOT NULL DEFAULT '0' COMMENT '结果Id数量', `search_result_ids` mediumtext CHARACTER SET ascii COLLATE ascii_bin NOT NULL COMMENT '搜索结果Id列表,英文半角逗号分隔', PRIMARY KEY (`search_key`), KEY `search_field` (`search_field`), KEY `search_update_time` (`search_update_time`), KEY `search_hit_count` (`search_hit_count`), KEY `search_last_hit_time` (`search_last_hit_time`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='vod搜索缓存表';";
     $sql .="\r";
 }
+// 采集时,过滤年份
+// https://github.com/magicblack/maccms10/issues/1057
+if(empty($col_list[$pre.'collect']['collect_filter_year'])){
+    $sql .= "ALTER TABLE `mac_collect` ADD `collect_filter_year` VARCHAR(255) NOT NULL DEFAULT '' COMMENT '采集时,过滤年份' AFTER `collect_filter_from`;";
+    $sql .="\r";
+}

+ 1 - 0
application/install/sql/install.sql

@@ -298,6 +298,7 @@ CREATE TABLE `mac_collect` (
   `collect_param` varchar(100) NOT NULL DEFAULT '' ,
   `collect_filter` tinyint(1) unsigned NOT NULL DEFAULT '0' ,
   `collect_filter_from` varchar(255) NOT NULL DEFAULT '' ,
+  `collect_filter_year` VARCHAR(255) NOT NULL DEFAULT '' COMMENT '采集时,过滤年份',
   `collect_opt` tinyint(1) unsigned NOT NULL DEFAULT '0' ,
   `collect_sync_pic_opt` tinyint(1) unsigned NOT NULL DEFAULT '0' COMMENT '同步图片选项,0-跟随全局,1-开启,2-关闭',
   PRIMARY KEY (`collect_id`)

+ 3 - 1
application/lang/zh-cn.php

@@ -1616,7 +1616,9 @@ https://www.baidu.com/123.jpg
     'admin/collect/url_filter'=>'地址过滤',
     'admin/collect/no_filter'=>'不过滤',
     'admin/collect/filter_code'=>'过滤代码',
-    'admin/collect/filter_code_tip'=>'过滤提示:多组地址的资源开启白名单后只会入库指定代码的地址。比如 youku,iqiyi',
+    'admin/collect/filter_code_tip'=>'多组地址的资源开启白名单后只会入库指定代码的地址。比如 youku,iqiyi',
+    'admin/collect/filter_year'=>'过滤年份',
+    'admin/collect/filter_year_tip'=>'填写后仅入库指定年份的视频。多个年份用英文半角逗号分隔,如 2022,2023',
     'admin/collect/test_ok'=>'测试类型成功,接口类型',
 
     'admin/comment/title'=>'评论管理',

+ 3 - 2
application/lang/zh-tw.php

@@ -1616,10 +1616,11 @@ https://www.baidu.com/123.jpg
     'admin/collect/url_filter'=>'地址過濾',
     'admin/collect/no_filter'=>'不過濾',
     'admin/collect/filter_code'=>'過濾代碼',
-    'admin/collect/filter_code_tip'=>'過濾提示:多組地址的資源開啟白名單後只會入庫指定代碼的地址。比如 youku,iqiyi',
+    'admin/collect/filter_code_tip'=>'多組地址的資源開啟白名單後只會入庫指定代碼的地址。比如 youku,iqiyi',
+    'admin/collect/filter_year'=>'過濾年份',
+    'admin/collect/filter_year_tip'=>'填寫後僅入庫指定年份的影片。 多個年份以英文半角逗號分隔,如 2022,2023',
     'admin/collect/test_ok'=>'測試類型成功,接口類型',
 
-
     'admin/comment/title'=>'評論管理',
 
     'admin/gbook/title'=>'留言本管理',