订阅链接
This commit is contained in:
1
.env.single
Normal file
1
.env.single
Normal file
@@ -0,0 +1 @@
|
||||
VITE_MODE=single
|
||||
89
package-lock.json
generated
89
package-lock.json
generated
@@ -14,7 +14,8 @@
|
||||
"devDependencies": {
|
||||
"@arco-design/web-vue": "^2.56.2",
|
||||
"@vitejs/plugin-vue": "^5.0.5",
|
||||
"vite": "^5.3.1"
|
||||
"vite": "^5.3.1",
|
||||
"vite-plugin-singlefile": "^2.0.2"
|
||||
}
|
||||
},
|
||||
"node_modules/@arco-design/color": {
|
||||
@@ -879,6 +880,18 @@
|
||||
"integrity": "sha512-iCvCkGFskbaYtfQ0a3GmcQCHl/Sv1GufXFGuUQ+FE+WJa7A/espLOuFIn09B944V8/ImPj71T4+rTASxO2PAuA==",
|
||||
"dev": true
|
||||
},
|
||||
"node_modules/braces": {
|
||||
"version": "3.0.3",
|
||||
"resolved": "https://registry.npmmirror.com/braces/-/braces-3.0.3.tgz",
|
||||
"integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"fill-range": "^7.1.1"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=8"
|
||||
}
|
||||
},
|
||||
"node_modules/color": {
|
||||
"version": "3.2.1",
|
||||
"resolved": "https://registry.npmmirror.com/color/-/color-3.2.1.tgz",
|
||||
@@ -985,6 +998,18 @@
|
||||
"resolved": "https://registry.npmmirror.com/estree-walker/-/estree-walker-2.0.2.tgz",
|
||||
"integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w=="
|
||||
},
|
||||
"node_modules/fill-range": {
|
||||
"version": "7.1.1",
|
||||
"resolved": "https://registry.npmmirror.com/fill-range/-/fill-range-7.1.1.tgz",
|
||||
"integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"to-regex-range": "^5.0.1"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=8"
|
||||
}
|
||||
},
|
||||
"node_modules/fsevents": {
|
||||
"version": "2.3.3",
|
||||
"resolved": "https://registry.npmmirror.com/fsevents/-/fsevents-2.3.3.tgz",
|
||||
@@ -1005,6 +1030,15 @@
|
||||
"integrity": "sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==",
|
||||
"dev": true
|
||||
},
|
||||
"node_modules/is-number": {
|
||||
"version": "7.0.0",
|
||||
"resolved": "https://registry.npmmirror.com/is-number/-/is-number-7.0.0.tgz",
|
||||
"integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==",
|
||||
"dev": true,
|
||||
"engines": {
|
||||
"node": ">=0.12.0"
|
||||
}
|
||||
},
|
||||
"node_modules/magic-string": {
|
||||
"version": "0.30.11",
|
||||
"resolved": "https://registry.npmmirror.com/magic-string/-/magic-string-0.30.11.tgz",
|
||||
@@ -1013,6 +1047,19 @@
|
||||
"@jridgewell/sourcemap-codec": "^1.5.0"
|
||||
}
|
||||
},
|
||||
"node_modules/micromatch": {
|
||||
"version": "4.0.8",
|
||||
"resolved": "https://registry.npmmirror.com/micromatch/-/micromatch-4.0.8.tgz",
|
||||
"integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"braces": "^3.0.3",
|
||||
"picomatch": "^2.3.1"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=8.6"
|
||||
}
|
||||
},
|
||||
"node_modules/nanoid": {
|
||||
"version": "3.3.7",
|
||||
"resolved": "https://registry.npmmirror.com/nanoid/-/nanoid-3.3.7.tgz",
|
||||
@@ -1041,6 +1088,18 @@
|
||||
"resolved": "https://registry.npmmirror.com/picocolors/-/picocolors-1.1.0.tgz",
|
||||
"integrity": "sha512-TQ92mBOW0l3LeMeyLV6mzy/kWr8lkd/hp3mTg7wYK7zJhuBStmGMBG0BdeDZS/dZx1IukaX6Bk11zcln25o1Aw=="
|
||||
},
|
||||
"node_modules/picomatch": {
|
||||
"version": "2.3.1",
|
||||
"resolved": "https://registry.npmmirror.com/picomatch/-/picomatch-2.3.1.tgz",
|
||||
"integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==",
|
||||
"dev": true,
|
||||
"engines": {
|
||||
"node": ">=8.6"
|
||||
},
|
||||
"funding": {
|
||||
"url": "https://github.com/sponsors/jonschlinkert"
|
||||
}
|
||||
},
|
||||
"node_modules/postcss": {
|
||||
"version": "8.4.47",
|
||||
"resolved": "https://registry.npmmirror.com/postcss/-/postcss-8.4.47.tgz",
|
||||
@@ -1143,6 +1202,18 @@
|
||||
"node": ">=4"
|
||||
}
|
||||
},
|
||||
"node_modules/to-regex-range": {
|
||||
"version": "5.0.1",
|
||||
"resolved": "https://registry.npmmirror.com/to-regex-range/-/to-regex-range-5.0.1.tgz",
|
||||
"integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"is-number": "^7.0.0"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=8.0"
|
||||
}
|
||||
},
|
||||
"node_modules/vite": {
|
||||
"version": "5.4.8",
|
||||
"resolved": "https://registry.npmmirror.com/vite/-/vite-5.4.8.tgz",
|
||||
@@ -1202,6 +1273,22 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"node_modules/vite-plugin-singlefile": {
|
||||
"version": "2.0.2",
|
||||
"resolved": "https://registry.npmmirror.com/vite-plugin-singlefile/-/vite-plugin-singlefile-2.0.2.tgz",
|
||||
"integrity": "sha512-Z2ou6HcvED5CF0hM+vcFSaFa+klyS8RyyLxW0PbMRLnMbvzTI6ueWyxdYNFhpuXZgz/aj6+E/dHFTdEcw6gb9w==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"micromatch": "^4.0.7"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">18.0.0"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"rollup": "^4.18.0",
|
||||
"vite": "^5.3.1"
|
||||
}
|
||||
},
|
||||
"node_modules/vue": {
|
||||
"version": "3.5.11",
|
||||
"resolved": "https://registry.npmmirror.com/vue/-/vue-3.5.11.tgz",
|
||||
|
||||
@@ -6,6 +6,7 @@
|
||||
"scripts": {
|
||||
"dev": "vite",
|
||||
"build": "vite build",
|
||||
"build:single": "vite build --config vite.config.single.js --mode single",
|
||||
"preview": "vite preview"
|
||||
},
|
||||
"dependencies": {
|
||||
@@ -15,6 +16,7 @@
|
||||
"devDependencies": {
|
||||
"@arco-design/web-vue": "^2.56.2",
|
||||
"@vitejs/plugin-vue": "^5.0.5",
|
||||
"vite": "^5.3.1"
|
||||
"vite": "^5.3.1",
|
||||
"vite-plugin-singlefile": "^2.0.2"
|
||||
}
|
||||
}
|
||||
|
||||
21
src/App.vue
21
src/App.vue
@@ -96,6 +96,7 @@
|
||||
@cancel="closeDrawer"
|
||||
@ok="closeDrawer"
|
||||
unmountOnClose
|
||||
:width="480"
|
||||
>
|
||||
<template #title>
|
||||
脚本详情
|
||||
@@ -127,12 +128,12 @@ import { useClipboard } from '@vueuse/core';
|
||||
const baseRepo = "https://raw.githubusercontent.com/babalae/bettergi-scripts-list/refs/heads/main/build/tree.json";
|
||||
const mirrorUrls = [
|
||||
"{0}",
|
||||
"https://mirror.ghproxy.com/{0}",
|
||||
"https://hub.gitmirror.com/{0}",
|
||||
"https://ghproxy.cc/{0}",
|
||||
"https://www.ghproxy.cc/{0}",
|
||||
"https://ghproxy.cn/{0}",
|
||||
"https://ghproxy.net/{0}"
|
||||
"https://ghproxy.net/{0}",
|
||||
"https://mirror.ghproxy.com/{0}"
|
||||
];
|
||||
|
||||
const repoOptions = ref(mirrorUrls.map((url, index) => ({
|
||||
@@ -206,7 +207,7 @@ const fetchRepoData = async () => {
|
||||
});
|
||||
});
|
||||
} catch (error) {
|
||||
Message.error('获取仓库数据失败');
|
||||
Message.error('获取仓库数据失');
|
||||
console.error('Error fetching repo data:', error);
|
||||
} finally {
|
||||
loading.value = false; // 隐藏加载模态框
|
||||
@@ -326,12 +327,18 @@ const downloadScript = (script) => {
|
||||
// 将数组转换为 JSON 字符串
|
||||
const jsonString = JSON.stringify(subscriptionData);
|
||||
|
||||
// 将 JSON 字符串复制到剪贴板
|
||||
copy(jsonString).then(() => {
|
||||
Message.success(`已将 ${script.name} 的订阅信息复制到剪贴板`);
|
||||
// 将 JSON 字符串转换为 UTF-8 编码的 Base64
|
||||
const base64String = btoa(encodeURIComponent(jsonString));
|
||||
|
||||
// 创建完整的 URL
|
||||
const fullUrl = `bettergi://script?import=${base64String}`;
|
||||
|
||||
// 将完整的 URL 复制到剪贴板
|
||||
copy(fullUrl).then(() => {
|
||||
Message.success(`已将 ${script.name} 的订阅链接复制到剪贴板`);
|
||||
}).catch((error) => {
|
||||
console.error('复制到剪贴板失败:', error);
|
||||
Message.error(`复制 ${script.name} 的订阅信息失败`);
|
||||
Message.error(`复制 ${script.name} 的订阅链接失败`);
|
||||
});
|
||||
};
|
||||
|
||||
|
||||
19
vite.config.single.js
Normal file
19
vite.config.single.js
Normal file
@@ -0,0 +1,19 @@
|
||||
import { fileURLToPath, URL } from 'node:url'
|
||||
|
||||
import { defineConfig } from 'vite'
|
||||
import vue from '@vitejs/plugin-vue'
|
||||
import { viteSingleFile } from "vite-plugin-singlefile"
|
||||
|
||||
// https://vitejs.dev/config/
|
||||
export default defineConfig({
|
||||
plugins: [
|
||||
vue(),
|
||||
viteSingleFile()
|
||||
],
|
||||
resolve: {
|
||||
alias: {
|
||||
'@': fileURLToPath(new URL('./src', import.meta.url))
|
||||
}
|
||||
},
|
||||
base: './', // 添加这一行
|
||||
})
|
||||
Reference in New Issue
Block a user