From d733dba221423c48059f6efd2d29b1c30166aa46 Mon Sep 17 00:00:00 2001 From: Jixun Date: Sat, 26 Nov 2022 23:52:48 +0000 Subject: [PATCH 01/10] ci: upload to gitea packages instead of s3 --- .drone.yml | 28 +++++++++------------------- scripts/upload-packages.sh | 14 ++++++++++++++ 2 files changed, 23 insertions(+), 19 deletions(-) create mode 100644 scripts/upload-packages.sh diff --git a/.drone.yml b/.drone.yml index cb444be..4e84fe6 100644 --- a/.drone.yml +++ b/.drone.yml @@ -15,23 +15,13 @@ steps: - ./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: busybox:1.34-glibc + environment: + DRONE_GITEA_SERVER: https://git.unlock-music.dev + GITEA_API_KEY: + from_secret: GITEA_API_KEY + commands: + - apt-get update && apt-get install -y curl + - ./scripts/upload-packages.sh diff --git a/scripts/upload-packages.sh b/scripts/upload-packages.sh new file mode 100644 index 0000000..d2ef758 --- /dev/null +++ b/scripts/upload-packages.sh @@ -0,0 +1,14 @@ +#!/bin/sh + +set -ex + +cd "$(git rev-parse --show-toplevel)" + +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 From 9b76ef295934b44c4ec62aed16ae26da2a6cf31f Mon Sep 17 00:00:00 2001 From: Jixun Date: Sun, 27 Nov 2022 00:17:41 +0000 Subject: [PATCH 02/10] ci: mark upload script as executable --- scripts/upload-packages.sh | 0 1 file changed, 0 insertions(+), 0 deletions(-) mode change 100644 => 100755 scripts/upload-packages.sh diff --git a/scripts/upload-packages.sh b/scripts/upload-packages.sh old mode 100644 new mode 100755 From ff06c817350d2e8e2608643aa3b8028a6811e03b Mon Sep 17 00:00:00 2001 From: Jixun Date: Sun, 27 Nov 2022 00:26:21 +0000 Subject: [PATCH 03/10] ci: specify debian image + set dependency --- .drone.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.drone.yml b/.drone.yml index 4e84fe6..925f970 100644 --- a/.drone.yml +++ b/.drone.yml @@ -17,11 +17,11 @@ steps: - ./scripts/build-and-package.sh modern - name: upload artifact - image: busybox:1.34-glibc + image: debian:bullseye-20221114 environment: DRONE_GITEA_SERVER: https://git.unlock-music.dev GITEA_API_KEY: from_secret: GITEA_API_KEY commands: - - apt-get update && apt-get install -y curl + - apt-get update && apt-get install -y curl git - ./scripts/upload-packages.sh From 1fc71429571543188e534e9476fcfe3ab1565fe6 Mon Sep 17 00:00:00 2001 From: Jixun Date: Sun, 27 Nov 2022 00:38:13 +0000 Subject: [PATCH 04/10] ci: use emsdk instead of download emsdk each build. --- .drone.yml | 8 ++++++-- src/KgmWasm/build-wasm | 34 ++++++++++++++++++---------------- src/QmcWasm/build-wasm | 33 ++++++++++++++++++--------------- 3 files changed, 42 insertions(+), 33 deletions(-) diff --git a/.drone.yml b/.drone.yml index 925f970..7021d95 100644 --- a/.drone.yml +++ b/.drone.yml @@ -4,12 +4,16 @@ type: docker name: default steps: + - name: build-wasm + image: emscripten/emsdk:3.0.0 + commands: + - ./scripts/build-wasm.sh + - name: build image: node:16.18-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 diff --git a/src/KgmWasm/build-wasm b/src/KgmWasm/build-wasm index 85f5658..599b97c 100755 --- a/src/KgmWasm/build-wasm +++ b/src/KgmWasm/build-wasm @@ -8,29 +8,31 @@ CURR_DIR="${PWD}" BUILD_TYPE="$1" if [ -z "$BUILD_TYPE" ]; then - BUILD_TYPE=Release + BUILD_TYPE=Release +fi + +# 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 + ./emsdk install 3.0.0 + ./emsdk activate 3.0.0 + source ./emsdk_env.sh + popd # ../../build/emsdk fi mkdir -p build/wasm -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 - pushd build/wasm emcmake cmake -DCMAKE_BUILD_TYPE="$BUILD_TYPE" ../.. make -j TARGET_FILES=" - KgmLegacy.js - KgmWasm.js - KgmWasm.wasm - KgmWasmBundle.js + KgmLegacy.js + KgmWasm.js + KgmWasm.wasm + KgmWasmBundle.js " cp $TARGET_FILES "${CURR_DIR}/" diff --git a/src/QmcWasm/build-wasm b/src/QmcWasm/build-wasm index c906fae..4cd1640 100755 --- a/src/QmcWasm/build-wasm +++ b/src/QmcWasm/build-wasm @@ -8,28 +8,31 @@ CURR_DIR="${PWD}" BUILD_TYPE="$1" if [ -z "$BUILD_TYPE" ]; then - BUILD_TYPE=Release + BUILD_TYPE=Release +fi + +# 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 + ./emsdk install 3.0.0 + ./emsdk activate 3.0.0 + source ./emsdk_env.sh + popd # ../../build/emsdk fi mkdir -p build/wasm -if [ ! -d ../../build/emsdk ]; then - git clone https://github.com/emscripten-core/emsdk.git ../../build/emsdk -fi - -pushd ../../build/emsdk -./emsdk install 3.0.0 -./emsdk activate 3.0.0 -source ./emsdk_env.sh -popd # ../../build/emsdk - pushd build/wasm emcmake cmake -DCMAKE_BUILD_TYPE="$BUILD_TYPE" ../.. make -j TARGET_FILES=" - QmcLegacy.js - QmcWasm.js - QmcWasm.wasm - QmcWasmBundle.js + QmcLegacy.js + QmcWasm.js + QmcWasm.wasm + QmcWasmBundle.js " cp $TARGET_FILES "${CURR_DIR}/" From 26e50473f223e1bdde0c69c4d39f6652a8cf66dc Mon Sep 17 00:00:00 2001 From: Jixun Date: Sun, 27 Nov 2022 00:43:37 +0000 Subject: [PATCH 05/10] ci: skip upload step when api key is empty (usually happens for PR) --- scripts/upload-packages.sh | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/scripts/upload-packages.sh b/scripts/upload-packages.sh index d2ef758..06c3d43 100755 --- a/scripts/upload-packages.sh +++ b/scripts/upload-packages.sh @@ -4,11 +4,16 @@ 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}" + 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 From 70c78772ec80339a666e13e086db0f774b2752b4 Mon Sep 17 00:00:00 2001 From: Jixun Date: Sun, 27 Nov 2022 00:45:15 +0000 Subject: [PATCH 06/10] ci: use same node image to skip dependency install. --- .drone.yml | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/.drone.yml b/.drone.yml index 7021d95..72763ef 100644 --- a/.drone.yml +++ b/.drone.yml @@ -21,11 +21,10 @@ steps: - ./scripts/build-and-package.sh modern - name: upload artifact - image: debian:bullseye-20221114 + image: node:16.18-bullseye environment: DRONE_GITEA_SERVER: https://git.unlock-music.dev GITEA_API_KEY: from_secret: GITEA_API_KEY commands: - - apt-get update && apt-get install -y curl git - ./scripts/upload-packages.sh From 551d3abd2012048e0df290cde1debdd0f80dcb8a Mon Sep 17 00:00:00 2001 From: jixunmoe Date: Sun, 27 Nov 2022 00:56:09 +0000 Subject: [PATCH 07/10] docs: update link to artifact + ci badge --- README.md | 172 ++++++++++++++++++++++++++++-------------------------- 1 file changed, 88 insertions(+), 84 deletions(-) diff --git a/README.md b/README.md index 8053876..4f7ead7 100644 --- a/README.md +++ b/README.md @@ -1,84 +1,88 @@ -# Unlock Music 音乐解锁 - -- 在浏览器中解锁加密的音乐文件。 Unlock encrypted music file in the browser. -- Unlock Music 项目是以学习和技术研究的初衷创建的,修改、再分发时请遵循[授权协议]。 -- Unlock Music 的 CLI 版本可以在 [unlock-music/cli] 找到,大批量转换建议使用 CLI 版本。 -- 我们新建了 Telegram 群组 [`@unlock_music_chat`] ,欢迎加入! - -[授权协议]: 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 - -## 特性 - -### 支持的格式 - -- [x] QQ 音乐 (.qmc0/.qmc2/.qmc3/.qmcflac/.qmcogg/.tkm) -- [x] Moo 音乐格式 (.bkcmp3/.bkcflac/...) -- [x] QQ 音乐 Tm 格式 (.tm0/.tm2/.tm3/.tm6) -- [x] QQ 音乐新格式 (.mflac/.mgg/.mflac0/.mgg1/.mggl) -- [x] QQ 音乐海外版JOOX Music (.ofl_en) -- [x] 网易云音乐格式 (.ncm) -- [x] 虾米音乐格式 (.xm) -- [x] 酷我音乐格式 (.kwm) -- [x] 酷狗音乐格式 (.kgm/.vpr) - -### 其他特性 - -- [x] 在浏览器中解锁 -- [x] 拖放文件 -- [x] 批量解锁 -- [x] 渐进式 Web 应用 (PWA) -- [x] 多线程 -- [x] 写入元信息与专辑封面 - -## 使用方法 - -### 使用预构建版本 - -- 从 [Release] 下载预构建的版本 - - :warning: 本地使用请下载`legacy版本`(`modern版本`只能通过 **http(s)协议** 访问) -- 解压缩后即可部署或本地使用(**请勿直接运行源代码**) - -[release]: https://git.unlock-music.dev/um/web/releases/latest - -### 自行构建 - -#### JS部分 - -- 环境要求 - - nodejs (v16.x) - - npm - -1. 获取项目源代码后安装相关依赖: - - ```sh - npm ci - ``` - -2. 然后进行构建: - - ```sh - npm run build - ``` - - - 构建后的产物可以在 `dist` 目录找到。 - - 如果是用于开发,可以执行 `npm run serve`。 - -3. 如需构建浏览器扩展,构建成功后还需要执行: - - ```sh - npm run make-extension - ``` - -#### WASM部分 - -- 环境要求 - - Linux - - python3 - -- 运行此目录下的build-wasm - - ```sh - ./scripts/build-wasm.sh - ``` +# 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/ + +## 特性 + +### 支持的格式 + +- [x] QQ 音乐 (.qmc0/.qmc2/.qmc3/.qmcflac/.qmcogg/.tkm) +- [x] Moo 音乐格式 (.bkcmp3/.bkcflac/...) +- [x] QQ 音乐 Tm 格式 (.tm0/.tm2/.tm3/.tm6) +- [x] QQ 音乐新格式 (.mflac/.mgg/.mflac0/.mgg1/.mggl) +- [x] QQ 音乐海外版JOOX Music (.ofl_en) +- [x] 网易云音乐格式 (.ncm) +- [x] 虾米音乐格式 (.xm) +- [x] 酷我音乐格式 (.kwm) +- [x] 酷狗音乐格式 (.kgm/.vpr) + +### 其他特性 + +- [x] 在浏览器中解锁 +- [x] 拖放文件 +- [x] 批量解锁 +- [x] 渐进式 Web 应用 (PWA) +- [x] 多线程 +- [x] 写入元信息与专辑封面 + +## 使用方法 + +### 使用预构建版本 + +- 从 [Release] 或 [CI 构建][UM-Packages] 下载预构建的版本 + - :warning: 本地使用请下载`legacy版本`(`modern版本`只能通过 **http(s)协议** 访问) +- 解压缩后即可部署或本地使用(**请勿直接运行源代码**) + +[release]: https://git.unlock-music.dev/um/web/releases/latest + +### 自行构建 + +#### JS部分 + +- 环境要求 + - nodejs (v16.x) + - npm + +1. 获取项目源代码后安装相关依赖: + + ```sh + npm ci + ``` + +2. 然后进行构建: + + ```sh + npm run build + ``` + + - 构建后的产物可以在 `dist` 目录找到。 + - 如果是用于开发,可以执行 `npm run serve`。 + +3. 如需构建浏览器扩展,构建成功后还需要执行: + + ```sh + npm run make-extension + ``` + +#### WASM部分 + +- 环境要求 + - Linux + - python3 + +- 运行此目录下的build-wasm + + ```sh + ./scripts/build-wasm.sh + ``` From 38f9b1b19a7098fe592e668793ce8c6449f93a44 Mon Sep 17 00:00:00 2001 From: Unlock Music Dev Date: Thu, 24 Nov 2022 21:56:38 +0800 Subject: [PATCH 08/10] chore: remove stats --- public/index.html | 4 ---- public/ixarea-stats.js | 10 ---------- src/extension/ixarea-stats.js | 0 3 files changed, 14 deletions(-) delete mode 100644 public/ixarea-stats.js delete mode 100644 src/extension/ixarea-stats.js diff --git a/public/index.html b/public/index.html index 33e39ab..0b295d7 100644 --- a/public/index.html +++ b/public/index.html @@ -8,7 +8,6 @@ 音乐解锁 - @@ -19,9 +18,6 @@

请勿直接运行源代码!