mirror of
https://git.um-react.app/um/um-react.git
synced 2025-11-28 11:33:02 +00:00
Compare commits
4 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
4fe6efec1f | ||
|
|
c4fe9ce938 | ||
|
|
045bea8084 | ||
|
|
c68195eb9a |
@@ -20,8 +20,13 @@ body:
|
|||||||
|
|
||||||
目前 Mac 客户端仅支持 v8.8.0 或更低版本下载的歌曲文件。
|
目前 Mac 客户端仅支持 v8.8.0 或更低版本下载的歌曲文件。
|
||||||
|
|
||||||
|
* [web.archive.org 镜像](https://web.archive.org/web/20230903/https://dldir1.qq.com/music/clntupate/mac/QQMusicMac_Mgr.dmg)
|
||||||
* [通过 Telegram 下载](https://t.me/um_lsr_ch/21)
|
* [通过 Telegram 下载](https://t.me/um_lsr_ch/21)
|
||||||
|
|
||||||
|
安装好客户端后可以加装更新屏蔽更新:
|
||||||
|
|
||||||
|
* [屏蔽更新](https://t.me/um_lsr_ch/29)
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
如果你确定你的客户端版本符合上述描述,并遇到了问题,请继续填写下面的表单。
|
如果你确定你的客户端版本符合上述描述,并遇到了问题,请继续填写下面的表单。
|
||||||
|
|||||||
4
package-lock.json
generated
4
package-lock.json
generated
@@ -1,12 +1,12 @@
|
|||||||
{
|
{
|
||||||
"name": "um-react",
|
"name": "um-react",
|
||||||
"version": "0.5.1",
|
"version": "0.5.2",
|
||||||
"lockfileVersion": 3,
|
"lockfileVersion": 3,
|
||||||
"requires": true,
|
"requires": true,
|
||||||
"packages": {
|
"packages": {
|
||||||
"": {
|
"": {
|
||||||
"name": "um-react",
|
"name": "um-react",
|
||||||
"version": "0.5.1",
|
"version": "0.5.2",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@reduxjs/toolkit": "^2.8.2",
|
"@reduxjs/toolkit": "^2.8.2",
|
||||||
"@unlock-music/crypto": "0.1.10",
|
"@unlock-music/crypto": "0.1.10",
|
||||||
|
|||||||
24
package.json
24
package.json
@@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"name": "um-react",
|
"name": "um-react",
|
||||||
"private": true,
|
"private": true,
|
||||||
"version": "0.5.1",
|
"version": "0.5.2",
|
||||||
"type": "module",
|
"type": "module",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"start": "vite",
|
"start": "vite",
|
||||||
@@ -18,7 +18,7 @@
|
|||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@reduxjs/toolkit": "^2.9.0",
|
"@reduxjs/toolkit": "^2.9.0",
|
||||||
"@unlock-music/crypto": "^0.1.11",
|
"@unlock-music/crypto": "^0.1.12",
|
||||||
"classnames": "^2.5.1",
|
"classnames": "^2.5.1",
|
||||||
"nanoid": "^5.1.5",
|
"nanoid": "^5.1.5",
|
||||||
"radash": "^12.1.1",
|
"radash": "^12.1.1",
|
||||||
@@ -33,13 +33,13 @@
|
|||||||
"sql.js": "^1.13.0"
|
"sql.js": "^1.13.0"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@eslint/js": "^9.34.0",
|
"@eslint/js": "^9.35.0",
|
||||||
"@rollup/plugin-replace": "^6.0.2",
|
"@rollup/plugin-replace": "^6.0.2",
|
||||||
"@tailwindcss/vite": "^4.1.12",
|
"@tailwindcss/vite": "^4.1.13",
|
||||||
"@testing-library/jest-dom": "^6.8.0",
|
"@testing-library/jest-dom": "^6.8.0",
|
||||||
"@testing-library/react": "^16.3.0",
|
"@testing-library/react": "^16.3.0",
|
||||||
"@testing-library/user-event": "^14.6.1",
|
"@testing-library/user-event": "^14.6.1",
|
||||||
"@types/node": "^24.3.0",
|
"@types/node": "^24.3.1",
|
||||||
"@types/react": "^19.1.12",
|
"@types/react": "^19.1.12",
|
||||||
"@types/react-dom": "^19.1.9",
|
"@types/react-dom": "^19.1.9",
|
||||||
"@types/react-syntax-highlighter": "^15.5.13",
|
"@types/react-syntax-highlighter": "^15.5.13",
|
||||||
@@ -50,8 +50,8 @@
|
|||||||
"@vitejs/plugin-react": "^5.0.2",
|
"@vitejs/plugin-react": "^5.0.2",
|
||||||
"@vitest/coverage-v8": "^3.2.4",
|
"@vitest/coverage-v8": "^3.2.4",
|
||||||
"@vitest/ui": "^3.2.4",
|
"@vitest/ui": "^3.2.4",
|
||||||
"daisyui": "^5.1.6",
|
"daisyui": "^5.1.8",
|
||||||
"eslint": "^9.34.0",
|
"eslint": "^9.35.0",
|
||||||
"eslint-config-prettier": "^10.1.8",
|
"eslint-config-prettier": "^10.1.8",
|
||||||
"eslint-plugin-react-hooks": "^5.2.0",
|
"eslint-plugin-react-hooks": "^5.2.0",
|
||||||
"eslint-plugin-react-refresh": "^0.4.20",
|
"eslint-plugin-react-refresh": "^0.4.20",
|
||||||
@@ -60,14 +60,14 @@
|
|||||||
"jsdom": "^26.1.0",
|
"jsdom": "^26.1.0",
|
||||||
"lint-staged": "^16.1.6",
|
"lint-staged": "^16.1.6",
|
||||||
"prettier": "^3.6.2",
|
"prettier": "^3.6.2",
|
||||||
"rollup": "^4.50.0",
|
"rollup": "^4.50.1",
|
||||||
"sass": "^1.92.0",
|
"sass": "^1.92.1",
|
||||||
"simple-git-hooks": "^2.13.1",
|
"simple-git-hooks": "^2.13.1",
|
||||||
"tailwindcss": "^4.1.12",
|
"tailwindcss": "^4.1.13",
|
||||||
"terser": "^5.44.0",
|
"terser": "^5.44.0",
|
||||||
"typescript": "^5.9.2",
|
"typescript": "^5.9.2",
|
||||||
"typescript-eslint": "^8.42.0",
|
"typescript-eslint": "^8.42.0",
|
||||||
"vite": "^7.1.4",
|
"vite": "^7.1.5",
|
||||||
"vite-plugin-pwa": "^1.0.3",
|
"vite-plugin-pwa": "^1.0.3",
|
||||||
"vite-plugin-top-level-await": "^1.6.0",
|
"vite-plugin-top-level-await": "^1.6.0",
|
||||||
"vite-plugin-wasm": "^3.5.0",
|
"vite-plugin-wasm": "^3.5.0",
|
||||||
@@ -90,11 +90,9 @@
|
|||||||
},
|
},
|
||||||
"pnpm": {
|
"pnpm": {
|
||||||
"patchedDependencies": {
|
"patchedDependencies": {
|
||||||
"@rollup/plugin-terser": "patches/@rollup__plugin-terser.patch",
|
|
||||||
"sql.js": "patches/sql.js.patch"
|
"sql.js": "patches/sql.js.patch"
|
||||||
},
|
},
|
||||||
"overrides": {
|
"overrides": {
|
||||||
"rollup-plugin-terser": "npm:@rollup/plugin-terser@0.4.3",
|
|
||||||
"sourcemap-codec": "npm:@jridgewell/sourcemap-codec@1.4.15"
|
"sourcemap-codec": "npm:@jridgewell/sourcemap-codec@1.4.15"
|
||||||
},
|
},
|
||||||
"onlyBuiltDependencies": [
|
"onlyBuiltDependencies": [
|
||||||
|
|||||||
1314
pnpm-lock.yaml
generated
1314
pnpm-lock.yaml
generated
File diff suppressed because it is too large
Load Diff
@@ -1,5 +1,4 @@
|
|||||||
import { Light as SyntaxHighlighter } from 'react-syntax-highlighter';
|
import { CodeHighlight } from '../CodeHighlight';
|
||||||
import hljsStyleGitHub from 'react-syntax-highlighter/dist/esm/styles/hljs/github';
|
|
||||||
import { ExtLink } from '../ExtLink';
|
import { ExtLink } from '../ExtLink';
|
||||||
import PowerShellAdbDumpCommandTemplate from './adb_dump.ps1?raw';
|
import PowerShellAdbDumpCommandTemplate from './adb_dump.ps1?raw';
|
||||||
import ShellAdbDumpCommandTemplate from './adb_dump.sh?raw';
|
import ShellAdbDumpCommandTemplate from './adb_dump.sh?raw';
|
||||||
@@ -45,9 +44,7 @@ export function AdbInstructionTemplate({ dir, file, platform }: AdbInstructionTe
|
|||||||
<li>将安卓设备连接到电脑。</li>
|
<li>将安卓设备连接到电脑。</li>
|
||||||
<li>
|
<li>
|
||||||
<p>粘贴执行下述代码执行。若设备提示「是否允许 USB 调试」或「超级用户请求」,选择允许:</p>
|
<p>粘贴执行下述代码执行。若设备提示「是否允许 USB 调试」或「超级用户请求」,选择允许:</p>
|
||||||
<SyntaxHighlighter language={language} style={hljsStyleGitHub}>
|
<CodeHighlight language={language}>{command}</CodeHighlight>
|
||||||
{command}
|
|
||||||
</SyntaxHighlighter>
|
|
||||||
<br />※ 安卓模拟器可能需要额外操作,如
|
<br />※ 安卓模拟器可能需要额外操作,如
|
||||||
<ExtLink className="text-nowrap" href="https://g.126.fm/04jewvw">
|
<ExtLink className="text-nowrap" href="https://g.126.fm/04jewvw">
|
||||||
网易 MuMu 模拟器
|
网易 MuMu 模拟器
|
||||||
|
|||||||
10
src/components/CodeHighlight.tsx
Normal file
10
src/components/CodeHighlight.tsx
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
import { Light as SyntaxHighlighter, type SyntaxHighlighterProps } from 'react-syntax-highlighter';
|
||||||
|
import hljsStyleGitHub from 'react-syntax-highlighter/dist/esm/styles/hljs/github';
|
||||||
|
|
||||||
|
export function CodeHighlight({ children, ...props }: SyntaxHighlighterProps) {
|
||||||
|
return (
|
||||||
|
<SyntaxHighlighter style={hljsStyleGitHub} {...props}>
|
||||||
|
{children}
|
||||||
|
</SyntaxHighlighter>
|
||||||
|
);
|
||||||
|
}
|
||||||
@@ -31,6 +31,7 @@ class DecryptCommandHandler {
|
|||||||
const [result, error] = await go(this.tryDecryptWith(decipher));
|
const [result, error] = await go(this.tryDecryptWith(decipher));
|
||||||
if (!error) {
|
if (!error) {
|
||||||
if (result) {
|
if (result) {
|
||||||
|
console.debug(`[${decipher.cipherName}] Decryption OK`);
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
errors.push(`${decipher.cipherName}: no response`);
|
errors.push(`${decipher.cipherName}: no response`);
|
||||||
|
|||||||
@@ -6,6 +6,8 @@ import { VQuote } from '~/components/HelpText/VQuote';
|
|||||||
import { MacCommandKey } from '~/components/Key/MacCommandKey';
|
import { MacCommandKey } from '~/components/Key/MacCommandKey';
|
||||||
import { ShiftKey } from '~/components/Key/ShiftKey';
|
import { ShiftKey } from '~/components/Key/ShiftKey';
|
||||||
|
|
||||||
|
import BlockUpdateScript from './assets/QQ 音乐 Mac 屏蔽升级.tar.gz?base64';
|
||||||
|
|
||||||
const MAC_CLIENT_URL =
|
const MAC_CLIENT_URL =
|
||||||
'https://web.archive.org/web/20230903/https://dldir1.qq.com/music/clntupate/mac/QQMusicMac_Mgr.dmg';
|
'https://web.archive.org/web/20230903/https://dldir1.qq.com/music/clntupate/mac/QQMusicMac_Mgr.dmg';
|
||||||
const MAC_CLIENT_TG_URL = 'https://t.me/um_lsr_ch/21';
|
const MAC_CLIENT_TG_URL = 'https://t.me/um_lsr_ch/21';
|
||||||
@@ -43,6 +45,19 @@ export function InstructionsMac() {
|
|||||||
</li>
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
|
|
||||||
|
<p className="mt-4">
|
||||||
|
有部分用户发现现在会强制更新。你可以下载
|
||||||
|
<ExtLink
|
||||||
|
className="link-info mx-1"
|
||||||
|
download="QQ 音乐 Mac 屏蔽升级.tar.gz"
|
||||||
|
href={`data:application/gzip;base64,${BlockUpdateScript}`}
|
||||||
|
>
|
||||||
|
QQ 音乐 Mac 屏蔽升级.tar.gz
|
||||||
|
</ExtLink>
|
||||||
|
,然后执行 <code>QQ 音乐 Mac 屏蔽升级.command</code>。 其原理是修改 QQ
|
||||||
|
音乐的版本号,让其认为自己是最新版本,从而屏蔽更新。
|
||||||
|
</p>
|
||||||
|
|
||||||
<p className="mt-4">密钥文件通常存储在下述路径:</p>
|
<p className="mt-4">密钥文件通常存储在下述路径:</p>
|
||||||
<FilePathBlock>{DB_PATH}</FilePathBlock>
|
<FilePathBlock>{DB_PATH}</FilePathBlock>
|
||||||
|
|
||||||
|
|||||||
BIN
src/features/settings/panels/QMCv2/assets/QQ 音乐 Mac 屏蔽升级.tar.gz
Normal file
BIN
src/features/settings/panels/QMCv2/assets/QQ 音乐 Mac 屏蔽升级.tar.gz
Normal file
Binary file not shown.
Reference in New Issue
Block a user