From 3a4de04b5139c68c92432bba8755cfbcdc40c6f7 Mon Sep 17 00:00:00 2001 From: Li-GanMa Date: Mon, 2 Oct 2023 21:12:29 +0800 Subject: [PATCH] =?UTF-8?q?=E7=95=8C=E9=9D=A2=E4=BC=98=E5=8C=96=EF=BC=8C?= =?UTF-8?q?=E8=8A=82=E7=82=B9=E6=95=B4=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/assets/SPEED.png | Bin 5003 -> 0 bytes src/assets/nodes.json | 142 ++++++++++---------------------------- src/components/IPinfo.vue | 4 +- src/components/Main.vue | 31 ++++++--- src/components/Mark.vue | 6 +- 5 files changed, 60 insertions(+), 123 deletions(-) delete mode 100644 src/assets/SPEED.png diff --git a/src/assets/SPEED.png b/src/assets/SPEED.png deleted file mode 100644 index 4c518dc2066144727305f944adb4b4fac0019a71..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5003 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 NjGl>Z4eBoLe*o5AA^HFS diff --git a/src/assets/nodes.json b/src/assets/nodes.json index eeda0a3..652a184 100644 --- a/src/assets/nodes.json +++ b/src/assets/nodes.json @@ -1,108 +1,36 @@ -[{ - "label": "高速", - "options": [ - { - "value": "https://cd.pddpic.com/android_dev/2023-07-28/5c04772968aee57ca690fbe1e7f29467.apk", - "label": "并夕夕(华为云)" - }, - { - "value": "https://consumer.huawei.com/content/dam/huawei-cbg-site/cn/mkt/harmonyos-3/video/privacy/privacy-safe-center.webm", - "label": "华为云" - }, - { - "value": "https://cloud.video.taobao.com/play/u/null/p/1/e/6/t/1/d/ud/329682839911.mp4", - "label": "阿里CDN" - }, - { - "value": "https://storage.jd.com/jdmobile/JDMALL-PC2.apk", - "label": "京东CDN" - }, - { - "value": "https://ma75.gdl.netease.com/Sky_Gold_0.11.4_228509_obt_netease_unisec_minify_b16066d78995a9048c08e5552198a642.apk", - "label": "网易CDN" - }, - { - "value": "https://f100.g.mi.com/download/AppStore/09b005af75fff45bd88ff8f37d7910ba550d32a07", - "label": "金山云" - }, - { - "value": "https://mesh.if.iqiyi.com/player/upgrade/file/last/IQIYIsetup_app.exe", - "label": "爱奇艺" - }, - { - "value": "https://devtools.qiniu.com/linux/amd64/qrsctl", - "label": "七牛云" - }, - { - "value": "https://issuecdn.baidupcs.com/issue/netdisk/yunguanjia/BaiduNetdisk_7.30.5.2.exe", - "label": "百度CDN" - }, - { - "value": "https://issuepcdn.baidupcs.com/issue/netdisk/yunguanjia/BaiduNetdisk_7.30.5.2.exe", - "label": "百度PCDN" - }, - { - "value": "https://www.douyin.com/download/pc/obj/douyin-pc-client/7044145585217083655/releases/10715336/2.6.0/win32-ia32/douyin-v2.6.0-win32-ia32-douyinDownload1.exe", - "label": "字节跳动" - } -] -}, { - "label": "常用", - "options": [{ - "value": "https://game.gtimg.cn/images/nz/web202106/index/bc_part1.gif?0.3190485611376561", - "label": "腾讯CDN" - }, - { - "value": "https://wwwstatic.vivo.com.cn/vivoportal/files/resource/funtouch/1651200648928/images/os2-jude-video.mp4", - "label": "vivo(阿里CDN)" - }, - { - "value": "https://d.musicapp.migu.cn/upload/fbpt_rsync_apps/local/signed/MobileMusic7350/MobileMusic7350_014000D.apk", - "label": "咪咕音乐" - }, - { - "value": "https://img.cmvideo.cn/publish/noms/2022/10/14/1O3VIGPVP6HTS.jpg", - "label": "咪咕视频" - }, - { - "value": "https://img.mcloud.139.com/material_prod/material_media/20221128/1669626861087.png", - "label": "和彩云" - }, - { - "value": "https://s1.xmcdn.com/yx/xmly-live-release/last/dist/Ximalaya-Live-Setup-4.18.550.exe", - "label": "喜马拉雅(华为云)" - }, - { - "value": "https://dc.xiaohongshu.com/file/pkgs/base/xiaohongshu.apk", - "label": "小红书(优云CDN)" - }, - { - "value": "https://vod-origin-rjzy.gdoss.xstore.ctyun.cn/07da9eb52ad948c7b58b760003c0006b.mp4", - "label": "天翼云" - }, - { - "value": "https://desk.ctyun.cn:8999/desktop-prod/software/windows_tob_client/15/64/202000005/CtyunClouddeskUniversal_2.0.0_202000005_x86_20230421161227_Setup_Signed.exe", - "label": "天翼云桌面" - }, - { - "value": "https://h5cdn.migufun.com/middleh5/_nuxt/643447d.js", - "label": "咪咕快游" - }, - { - "value": "https://listen.10155.com/listener/womusic-bucket/90115000/mv_vod/volte_mp4/20230215/1625752132487675906.mp4", - "label": "联通电视" +{ + "高速":{ + "并夕夕":"https://cd.pddpic.com/android_dev/2023-07-28/5c04772968aee57ca690fbe1e7f29467.apk", + "华为":"https://consumer.huawei.com/content/dam/huawei-cbg-site/cn/mkt/harmonyos-3/video/privacy/privacy-safe-center.webm", + "淘宝网":"https://cloud.video.taobao.com/play/u/null/p/1/e/6/t/1/d/ud/329682839911.mp4", + "京东":"https://storage.jd.com/jdmobile/JDMALL-PC2.apk", + "网易":"https://ma75.gdl.netease.com/Sky_Gold_0.11.4_228509_obt_netease_unisec_minify_b16066d78995a9048c08e5552198a642.apk", + "小米":"https://f100.g.mi.com/download/AppStore/09b005af75fff45bd88ff8f37d7910ba550d32a07", + "爱奇艺":"https://mesh.if.iqiyi.com/player/upgrade/file/last/IQIYIsetup_app.exe", + "字节跳动":"https://www.douyin.com/download/pc/obj/douyin-pc-client/7044145585217083655/releases/10715336/2.6.0/win32-ia32/douyin-v2.6.0-win32-ia32-douyinDownload1.exe" + }, + "运营商":{ + "联通电视":"https://listen.10155.com/listener/womusic-bucket/90115000/mv_vod/volte_mp4/20230215/1625752132487675906.mp4", + "咪咕音乐":"https://d.musicapp.migu.cn/upload/fbpt_rsync_apps/local/signed/MobileMusic7350/MobileMusic7350_014000D.apk", + "咪咕视频":"https://img.cmvideo.cn/publish/noms/2022/10/14/1O3VIGPVP6HTS.jpg", + "咪咕快游":"https://h5cdn.migufun.com/middleh5/_nuxt/643447d.js", + "和彩云":"https://img.mcloud.139.com/material_prod/material_media/20221128/1669626861087.png", + "天翼云":"https://vod-origin-rjzy.gdoss.xstore.ctyun.cn/07da9eb52ad948c7b58b760003c0006b.mp4", + "天翼云桌面":"https://desk.ctyun.cn:8999/desktop-prod/software/windows_tob_client/15/64/202000005/CtyunClouddeskUniversal_2.0.0_202000005_x86_20230421161227_Setup_Signed.exe", + "21CN直播":"https://review.21cn.com/img/20220926/1/1664177550543.mp4" + }, + "常用":{ + "腾讯":"https://game.gtimg.cn/images/nz/web202106/index/bc_part1.gif?0.3190485611376561", + "喜马拉雅":"https://s1.xmcdn.com/yx/xmly-live-release/last/dist/Ximalaya-Live-Setup-4.18.550.exe", + "小红书":"https://dc.xiaohongshu.com/file/pkgs/base/xiaohongshu.apk", + "vivo":"https://wwwstatic.vivo.com.cn/vivoportal/files/resource/funtouch/1651200648928/images/os2-jude-video.mp4", + "七牛云":"https://devtools.qiniu.com/linux/amd64/qrsctl", + "百度CDN":"https://issuecdn.baidupcs.com/issue/netdisk/yunguanjia/BaiduNetdisk_7.30.5.2.exe", + "百度PCDN":"https://issuepcdn.baidupcs.com/issue/netdisk/yunguanjia/BaiduNetdisk_7.30.5.2.exe" + }, + "全球[Global]":{ + "Cachefly Test":"https://cachefly.cachefly.net/200mb.test", + "Cloudflare Speed":"https://speed.cloudflare.com/__down?bytes=1073741824", + "Cloudflare Workers":"https://gh.con.sh/https://github.com/AaronFeng753/Waifu2x-Extension-GUI/releases/download/v2.21.12/Waifu2x-Extension-GUI-v2.21.12-Portable.7z" } -] -}, { - "label": "全球[Global]", - "options": [{ - "value": "https://cachefly.cachefly.net/200mb.test", - "label": "Cachefly Test" - }, { - "value": "https://speed.cloudflare.com/__down?bytes=1073741824", - "label": "Cloudflare Speed" - }, { - "value": "https://gh.con.sh/https://github.com/AaronFeng753/Waifu2x-Extension-GUI/releases/download/v2.21.12/Waifu2x-Extension-GUI-v2.21.12-Portable.7z", - "label": "Cloudflare Workers" - }] -}] \ No newline at end of file +} \ No newline at end of file diff --git a/src/components/IPinfo.vue b/src/components/IPinfo.vue index f277e80..374d942 100644 --- a/src/components/IPinfo.vue +++ b/src/components/IPinfo.vue @@ -86,12 +86,10 @@ async function getGlobalIp() { try { const response = await fetch('https://api-ipv4.ip.sb/geoip', { referrerPolicy: 'no-referrer' }); let resp = await response.json(); - type ObjectKey = keyof typeof CountryCode; - const myVar = resp['country_code'] as ObjectKey; let globalInfo:any={ ip:resp['ip'], isp:resp['isp'], - country:CountryCode[myVar], + country:CountryCode[resp['country_code'] as keyof typeof CountryCode], } info['globalInfo']=globalInfo if(props.IPinfo){ diff --git a/src/components/Main.vue b/src/components/Main.vue index e5381f6..4eed582 100644 --- a/src/components/Main.vue +++ b/src/components/Main.vue @@ -212,17 +212,28 @@ import { toClipboard } from '@soerenmartius/vue3-clipboard' import MarkUI from './Mark.vue' const showMark = ref({ show: false }) -const customNodes: Ref<{ - value: string; - label: string; -}[]> = ref(localStorage.customNodes ? JSON.parse(localStorage.customNodes) : []) +const customNodes = reactive(localStorage.customNodes ? JSON.parse(localStorage.customNodes) : []) const OnlineNodes: { label: string; options: { value: string; label: string; }[]; -}[] = nodesJson +}[] = [] +for(let groupName in nodesJson) { + const group=nodesJson[groupName as keyof typeof nodesJson] + const temp: { + label: string; + options: { + value: string; + label: string; + }[]; + }={"label":groupName,options:[]} + for(let node in group) { + temp.options.push({"value":group[node as keyof typeof group],"label":node}) + } + OnlineNodes.push(temp) +} const nodes: Ref<{ label: string; options: { @@ -230,12 +241,12 @@ const nodes: Ref<{ label: string; }[]; }[]> = ref(OnlineNodes) -if (customNodes.value.length) { - nodes.value = [{ "label": "自定义", "options": customNodes.value }].concat(OnlineNodes) +if (customNodes.length) { + nodes.value = [{ "label": "自定义", "options": customNodes}].concat(OnlineNodes) } watch(customNodes, async (newState, oldState) => { - if (customNodes.value.length) { - nodes.value = [{ "label": "自定义", "options": customNodes.value }].concat(OnlineNodes) + if (customNodes.length) { + nodes.value = [{ "label": "自定义", "options": customNodes }].concat(OnlineNodes) } else nodes.value = OnlineNodes localStorage.customNodes = JSON.stringify(newState) }, { deep: true }) @@ -558,7 +569,7 @@ const addNode = async () => { return } addForm.value.checking = false - customNodes.value.push({ + customNodes.push({ label: addForm.value.label, value: addForm.value.value, }) diff --git a/src/components/Mark.vue b/src/components/Mark.vue index 463d994..0c792e3 100644 --- a/src/components/Mark.vue +++ b/src/components/Mark.vue @@ -1,6 +1,6 @@