订阅链接

This commit is contained in:
辉鸭蛋
2024-10-12 01:00:03 +08:00
parent 16482d1e27
commit 30f67d05dc
6 changed files with 126 additions and 9 deletions

1
.env Normal file
View File

@@ -0,0 +1 @@
VITE_MODE=web

1
.env.single Normal file
View File

@@ -0,0 +1 @@
VITE_MODE=single

89
package-lock.json generated
View File

@@ -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",

View File

@@ -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"
}
}

View File

@@ -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
View 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: './', // 添加这一行
})