diff --git a/.github/workflows/build.yaml b/.github/workflows/build.yaml index ddb6a8fd18..e311c85383 100644 --- a/.github/workflows/build.yaml +++ b/.github/workflows/build.yaml @@ -1,21 +1,14 @@ -name: Release - -env: - YARN_INSTALL_NOPT: yarn add --ignore-platform --ignore-optional +name: Build on: push: branches: - master - tags: - - v* workflow_dispatch: jobs: - release: + build: runs-on: ${{ matrix.os }} - env: - SNAPCRAFT_STORE_CREDENTIALS: ${{ secrets.snapcraft_token }} strategy: matrix: @@ -37,9 +30,7 @@ jobs: if: runner.os == 'Linux' run: | sudo apt-get update && - sudo apt-get install --no-install-recommends -y rpm && - sudo apt-get install --no-install-recommends -y libarchive-tools && - sudo apt-get install --no-install-recommends -y libopenjp2-tools + sudo apt-get install --no-install-recommends -y rpm libarchive-tools libopenjp2-tools - name: Install Snapcraft (on Ubuntu) uses: samuelmeuli/action-snapcraft@v3 @@ -56,14 +47,14 @@ jobs: - name: Install UNM dependencies for Windows if: runner.os == 'Windows' run: | - ${{ env.YARN_INSTALL_NOPT }} \ + yarn add --ignore-platform --ignore-optional \ @unblockneteasemusic/rust-napi-win32-x64-msvc@${{steps.get_unm_version.outputs.unmver}} shell: bash - name: Install UNM dependencies for macOS if: runner.os == 'macOS' run: | - ${{ env.YARN_INSTALL_NOPT }} \ + yarn add --ignore-platform --ignore-optional \ @unblockneteasemusic/rust-napi-darwin-x64@${{steps.get_unm_version.outputs.unmver}} \ @unblockneteasemusic/rust-napi-darwin-arm64@${{steps.get_unm_version.outputs.unmver}} \ dmg-license @@ -72,13 +63,13 @@ jobs: - name: Install UNM dependencies for Linux if: runner.os == 'Linux' run: | - ${{ env.YARN_INSTALL_NOPT }} \ + yarn add --ignore-platform --ignore-optional \ @unblockneteasemusic/rust-napi-linux-x64-gnu@${{steps.get_unm_version.outputs.unmver}} \ @unblockneteasemusic/rust-napi-linux-arm64-gnu@${{steps.get_unm_version.outputs.unmver}} \ @unblockneteasemusic/rust-napi-linux-arm-gnueabihf@${{steps.get_unm_version.outputs.unmver}} shell: bash - - name: Build/release Electron app + - name: Build Electron app uses: samuelmeuli/action-electron-builder@v1.6.0 env: VUE_APP_NETEASE_API_URL: /api @@ -87,15 +78,9 @@ jobs: VUE_APP_LASTFM_API_KEY: 09c55292403d961aa517ff7f5e8a3d9c VUE_APP_LASTFM_API_SHARED_SECRET: 307c9fda32b3904e53654baff215cb67 with: - # GitHub token, automatically provided to the action - # (No need to define this secret in the repo settings) - github_token: ${{ secrets.github_token }} - - # If the commit is tagged with a version (e.g. "v1.0.0"), - # release the app after building - release: ${{ startsWith(github.ref, 'refs/tags/v') }} - use_vue_cli: true + release: false + github_token: ${{ secrets.github_token }} - uses: actions/upload-artifact@v4 with: diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml new file mode 100644 index 0000000000..507cf28302 --- /dev/null +++ b/.github/workflows/main.yml @@ -0,0 +1,115 @@ +name: Build Artifacts + +env: + YARN_INSTALL_NOPT: yarn add --ignore-platform --ignore-optional + +on: + push: + branches: + - master + workflow_dispatch: + +jobs: + build: + runs-on: ${{ matrix.os }} + + strategy: + matrix: + os: [macos-latest, windows-latest, ubuntu-22.04] + + steps: + - name: Check out Git repository + uses: actions/checkout@v3 + with: + submodules: recursive + + - name: Install Node.js and Yarn + uses: actions/setup-node@v3 + with: + node-version: 16 + cache: yarn + + - name: Install Linux packaging deps + if: runner.os == 'Linux' + run: | + sudo apt-get update + sudo apt-get install --no-install-recommends -y \ + rpm libarchive-tools libopenjp2-tools \ + libfuse2 # ✅ AppImage required + + - id: get_unm_version + name: Get UNM version + run: | + yarn --ignore-optional + unm_version=$(node -e "console.log(require('./node_modules/@unblockneteasemusic/rust-napi/package.json').version)") + echo "::set-output name=unmver::${unm_version}" + shell: bash + + - name: Install UNM dependencies for macOS + if: runner.os == 'macOS' + run: | + ${{ env.YARN_INSTALL_NOPT }} \ + @unblockneteasemusic/rust-napi-darwin-x64@${{steps.get_unm_version.outputs.unmver}} \ + @unblockneteasemusic/rust-napi-darwin-arm64@${{steps.get_unm_version.outputs.unmver}} \ + dmg-license + + - name: Install UNM dependencies for Windows + if: runner.os == 'Windows' + run: | + ${{ env.YARN_INSTALL_NOPT }} \ + @unblockneteasemusic/rust-napi-win32-x64-msvc@${{steps.get_unm_version.outputs.unmver}} + + - name: Install UNM dependencies for Linux + if: runner.os == 'Linux' + run: | + ${{ env.YARN_INSTALL_NOPT }} \ + @unblockneteasemusic/rust-napi-linux-x64-gnu@${{steps.get_unm_version.outputs.unmver}} \ + @unblockneteasemusic/rust-napi-linux-arm64-gnu@${{steps.get_unm_version.outputs.unmver}} \ + @unblockneteasemusic/rust-napi-linux-arm-gnueabihf@${{steps.get_unm_version.outputs.unmver}} + + - name: Build Electron app + uses: samuelmeuli/action-electron-builder@v1.6.0 + env: + VUE_APP_NETEASE_API_URL: /api + VUE_APP_ELECTRON_API_URL: /api + VUE_APP_ELECTRON_API_URL_DEV: http://127.0.0.1:10754 + with: + github_token: ${{ secrets.github_token }} + release: false + use_vue_cli: true + + # ───────── Upload Artifacts ───────── + + - name: Upload mac dmg + uses: actions/upload-artifact@v4 + if: runner.os == 'macOS' + with: + name: YesPlayMusic-mac + path: dist_electron/*.dmg + if-no-files-found: ignore + + - name: Upload win exe + uses: actions/upload-artifact@v4 + if: runner.os == 'Windows' + with: + name: YesPlayMusic-win + path: dist_electron/*Setup*.exe + if-no-files-found: ignore + + - name: Upload Linux AppImage + uses: actions/upload-artifact@v4 + if: runner.os == 'Linux' + with: + name: YesPlayMusic-linux-AppImage + path: dist_electron/*.AppImage + if-no-files-found: warn + + - name: Upload deb/rpm + uses: actions/upload-artifact@v4 + if: runner.os == 'Linux' + with: + name: YesPlayMusic-linux-packages + path: | + dist_electron/*.deb + dist_electron/*.rpm + if-no-files-found: ignore diff --git a/src/api/track.js b/src/api/track.js index 490c91c3ad..aeb7bcabf0 100644 --- a/src/api/track.js +++ b/src/api/track.js @@ -94,6 +94,32 @@ export function getLyric(id) { }); } +/** + * 获取新版歌词 + * 说明 : 调用此接口 , 传入音乐 id 可获得对应音乐的新版歌词 + * @param {number} id - 音乐 id + */ +export function getLyricNew(id) { + const fetchLatest = () => { + return request({ + url: '/lyric/new', + method: 'get', + params: { + id, + }, + }).then(result => { + cacheLyric(id, result); + return result; + }); + }; + + fetchLatest(); + + return getLyricFromCache(id).then(result => { + return result ?? fetchLatest(); + }); +} + /** * 新歌速递 * 说明 : 调用此接口 , 可获取新歌速递 diff --git a/src/ncmModDef.js b/src/ncmModDef.js index cf77aaa57b..61e184931a 100644 --- a/src/ncmModDef.js +++ b/src/ncmModDef.js @@ -369,6 +369,11 @@ module.exports = [ route: '/lyric', module: require('@neteaseapireborn/api/module/lyric'), }, + { + identifier: 'lyric_new', + route: '/lyric/new', + module: require('@neteaseapireborn/api/module/lyric_new'), + }, { identifier: 'logout', route: '/logout',