Merge remote-tracking branch 'upstream/master' into migration-to-vue-3
continuous-integration/drone/pr Build is failing
Details
continuous-integration/drone/pr Build is failing
Details
This commit is contained in:
commit
518cf43bf2
35
.drone.yml
35
.drone.yml
|
@ -4,34 +4,27 @@ type: docker
|
|||
name: default
|
||||
|
||||
steps:
|
||||
- name: build-wasm
|
||||
image: emscripten/emsdk:3.0.0
|
||||
commands:
|
||||
- ./scripts/build-wasm.sh
|
||||
|
||||
- name: build
|
||||
image: node:18.12-bullseye
|
||||
commands:
|
||||
- apt-get update
|
||||
- apt-get install -y cmake jq zip
|
||||
- ./scripts/build-wasm.sh
|
||||
- apt-get install -y jq zip
|
||||
- npm ci
|
||||
- npm run test
|
||||
- ./scripts/build-and-package.sh legacy
|
||||
- ./scripts/build-and-package.sh extension
|
||||
- ./scripts/build-and-package.sh modern
|
||||
- sha256sum *.zip > sha256sum.txt
|
||||
- mkdir -p upload
|
||||
- mv *.zip sha256sum.txt upload/
|
||||
|
||||
- name: upload
|
||||
image: 'plugins/s3'
|
||||
settings:
|
||||
path_style: true
|
||||
endpoint:
|
||||
from_secret: S3_ENDPOINT
|
||||
access_key:
|
||||
from_secret: S3_ACCESS_KEY
|
||||
secret_key:
|
||||
from_secret: S3_SECRET_KEY
|
||||
bucket:
|
||||
from_secret: S3_BUCKET
|
||||
region: 'auto'
|
||||
source: 'upload/*'
|
||||
strip_prefix: 'upload/'
|
||||
target: '${DRONE_REPO}/${DRONE_BUILD_NUMBER}/'
|
||||
- name: upload artifact
|
||||
image: node:16.18-bullseye
|
||||
environment:
|
||||
DRONE_GITEA_SERVER: https://git.unlock-music.dev
|
||||
GITEA_API_KEY:
|
||||
from_secret: GITEA_API_KEY
|
||||
commands:
|
||||
- ./scripts/upload-packages.sh
|
||||
|
|
|
@ -1,13 +1,17 @@
|
|||
# Unlock Music 音乐解锁
|
||||
|
||||
[![Build Status](https://ci.unlock-music.dev/api/badges/um/web/status.svg)](https://ci.unlock-music.dev/um/web)
|
||||
|
||||
- 在浏览器中解锁加密的音乐文件。 Unlock encrypted music file in the browser.
|
||||
- Unlock Music 项目是以学习和技术研究的初衷创建的,修改、再分发时请遵循[授权协议]。
|
||||
- Unlock Music 的 CLI 版本可以在 [unlock-music/cli] 找到,大批量转换建议使用 CLI 版本。
|
||||
- 我们新建了 Telegram 群组 [`@unlock_music_chat`] ,欢迎加入!
|
||||
- CI 自动构建已经部署,可以在 [UM-Packages] 下载
|
||||
|
||||
[授权协议]: https://git.unlock-music.dev/um/web/src/branch/master/LICENSE
|
||||
[unlock-music/cli]: https://git.unlock-music.dev/um/cli
|
||||
[`@unlock_music_chat`]: https://t.me/unlock_music_chat
|
||||
[um-packages]: https://git.unlock-music.dev/um/-/packages/generic/web-build/
|
||||
|
||||
## 特性
|
||||
|
||||
|
@ -36,7 +40,7 @@
|
|||
|
||||
### 使用预构建版本
|
||||
|
||||
- 从 [Release] 下载预构建的版本
|
||||
- 从 [Release] 或 [CI 构建][um-packages] 下载预构建的版本
|
||||
- :warning: 本地使用请下载`legacy版本`(`modern版本`只能通过 **http(s)协议** 访问)
|
||||
- 解压缩后即可部署或本地使用(**请勿直接运行源代码**)
|
||||
|
||||
|
|
|
@ -8,18 +8,12 @@
|
|||
<title>音乐解锁</title>
|
||||
<meta content="音乐,解锁,ncm,qmc,mgg,mflac,qq音乐,网易云音乐,加密" name="keywords" />
|
||||
<meta content="音乐解锁 - 在任何设备上解锁已购的加密音乐!" name="description" />
|
||||
<script src="./src/ixarea-stats.js"></script>
|
||||
</head>
|
||||
<body>
|
||||
<div id="loader-mask">
|
||||
<div id="loader"></div>
|
||||
<noscript>
|
||||
<h3 id="loader-js">请启用JavaScript</h3>
|
||||
<img
|
||||
alt=""
|
||||
src="https://stats.ixarea.com/ixarea-stats/report?rec=1&action_name=音乐解锁-NoJS&idsite=2"
|
||||
style="border: 0"
|
||||
/>
|
||||
</noscript>
|
||||
<h3 id="loader-source">请勿直接运行源代码!</h3>
|
||||
<div id="loader-tips-outdated" hidden>
|
||||
|
|
|
@ -0,0 +1,19 @@
|
|||
#!/bin/sh
|
||||
|
||||
set -ex
|
||||
|
||||
cd "$(git rev-parse --show-toplevel)"
|
||||
|
||||
if [ -z "$GITEA_API_KEY" ]; then
|
||||
echo "GITEA_API_KEY is empty, skip upload."
|
||||
exit 0
|
||||
fi
|
||||
|
||||
URL_BASE="$DRONE_GITEA_SERVER/api/packages/${DRONE_REPO_NAMESPACE}/generic/${DRONE_REPO_NAME}-build"
|
||||
|
||||
for ZIP_NAME in *.zip; do
|
||||
UPLOAD_URL="${URL_BASE}/${DRONE_BUILD_NUMBER}/${ZIP_NAME}"
|
||||
sha256sum "${ZIP_NAME}"
|
||||
curl -sLifu "um-release-bot:$GITEA_API_KEY" -T "${ZIP_NAME}" "${UPLOAD_URL}"
|
||||
echo "Uploaded to: ${UPLOAD_URL}"
|
||||
done
|
|
@ -11,18 +11,20 @@ if [ -z "$BUILD_TYPE" ]; then
|
|||
BUILD_TYPE=Release
|
||||
fi
|
||||
|
||||
mkdir -p build/wasm
|
||||
# CI: already had emsdk installed.
|
||||
if ! command -v emcc; then
|
||||
if [ ! -d ../../build/emsdk ]; then
|
||||
git clone https://github.com/emscripten-core/emsdk.git ../../build/emsdk
|
||||
fi
|
||||
|
||||
pushd ../../build/emsdk
|
||||
#git pull
|
||||
./emsdk install 3.0.0
|
||||
./emsdk activate 3.0.0
|
||||
source ./emsdk_env.sh
|
||||
popd # ../../build/emsdk
|
||||
fi
|
||||
|
||||
mkdir -p build/wasm
|
||||
pushd build/wasm
|
||||
emcmake cmake -DCMAKE_BUILD_TYPE="$BUILD_TYPE" ../..
|
||||
make -j
|
||||
|
|
|
@ -11,7 +11,8 @@ if [ -z "$BUILD_TYPE" ]; then
|
|||
BUILD_TYPE=Release
|
||||
fi
|
||||
|
||||
mkdir -p build/wasm
|
||||
# CI: already had emsdk installed.
|
||||
if ! command -v emcc; then
|
||||
if [ ! -d ../../build/emsdk ]; then
|
||||
git clone https://github.com/emscripten-core/emsdk.git ../../build/emsdk
|
||||
fi
|
||||
|
@ -21,7 +22,9 @@ pushd ../../build/emsdk
|
|||
./emsdk activate 3.0.0
|
||||
source ./emsdk_env.sh
|
||||
popd # ../../build/emsdk
|
||||
fi
|
||||
|
||||
mkdir -p build/wasm
|
||||
pushd build/wasm
|
||||
emcmake cmake -DCMAKE_BUILD_TYPE="$BUILD_TYPE" ../..
|
||||
make -j
|
||||
|
|
|
@ -70,6 +70,7 @@ export async function Decrypt(file: FileInfo, config: Record<string, any>): Prom
|
|||
case 'mgg': //QQ Music New Ogg
|
||||
case 'mgg1': //QQ Music New Ogg
|
||||
case 'mgg0':
|
||||
case 'mmp4': // QMC MP4 Container w/ E-AC-3 JOC
|
||||
case '666c6163': //QQ Music Weiyun Flac
|
||||
case '6d7033': //QQ Music Weiyun Mp3
|
||||
case '6f6767': //QQ Music Weiyun Ogg
|
||||
|
|
|
@ -15,12 +15,16 @@ import { DecryptResult } from '@/decrypt/entity';
|
|||
const MagicHeader = [
|
||||
0x79, 0x65, 0x65, 0x6C, 0x69, 0x6F, 0x6E, 0x2D,
|
||||
0x6B, 0x75, 0x77, 0x6F, 0x2D, 0x74, 0x6D, 0x65,
|
||||
]
|
||||
];
|
||||
const MagicHeader2 = [
|
||||
0x79, 0x65, 0x65, 0x6C, 0x69, 0x6F, 0x6E, 0x2D,
|
||||
0x6B, 0x75, 0x77, 0x6F, 0x00, 0x00, 0x00, 0x00,
|
||||
];
|
||||
const PreDefinedKey = 'MoOtOiTvINGwd2E6n0E1i7L5t2IoOoNk';
|
||||
|
||||
export async function Decrypt(file: File, raw_filename: string, _: string): Promise<DecryptResult> {
|
||||
const oriData = new Uint8Array(await GetArrayBuffer(file));
|
||||
if (!BytesHasPrefix(oriData, MagicHeader)) {
|
||||
if (!BytesHasPrefix(oriData, MagicHeader) && !BytesHasPrefix(oriData, MagicHeader2)) {
|
||||
if (SniffAudioExt(oriData) === 'aac') {
|
||||
return await RawDecrypt(file, raw_filename, 'aac', false);
|
||||
}
|
||||
|
|
|
@ -18,6 +18,7 @@ export const HandlerMap: { [key: string]: Handler } = {
|
|||
mgg1: { ext: 'ogg', version: 2 },
|
||||
mflac: { ext: 'flac', version: 2 },
|
||||
mflac0: { ext: 'flac', version: 2 },
|
||||
mmp4: { ext: 'mmp4', version: 2 },
|
||||
|
||||
// qmcflac / qmcogg:
|
||||
// 有可能是 v2 加密但混用同一个后缀名。
|
||||
|
|
|
@ -1,15 +0,0 @@
|
|||
var _paq = window._paq || [];
|
||||
_paq.push(
|
||||
['setRequestMethod', 'POST'],
|
||||
['trackPageView'],
|
||||
['enableLinkTracking'],
|
||||
['setSiteId', '2'],
|
||||
['setTrackerUrl', 'https://stats.ixarea.com/ixarea-stats/report'],
|
||||
);
|
||||
|
||||
var tag = document.createElement('script');
|
||||
tag.type = 'text/javascript';
|
||||
tag.async = true;
|
||||
tag.src = 'https://stats.ixarea.com/ixarea-stats.js';
|
||||
var s = document.getElementsByTagName('script')[0];
|
||||
s.parentNode.insertBefore(tag, s);
|
Loading…
Reference in New Issue