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');
};