1
0
mirror of https://github.com/hanxi/xiaomusic.git synced 2026-04-04 11:45:14 +08:00

fix: added the function to parse the url copied from bilibili to the music download tool (#796)

* parse the clipboard pasted text to auto fill the url and name which copied from the bilibili share link feature, for example, the copied url from bilibili like this: `【【推荐歌单】2026年最火的60首热门歌曲合集,值得收藏的流行音乐合集】 https://www.bilibili.com/video/BV1rLAszFEpn/?share_source=copy_web&vd_source=00b5827a742df338af5f9af18320a0b4`, the portion before https will be in the name input, the url will be in the url input

* upgrade library for security update
This commit is contained in:
zkwzk.eth
2026-03-23 14:19:49 +08:00
committed by GitHub
parent 0fa61b70d3
commit 0ba962c06c
2 changed files with 116 additions and 77 deletions

22
package-lock.json generated
View File

@@ -24,13 +24,13 @@
"license": "MIT"
},
"node_modules/axios": {
"version": "1.13.2",
"resolved": "https://registry.npmmirror.com/axios/-/axios-1.13.2.tgz",
"integrity": "sha512-VPk9ebNqPcy5lRGuSlKx752IlDatOjT9paPlm8A7yOuW2Fbvp4X3JznJtT4f0GzGLLiWE9W8onz51SqLYwzGaA==",
"version": "1.13.6",
"resolved": "https://registry.npmjs.org/axios/-/axios-1.13.6.tgz",
"integrity": "sha512-ChTCHMouEe2kn713WHbQGcuYrr6fXTBiu460OTwWrWob16g1bXn4vtz07Ope7ewMozJAnEquLk5lWQWtBig9DQ==",
"license": "MIT",
"dependencies": {
"follow-redirects": "^1.15.6",
"form-data": "^4.0.4",
"follow-redirects": "^1.15.11",
"form-data": "^4.0.5",
"proxy-from-env": "^1.1.0"
}
},
@@ -615,9 +615,9 @@
"license": "MIT"
},
"node_modules/qs": {
"version": "6.14.0",
"resolved": "https://registry.npmmirror.com/qs/-/qs-6.14.0.tgz",
"integrity": "sha512-YWWTjgABSKcvs/nWBi9PycY/JiPJqOD4JA6o9Sej2AtvSGarXxKC3OQSk4pAarbdQlKAh5D4FCQkJNkW+GAn3w==",
"version": "6.15.0",
"resolved": "https://registry.npmjs.org/qs/-/qs-6.15.0.tgz",
"integrity": "sha512-mAZTtNCeetKMH+pSjrb76NAM8V9a05I9aBZOHztWy/UqcJdQYNsf59vrRKWnojAT9Y+GbIvoTBC++CPHqpDBhQ==",
"license": "BSD-3-Clause",
"dependencies": {
"side-channel": "^1.1.0"
@@ -708,9 +708,9 @@
}
},
"node_modules/undici": {
"version": "7.16.0",
"resolved": "https://registry.npmmirror.com/undici/-/undici-7.16.0.tgz",
"integrity": "sha512-QEg3HPMll0o3t2ourKwOeUAZ159Kn9mx5pnzHRQO8+Wixmh88YdZRiIwat0iNzNNXn0yoEtXJqFpyW7eM8BV7g==",
"version": "7.24.5",
"resolved": "https://registry.npmjs.org/undici/-/undici-7.24.5.tgz",
"integrity": "sha512-3IWdCpjgxp15CbJnsi/Y9TCDE7HWVN19j1hmzVhoAkY/+CJx449tVxT5wZc1Gwg8J+P0LWvzlBzxYRnHJ+1i7Q==",
"license": "MIT",
"engines": {
"node": ">=20.18.1"

View File

@@ -1,59 +1,62 @@
<!DOCTYPE html>
<html lang="zh">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width">
<title>歌曲下载工具</title>
<link rel="stylesheet" type="text/css" href="./main.css?version=1773981675">
<script src="./jquery-3.7.1.min.js?version=1773981675"></script>
<!-- Google tag (gtag.js) -->
<script async src="https://www.googletagmanager.com/gtag/js?id=G-Z09NC1K7ZW"></script>
<script>
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments)};
gtag('js', new Date());
gtag('config', 'G-Z09NC1K7ZW');
</script>
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width">
<title>歌曲下载工具</title>
<link rel="stylesheet" type="text/css" href="./main.css?version=1773981675">
<script src="./jquery-3.7.1.min.js?version=1773981675"></script>
<!-- umami -->
<script async defer src="https://umami.hanxi.cc/script.js" data-website-id="7bfb0890-4115-4260-8892-b391513e7e99"></script>
<!-- Google tag (gtag.js) -->
<script async src="https://www.googletagmanager.com/gtag/js?id=G-Z09NC1K7ZW"></script>
<script>
window.dataLayer = window.dataLayer || [];
function gtag() { dataLayer.push(arguments) };
gtag('js', new Date());
gtag('config', 'G-Z09NC1K7ZW');
</script>
</head>
<body>
<!-- umami -->
<script async defer src="https://umami.hanxi.cc/script.js"
data-website-id="7bfb0890-4115-4260-8892-b391513e7e99"></script>
<h1>歌曲下载工具</h1>
</head>
<div class="rows">
<!-- 歌单的输入 -->
<label for="playlistUrl">输入歌单 URL:</label>
<input type="text" id="playlistUrl" value="https://m.bilibili.com/video/BV1WUsDezE88">
<body>
<label for="dirname">输入歌单名字:</label>
<input type="text" id="dirname" placeholder="流行歌曲">
<h1>歌曲下载工具</h1>
<button id="downloadPlaylistBtn">下载歌单</button>
<div class="rows">
<!-- 歌单的输入 -->
<label for="playlistUrl">输入歌单 URL:</label>
<input type="text" id="playlistUrl" value="https://m.bilibili.com/video/BV1WUsDezE88">
</div>
<label for="dirname">输入歌单名字:</label>
<input type="text" id="dirname" placeholder="流行歌曲">
<hr>
<button id="downloadPlaylistBtn">下载歌单</button>
<div class="rows">
</div>
<!-- 单曲的输入 -->
<label for="songUrl">输入歌曲 URL:</label>
<input type="text" id="songUrl" value="https://m.bilibili.com/video/BV1qD4y1U7fs">
<hr>
<label for="songName">输入歌曲名字:</label>
<input type="text" id="songName" placeholder="歌曲名">
<div class="rows">
<button id="downloadSongBtn">下载单曲</button>
</div>
<!-- 单曲的输入 -->
<label for="songUrl">输入歌曲 URL:</label>
<input type="text" id="songUrl" value="https://m.bilibili.com/video/BV1qD4y1U7fs">
<label for="songName">输入歌曲名字:</label>
<input type="text" id="songName" placeholder="歌曲名">
<button id="downloadSongBtn">下载单曲</button>
</div>
<script>
<script>
// 下载歌单
$('#downloadPlaylistBtn').click(function() {
$('#downloadPlaylistBtn').click(function () {
var playlistUrl = $('#playlistUrl').val();
var dirname = $('#dirname').val();
@@ -62,27 +65,27 @@
return;
}
var data = {
var data = {
dirname: dirname,
url: playlistUrl
};
$.ajax({
type: "POST",
url: "/downloadplaylist",
contentType: "application/json",
data: JSON.stringify(data),
success: (msg) => {
$.ajax({
type: "POST",
url: "/downloadplaylist",
contentType: "application/json",
data: JSON.stringify(data),
success: (msg) => {
alert('歌单下载请求已发送!');
console.log(response);
},
error: (msg) => {
},
error: (msg) => {
alert('歌单下载请求失败,请重试。');
}
});
});
}
});
});
// 下载单曲
$('#downloadSongBtn').click(function() {
$('#downloadSongBtn').click(function () {
var songName = $('#songName').val();
var songUrl = $('#songUrl').val();
@@ -91,26 +94,62 @@
return;
}
var data = {
var data = {
name: songName,
url: songUrl
};
$.ajax({
type: "POST",
url: "/downloadonemusic",
contentType: "application/json",
data: JSON.stringify(data),
success: (msg) => {
$.ajax({
type: "POST",
url: "/downloadonemusic",
contentType: "application/json",
data: JSON.stringify(data),
success: (msg) => {
alert('单曲下载请求已发送!');
console.log(response);
},
error: (msg) => {
console.log(msg);
},
error: (msg) => {
alert('单曲下载请求失败,请重试。');
}
});
}
});
});
</script>
function parseClipboardText(text) {
const match = text.match(/(https?:\/\/\S+)/);
if (!match) return null;
</body>
</html>
const url = match[1];
const name = text
.replace(url, '')
.replace(/[【】]/g, '')
.trim();
return { name, url };
}
$('#songUrl, #songName').on('paste', function (e) {
const pastedText = (e.originalEvent || e).clipboardData.getData('text');
const parsed = parseClipboardText(pastedText);
if (!parsed) return;
e.preventDefault();
$('#songUrl').val(parsed.url);
$('#songName').val(parsed.name);
});
$('#playlistUrl, #dirname').on('paste', function (e) {
const pastedText = (e.originalEvent || e).clipboardData.getData('text');
const parsed = parseClipboardText(pastedText);
if (!parsed) return;
e.preventDefault();
$('#playlistUrl').val(parsed.url);
$('#dirname').val(parsed.name);
});
</script>
</body>
</html>