From dcf56ad24b736efaa6e401ef0868dc17a27ea5a8 Mon Sep 17 00:00:00 2001 From: zetalpha <1500405894@qq.com> Date: Sun, 30 Jun 2024 13:48:07 +0800 Subject: [PATCH 1/4] =?UTF-8?q?=E5=A2=9E=E5=8A=A0class=5Fname=E5=92=8Cclas?= =?UTF-8?q?s=5Furl=20=E8=BE=93=E5=85=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/locales/lang/en_US/pages/setting.ts | 5 ++ .../src/locales/lang/zh_CN/pages/setting.ts | 5 ++ .../src/pages/setting/editSource/Sift.vue | 88 ++++++++++++++----- 3 files changed, 78 insertions(+), 20 deletions(-) diff --git a/src/renderer/src/locales/lang/en_US/pages/setting.ts b/src/renderer/src/locales/lang/en_US/pages/setting.ts index 3dd456858..39a9714e6 100644 --- a/src/renderer/src/locales/lang/en_US/pages/setting.ts +++ b/src/renderer/src/locales/lang/en_US/pages/setting.ts @@ -470,6 +470,8 @@ export default { rule: { demo:'demo', class: 'Class', + class_name:'class_name', + class_url:'class_url', cateExclude: 'CateExclude', link: 'Link', filter: 'Filter', @@ -498,6 +500,8 @@ export default { reg: 'Reg', }, placeholder: { + classNameTip:'classname(e.g movie&tv)', + classUrlTip:'classurl(e.g 1&2)', classParseTip: 'Selector(e.g. list;title;url;match)', cateExcludeTip: 'Excluded(e.g. HOME|APP)', linkTip: 'Splicing fyclass(e.g. /id/fyclass.html)', @@ -517,6 +521,7 @@ export default { inputNoClassParse: 'Parms classParse is empty', sourceFirst: 'Get source first', inputNoFilterAndFilterInfo: 'Parms filter or filterInfo is empty', + classResultisEmpty:'Please process the major categories first' }, }, }, diff --git a/src/renderer/src/locales/lang/zh_CN/pages/setting.ts b/src/renderer/src/locales/lang/zh_CN/pages/setting.ts index 8024e752f..c73d74607 100644 --- a/src/renderer/src/locales/lang/zh_CN/pages/setting.ts +++ b/src/renderer/src/locales/lang/zh_CN/pages/setting.ts @@ -470,6 +470,8 @@ export default { rule: { demo:'示例', class: '大类', + class_name:'class_name', + class_url:'class_url', cateExclude: '排除', link: '链接', filter: '筛选', @@ -498,6 +500,8 @@ export default { reg: '正则', }, placeholder: { + classNameTip:'classname(例如 电影&剧集)', + classUrlTip:'classurl(例如 1&2)', classParseTip: '选择器(如 list;title;url;match)', cateExcludeTip: '排除(如 首页|留言|APP)', linkTip: '拼接fyclass(如 /id/fyclass.html)', @@ -517,6 +521,7 @@ export default { inputNoClassParse: '参数大类为空', sourceFirst: '必须先获取源代码', inputNoFilterAndFilterInfo: '参数筛选或筛选详细为空', + classResultisEmpty:'请先进行大类处理' }, }, }, diff --git a/src/renderer/src/pages/setting/editSource/Sift.vue b/src/renderer/src/pages/setting/editSource/Sift.vue index 14ca6caa9..6b28b84da 100644 --- a/src/renderer/src/pages/setting/editSource/Sift.vue +++ b/src/renderer/src/pages/setting/editSource/Sift.vue @@ -67,6 +67,10 @@
{{ $t('pages.setting.editSource.sift.rule.demo') }}
+ + { - form.value.req.url="https://hapihd.com/index.php/vod/show/id/dianying.html"; - form.value.class_parse=String.raw`.navbar-items li;a&&Text;a&&href;/(\w+).html`; - form.value.reurl="https://hapihd.com/index.php/vod/show/id/fyclass.html"; - form.value.cate_exclude="更新|热搜榜"; - form.value.filter="body&&.scroll-box"; - form.value.filterInfo=";.module-item-title&&Text;body&&a;a&&Text;a&&href"; - form.value.matchs={ +const demo = () => { + form.value.req.url = "https://hapihd.com/index.php/vod/show/id/dianying.html"; + form.value.class_parse = String.raw`.navbar-items li;a&&Text;a&&href;/(\w+).html`; + form.value.reurl = "https://hapihd.com/index.php/vod/show/id/fyclass.html"; + form.value.cate_exclude = "更新|热搜榜"; + form.value.filter = "body&&.scroll-box"; + form.value.filterInfo = ";.module-item-title&&Text;body&&a;a&&Text;a&&href"; + form.value.matchs = { 剧情: 'show(.*?)/id', 地区: 'show(.*?)/id', 语言: '(/lang.*?)\.html@@', @@ -464,21 +471,31 @@ const getMatchs = () => { key: item, value: form.value.matchs[item] })); +} +function uniqueObjectsByProperty(array, key){ + const map = new Map(); + array.forEach(item => { + const keyValue = item[key]; + map.set(keyValue, item); + }); + return Array.from(map.values()); +} - // inputs.value = [ - // { id: 1, value: '' }, - // { id: 2, value: '' }, - // { id: 3, value: '' } - // ]; +function concatenateObjects(array) { + return array.reduce((accumulator, current) => { + accumulator.m = accumulator.m ? `${accumulator.m}&${current.m}` : current.m; + accumulator.title = accumulator.title ? `${accumulator.title}&${current.title}` : current.title; + return accumulator; + }, { m: '', title: '' }); } const actionClass = () => { - const { class_parse = '', cate_exclude = '', reurl = '' } = form.value; + const { class_parse = '', class_name = '', class_url = '', cate_exclude = '', reurl = '' } = form.value; const { url } = form.value.req; const contentHtml = form.value.content.source; - if (!class_parse) { + if (!class_parse&&!class_name&&!class_url) { MessagePlugin.warning(t('pages.setting.editSource.sift.message.inputNoClassParse')); return; }; @@ -486,8 +503,31 @@ const actionClass = () => { MessagePlugin.warning(t('pages.setting.editSource.sift.message.sourceFirst')); return; } - const response = processCategories(contentHtml, class_parse, cate_exclude, reurl, url); - console.log(contentHtml, class_parse, cate_exclude, reurl, url) + let response = processCategories(contentHtml, class_parse, cate_exclude, reurl, url); + let set=new Set(); + if(class_name&&class_url){ + if(response.hasOwnProperty("m")){ + response.m+="&"+class_url; + response.title+="&"+class_name; + } + } + + if (Object.keys(response).length > 0) { + response.m.split("&").map((x, i) => { + set.add({ m: x, title: response.title.split("&")[i] }) + }) + + var rs = uniqueObjectsByProperty(Array.from(set), 'm'); + response = concatenateObjects(rs); + } + + if (Object.keys(response).length==0) { + if (class_name && class_url) { + response.m = class_url; + response.title = class_name; + } + } + console.log(response) const transformData = (data) => { const titles = data.title.split('&'); @@ -500,20 +540,28 @@ const actionClass = () => { })); } if (response?.title && response?.m) form.value.content.debug = transformData(response); + form.value.classResult = transformData(response); changeNav('debug', 'class'); }; const batchResults = () => { - let r = form.value.content.debug; + let classResult = form.value.classResult; + //console.log(r); const { filterInfo = '', filter = '', matchs } = form.value; if (!(filterInfo && filter)) { MessagePlugin.warning(t('pages.setting.editSource.sift.message.inputNoFilterAndFilterInfo')); return; }; + + if (Object.keys(classResult).length == 0) { + MessagePlugin.warning(t('pages.setting.editSource.sift.message.classResultisEmpty')); + return; + } + // 调用batchFetch并处理结果 - batchFetch(r) + batchFetch(classResult) .then(results => { let rs = {}; results.map(item => { From 891132d094a554d53bda44c39d74fdf10cc03033 Mon Sep 17 00:00:00 2001 From: zetalpha <1500405894@qq.com> Date: Sun, 30 Jun 2024 13:48:07 +0800 Subject: [PATCH 2/4] =?UTF-8?q?=E5=A2=9E=E5=8A=A0class=5Fname=E5=92=8Cclas?= =?UTF-8?q?s=5Furl=20=E8=BE=93=E5=85=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/locales/lang/en_US/pages/setting.ts | 5 ++ .../src/locales/lang/zh_CN/pages/setting.ts | 5 ++ .../src/pages/setting/editSource/Sift.vue | 88 ++++++++++++++----- 3 files changed, 78 insertions(+), 20 deletions(-) diff --git a/src/renderer/src/locales/lang/en_US/pages/setting.ts b/src/renderer/src/locales/lang/en_US/pages/setting.ts index 3dd456858..39a9714e6 100644 --- a/src/renderer/src/locales/lang/en_US/pages/setting.ts +++ b/src/renderer/src/locales/lang/en_US/pages/setting.ts @@ -470,6 +470,8 @@ export default { rule: { demo:'demo', class: 'Class', + class_name:'class_name', + class_url:'class_url', cateExclude: 'CateExclude', link: 'Link', filter: 'Filter', @@ -498,6 +500,8 @@ export default { reg: 'Reg', }, placeholder: { + classNameTip:'classname(e.g movie&tv)', + classUrlTip:'classurl(e.g 1&2)', classParseTip: 'Selector(e.g. list;title;url;match)', cateExcludeTip: 'Excluded(e.g. HOME|APP)', linkTip: 'Splicing fyclass(e.g. /id/fyclass.html)', @@ -517,6 +521,7 @@ export default { inputNoClassParse: 'Parms classParse is empty', sourceFirst: 'Get source first', inputNoFilterAndFilterInfo: 'Parms filter or filterInfo is empty', + classResultisEmpty:'Please process the major categories first' }, }, }, diff --git a/src/renderer/src/locales/lang/zh_CN/pages/setting.ts b/src/renderer/src/locales/lang/zh_CN/pages/setting.ts index 8024e752f..c73d74607 100644 --- a/src/renderer/src/locales/lang/zh_CN/pages/setting.ts +++ b/src/renderer/src/locales/lang/zh_CN/pages/setting.ts @@ -470,6 +470,8 @@ export default { rule: { demo:'示例', class: '大类', + class_name:'class_name', + class_url:'class_url', cateExclude: '排除', link: '链接', filter: '筛选', @@ -498,6 +500,8 @@ export default { reg: '正则', }, placeholder: { + classNameTip:'classname(例如 电影&剧集)', + classUrlTip:'classurl(例如 1&2)', classParseTip: '选择器(如 list;title;url;match)', cateExcludeTip: '排除(如 首页|留言|APP)', linkTip: '拼接fyclass(如 /id/fyclass.html)', @@ -517,6 +521,7 @@ export default { inputNoClassParse: '参数大类为空', sourceFirst: '必须先获取源代码', inputNoFilterAndFilterInfo: '参数筛选或筛选详细为空', + classResultisEmpty:'请先进行大类处理' }, }, }, diff --git a/src/renderer/src/pages/setting/editSource/Sift.vue b/src/renderer/src/pages/setting/editSource/Sift.vue index 14ca6caa9..6fe8bd505 100644 --- a/src/renderer/src/pages/setting/editSource/Sift.vue +++ b/src/renderer/src/pages/setting/editSource/Sift.vue @@ -67,6 +67,10 @@
{{ $t('pages.setting.editSource.sift.rule.demo') }}
+ + { - form.value.req.url="https://hapihd.com/index.php/vod/show/id/dianying.html"; - form.value.class_parse=String.raw`.navbar-items li;a&&Text;a&&href;/(\w+).html`; - form.value.reurl="https://hapihd.com/index.php/vod/show/id/fyclass.html"; - form.value.cate_exclude="更新|热搜榜"; - form.value.filter="body&&.scroll-box"; - form.value.filterInfo=";.module-item-title&&Text;body&&a;a&&Text;a&&href"; - form.value.matchs={ +const demo = () => { + form.value.req.url = "https://hapihd.com/index.php/vod/show/id/dianying.html"; + form.value.class_parse = String.raw`.navbar-items li;a&&Text;a&&href;/(\w+).html`; + form.value.reurl = "https://hapihd.com/index.php/vod/show/id/fyclass.html"; + form.value.cate_exclude = "更新|热搜榜"; + form.value.filter = "body&&.scroll-box"; + form.value.filterInfo = ";.module-item-title&&Text;body&&a;a&&Text;a&&href"; + form.value.matchs = { 剧情: 'show(.*?)/id', 地区: 'show(.*?)/id', 语言: '(/lang.*?)\.html@@', @@ -464,21 +471,31 @@ const getMatchs = () => { key: item, value: form.value.matchs[item] })); +} +function uniqueObjectsByProperty(array, key) { + const map = new Map(); + array.forEach(item => { + const keyValue = item[key]; + map.set(keyValue, item); + }); + return Array.from(map.values()); +} - // inputs.value = [ - // { id: 1, value: '' }, - // { id: 2, value: '' }, - // { id: 3, value: '' } - // ]; +function concatenateObjects(array) { + return array.reduce((accumulator, current) => { + accumulator.m = accumulator.m ? `${accumulator.m}&${current.m}` : current.m; + accumulator.title = accumulator.title ? `${accumulator.title}&${current.title}` : current.title; + return accumulator; + }, { m: '', title: '' }); } const actionClass = () => { - const { class_parse = '', cate_exclude = '', reurl = '' } = form.value; + const { class_parse = '', class_name = '', class_url = '', cate_exclude = '', reurl = '' } = form.value; const { url } = form.value.req; const contentHtml = form.value.content.source; - if (!class_parse) { + if (!class_parse && !class_name && !class_url) { MessagePlugin.warning(t('pages.setting.editSource.sift.message.inputNoClassParse')); return; }; @@ -486,8 +503,31 @@ const actionClass = () => { MessagePlugin.warning(t('pages.setting.editSource.sift.message.sourceFirst')); return; } - const response = processCategories(contentHtml, class_parse, cate_exclude, reurl, url); - console.log(contentHtml, class_parse, cate_exclude, reurl, url) + let response = processCategories(contentHtml, class_parse, cate_exclude, reurl, url); + let set = new Set(); + if (class_name && class_url) { + if (response.hasOwnProperty("m")) { + response.m += "&" + class_url; + response.title += "&" + class_name; + } + } + + if (Object.keys(response).length > 0) { + response.m.split("&").map((x, i) => { + set.add({ m: x, title: response.title.split("&")[i] }) + }) + + var rs = uniqueObjectsByProperty(Array.from(set), 'm'); + response = concatenateObjects(rs); + } + + if (Object.keys(response).length == 0) { + if (class_name && class_url) { + response.m = class_url; + response.title = class_name; + } + } + console.log(response) const transformData = (data) => { const titles = data.title.split('&'); @@ -500,20 +540,28 @@ const actionClass = () => { })); } if (response?.title && response?.m) form.value.content.debug = transformData(response); + form.value.classResult = transformData(response); changeNav('debug', 'class'); }; const batchResults = () => { - let r = form.value.content.debug; + let classResult = form.value.classResult; + //console.log(r); const { filterInfo = '', filter = '', matchs } = form.value; if (!(filterInfo && filter)) { MessagePlugin.warning(t('pages.setting.editSource.sift.message.inputNoFilterAndFilterInfo')); return; }; + + if (Object.keys(classResult).length == 0) { + MessagePlugin.warning(t('pages.setting.editSource.sift.message.classResultisEmpty')); + return; + } + // 调用batchFetch并处理结果 - batchFetch(r) + batchFetch(classResult) .then(results => { let rs = {}; results.map(item => { From 836ee27b940e28b34d5879e234d609f90cec300d Mon Sep 17 00:00:00 2001 From: zetalpha <1500405894@qq.com> Date: Sun, 30 Jun 2024 14:12:36 +0800 Subject: [PATCH 3/4] fix --- .../src/pages/setting/editSource/Sift.vue | 33 ------------------- 1 file changed, 33 deletions(-) diff --git a/src/renderer/src/pages/setting/editSource/Sift.vue b/src/renderer/src/pages/setting/editSource/Sift.vue index 36d34b42b..1262ab96d 100644 --- a/src/renderer/src/pages/setting/editSource/Sift.vue +++ b/src/renderer/src/pages/setting/editSource/Sift.vue @@ -67,10 +67,6 @@
{{ $t('pages.setting.editSource.sift.rule.demo') }}
- - { - const keyValue = item[key]; - map.set(keyValue, item); - }); - return Array.from(map.values()); -} - -function concatenateObjects(array) { - return array.reduce((accumulator, current) => { - accumulator.m = accumulator.m ? `${accumulator.m}&${current.m}` : current.m; - accumulator.title = accumulator.title ? `${accumulator.title}&${current.title}` : current.title; - return accumulator; - }, { m: '', title: '' }); -} - const actionClass = () => { - const { class_parse = '', class_name = '', class_url = '', cate_exclude = '', reurl = '' } = form.value; const { class_parse = '', class_name = '', class_url = '', cate_exclude = '', reurl = '' } = form.value; const { url } = form.value.req; const contentHtml = form.value.content.source; @@ -574,9 +548,6 @@ const actionClass = () => { const batchResults = () => { let classResult = form.value.classResult; - - let classResult = form.value.classResult; - //console.log(r); const { filterInfo = '', filter = '', matchs } = form.value; if (!(filterInfo && filter)) { @@ -589,14 +560,12 @@ const batchResults = () => { return; } - if (Object.keys(classResult).length == 0) { MessagePlugin.warning(t('pages.setting.editSource.sift.message.classResultisEmpty')); return; } // 调用batchFetch并处理结果 - batchFetch(classResult) batchFetch(classResult) .then(results => { let rs = {}; @@ -618,8 +587,6 @@ const batchResults = () => { }; - - const batchFetch = async (obj) => { let { method, encode, header, body, contentType } = form.value.req; header = header ? header : '{}'; From f9d549a69732eb33be82213098f5992468363cd5 Mon Sep 17 00:00:00 2001 From: zetalpha <1500405894@qq.com> Date: Sun, 30 Jun 2024 14:26:10 +0800 Subject: [PATCH 4/4] fix1 --- src/renderer/src/pages/setting/editSource/Sift.vue | 1 - 1 file changed, 1 deletion(-) diff --git a/src/renderer/src/pages/setting/editSource/Sift.vue b/src/renderer/src/pages/setting/editSource/Sift.vue index 1262ab96d..1130accfb 100644 --- a/src/renderer/src/pages/setting/editSource/Sift.vue +++ b/src/renderer/src/pages/setting/editSource/Sift.vue @@ -541,7 +541,6 @@ const actionClass = () => { } if (response?.title && response?.m) form.value.content.debug = transformData(response); form.value.classResult = transformData(response); - form.value.classResult = transformData(response); changeNav('debug', 'class'); };