From cd12c64ea19994d184d7c68ffa1784a110279f1f Mon Sep 17 00:00:00 2001 From: ikun Date: Sat, 3 Aug 2024 13:51:00 +0800 Subject: [PATCH] =?UTF-8?q?=E6=87=92?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/ISSUE_TEMPLATE/----.yml | 40 - .github/ISSUE_TEMPLATE/--bug.yml | 55 -- .github/actions/upload-artifact/action.yml | 10 +- .github/workflows/beta-pack-all.yml | 114 --- .github/workflows/beta-pack.yml | 39 - .github/workflows/build-test.yml | 28 - .github/workflows/publish-version-info.yml | 17 - .github/workflows/release.yml | 111 +-- CHANGELOG.md | 8 +- FAQ.md | 115 --- android/app/build.gradle | 4 +- android/app/src/main/AndroidManifest.xml | 2 +- .../cn/toside/music/mobile/MainActivity.java | 2 +- .../toside/music/mobile/MainApplication.java | 12 +- .../mobile/cache/CacheClearAsyncTask.java | 2 +- .../music/mobile/cache/CacheModule.java | 8 +- .../music/mobile/cache/CachePackage.java | 2 +- .../cn/toside/music/mobile/cache/Utils.java | 2 +- .../cn/toside/music/mobile/crypto/AES.java | 2 +- .../music/mobile/crypto/CryptoModule.java | 2 +- .../music/mobile/crypto/CryptoPackage.java | 2 +- .../cn/toside/music/mobile/crypto/RSA.java | 2 +- .../cn/toside/music/mobile/lyric/Lyric.java | 4 +- .../toside/music/mobile/lyric/LyricEvent.java | 2 +- .../music/mobile/lyric/LyricModule.java | 2 +- .../music/mobile/lyric/LyricPackage.java | 2 +- .../music/mobile/lyric/LyricPlayer.java | 2 +- .../music/mobile/lyric/LyricSwitchView.java | 2 +- .../music/mobile/lyric/LyricTextView.java | 2 +- .../toside/music/mobile/lyric/LyricView.java | 8 +- .../cn/toside/music/mobile/lyric/Utils.java | 2 +- .../toside/music/mobile/userApi/Console.java | 2 +- .../music/mobile/userApi/HandlerWhat.java | 2 +- .../mobile/userApi/JavaScriptThread.java | 2 +- .../music/mobile/userApi/JsHandler.java | 2 +- .../toside/music/mobile/userApi/QuickJS.java | 6 +- .../music/mobile/userApi/UserApiModule.java | 2 +- .../music/mobile/userApi/UserApiPackage.java | 2 +- .../music/mobile/userApi/UtilsEvent.java | 2 +- .../toside/music/mobile/utils/AsyncTask.java | 2 +- .../mobile/utils/BatteryOptimizationUtil.java | 2 +- .../cn/toside/music/mobile/utils/Utils.java | 2 +- .../toside/music/mobile/utils/UtilsEvent.java | 2 +- .../music/mobile/utils/UtilsModule.java | 2 +- .../music/mobile/utils/UtilsPackage.java | 2 +- android/app/src/main/res/values/strings.xml | 2 +- .../cn/toside/music/ReactNativeFlipper.java | 2 +- android/settings.gradle | 2 +- app.json | 2 +- doc/images/icon.png | Bin 6856 -> 0 bytes ios/.xcode.env | 11 - ios/LxMusicMobile.xcodeproj/project.pbxproj | 684 ------------------ .../xcschemes/LxMusicMobile.xcscheme | 88 --- ios/LxMusicMobile/AppDelegate.h | 6 - ios/LxMusicMobile/AppDelegate.mm | 36 - .../AppIcon.appiconset/Contents.json | 53 -- .../Images.xcassets/Contents.json | 6 - ios/LxMusicMobile/Info.plist | 52 -- ios/LxMusicMobile/LaunchScreen.storyboard | 47 -- ios/LxMusicMobile/main.m | 10 - ios/LxMusicMobileTests/Info.plist | 24 - ios/LxMusicMobileTests/LxMusicMobileTests.m | 66 -- ios/Podfile | 55 -- package-lock.json | 8 +- package.json | 12 +- publish/changeLog.md | 2 +- publish/version.json | 2 +- src/config/constant.ts | 2 +- src/lang/en_us.json | 10 +- src/lang/zh_cn.json | 11 +- src/navigation/components/PactModal.tsx | 4 +- src/screens/Home/Horizontal/Aside.tsx | 2 +- src/screens/Home/Vertical/DrawerNav.tsx | 2 +- .../Home/Views/Setting/settings/About.tsx | 43 +- src/utils/musicSdk/api-source-info.ts | 14 +- src/utils/musicSdk/api-source.js | 44 +- src/utils/musicSdk/bd/hotSearch.js | 23 - src/utils/musicSdk/bd/index.js | 40 - src/utils/musicSdk/bd/leaderboard.js | 153 ---- src/utils/musicSdk/bd/musicInfo.js | 20 - src/utils/musicSdk/bd/musicSearch.js | 88 --- src/utils/musicSdk/bd/songList.js | 264 ------- src/utils/musicSdk/index.js | 8 - src/utils/musicSdk/kg/api-ikun.js | 24 + src/utils/musicSdk/kw/api-ikun.js | 24 + src/utils/musicSdk/mg/api-ikun.js | 24 + src/utils/musicSdk/tx/api-ikun.js | 27 + src/utils/musicSdk/wy/api-ikun.js | 24 + src/utils/musicSdk/xm.js | 55 -- src/utils/tools.ts | 2 +- 90 files changed, 255 insertions(+), 2460 deletions(-) delete mode 100644 .github/ISSUE_TEMPLATE/----.yml delete mode 100644 .github/ISSUE_TEMPLATE/--bug.yml delete mode 100644 .github/workflows/beta-pack-all.yml delete mode 100644 .github/workflows/beta-pack.yml delete mode 100644 .github/workflows/build-test.yml delete mode 100644 .github/workflows/publish-version-info.yml delete mode 100644 FAQ.md delete mode 100644 doc/images/icon.png delete mode 100644 ios/.xcode.env delete mode 100644 ios/LxMusicMobile.xcodeproj/project.pbxproj delete mode 100644 ios/LxMusicMobile.xcodeproj/xcshareddata/xcschemes/LxMusicMobile.xcscheme delete mode 100644 ios/LxMusicMobile/AppDelegate.h delete mode 100644 ios/LxMusicMobile/AppDelegate.mm delete mode 100644 ios/LxMusicMobile/Images.xcassets/AppIcon.appiconset/Contents.json delete mode 100644 ios/LxMusicMobile/Images.xcassets/Contents.json delete mode 100644 ios/LxMusicMobile/Info.plist delete mode 100644 ios/LxMusicMobile/LaunchScreen.storyboard delete mode 100644 ios/LxMusicMobile/main.m delete mode 100644 ios/LxMusicMobileTests/Info.plist delete mode 100644 ios/LxMusicMobileTests/LxMusicMobileTests.m delete mode 100644 ios/Podfile delete mode 100644 src/utils/musicSdk/bd/hotSearch.js delete mode 100644 src/utils/musicSdk/bd/index.js delete mode 100644 src/utils/musicSdk/bd/leaderboard.js delete mode 100644 src/utils/musicSdk/bd/musicInfo.js delete mode 100644 src/utils/musicSdk/bd/musicSearch.js delete mode 100644 src/utils/musicSdk/bd/songList.js create mode 100644 src/utils/musicSdk/kg/api-ikun.js create mode 100644 src/utils/musicSdk/kw/api-ikun.js create mode 100644 src/utils/musicSdk/mg/api-ikun.js create mode 100644 src/utils/musicSdk/tx/api-ikun.js create mode 100644 src/utils/musicSdk/wy/api-ikun.js delete mode 100644 src/utils/musicSdk/xm.js diff --git a/.github/ISSUE_TEMPLATE/----.yml b/.github/ISSUE_TEMPLATE/----.yml deleted file mode 100644 index e0aa7ca..0000000 --- a/.github/ISSUE_TEMPLATE/----.yml +++ /dev/null @@ -1,40 +0,0 @@ -name: ✨功能请求 -description: 为这个项目提出一个想法,请先查看常见问题及搜索issue列表中有无你要提的问题 -title: "[Feature]: " -body: -- type: checkboxes - id: check-answer - attributes: - label: 解决方案检查 - description: 请确保你已完成以下所有操作 - options: - - label: 我已阅读常见问题(),但没有找到解决方案 - required: true - - label: 我已搜索issue列表(),但没有发现类似的问题 - required: true -- type: textarea - id: problem-description - attributes: - label: 问题描述 - description: 请添加清晰简洁的描述,说明你希望通过此功能请求解决的问题 - validations: - required: true -- type: textarea - id: proposed-solution - attributes: - label: 描述你想要的解决方案 - description: 简洁明了地描述你要发生的事情 - validations: - required: true -- type: textarea - id: alternatives-considered - attributes: - label: 描述你考虑过的替代方案 - description: 对你考虑过的所有替代解决方案或功能的简洁明了的描述 - validations: - required: false -- type: textarea - id: additional-information - attributes: - label: 附加信息 - description: 如果你的问题需要进一步解释,或者想要表达其他内容,请在此处添加更多信息。(直接把图片、视频拖到编辑框即可添加图片或视频) diff --git a/.github/ISSUE_TEMPLATE/--bug.yml b/.github/ISSUE_TEMPLATE/--bug.yml deleted file mode 100644 index df93494..0000000 --- a/.github/ISSUE_TEMPLATE/--bug.yml +++ /dev/null @@ -1,55 +0,0 @@ -name: 🐞报告Bug -description: 报告bug,请先查看常见问题及搜索issue列表中有无你要提的问题 -title: "[Bug]: " -body: -- type: checkboxes - id: check-answer - attributes: - label: 解决方案检查 - description: 请确保你已完成以下所有操作 - options: - - label: 我已阅读常见问题(),并没有找到解决方案 - required: true - - label: 我已搜索issue列表(),并没有发现类似的问题 - required: true -- type: textarea - id: expected-behavior - attributes: - label: 预期行为 - description: 对期望发生的事情的清晰简明描述 - validations: - required: true -- type: textarea - id: actual-behavior - attributes: - label: 实际行为 - description: 对实际发生的事情的清晰简明描述 - validations: - required: true -- type: input - id: version - attributes: - label: Lx Music 版本 - description: 你使用什么版本的LX Music? - placeholder: 1.0.0 arm64-v8a - validations: - required: true -- type: input - id: last-known-working-version - attributes: - label: 最后正常的版本 - description: 如果有,请在此处填写最后正常的版本是多少? - placeholder: 1.0.0 arm64-v8a -- type: input - id: operating-system-version - attributes: - label: 操作系统版本 - description: 您使用的是什么操作系统版本?在 Android 上,单击 设置 > 关于 - placeholder: "例如 Android 10" - validations: - required: true -- type: textarea - id: additional-information - attributes: - label: 附加信息 - description: 如果你的问题需要进一步解释,或者你所遇到的问题不容易重现,请在此处添加更多信息。(直接把图片、视频拖到编辑框即可添加图片或视频) diff --git a/.github/actions/upload-artifact/action.yml b/.github/actions/upload-artifact/action.yml index 3eaf484..9785859 100644 --- a/.github/actions/upload-artifact/action.yml +++ b/.github/actions/upload-artifact/action.yml @@ -9,32 +9,32 @@ runs: uses: actions/upload-artifact@v4 with: name: app-v${{ env.PACKAGE_VERSION }}-arm64-v8a-release - path: android/app/build/outputs/apk/release/lx-music-mobile-v${{ env.PACKAGE_VERSION }}-arm64-v8a.apk + path: android/app/build/outputs/apk/release/lx-music-mobile-mod-v${{ env.PACKAGE_VERSION }}-arm64-v8a.apk - name: Upload Artifact armeabi-v7a if: env.PACKAGE_TYPE == null uses: actions/upload-artifact@v4 with: name: app-v${{ env.PACKAGE_VERSION }}-armeabi-v7a-release - path: android/app/build/outputs/apk/release/lx-music-mobile-v${{ env.PACKAGE_VERSION }}-armeabi-v7a.apk + path: android/app/build/outputs/apk/release/lx-music-mobile-mod-v${{ env.PACKAGE_VERSION }}-armeabi-v7a.apk - name: Upload Artifact universal if: env.PACKAGE_TYPE != 'Android_SL' uses: actions/upload-artifact@v4 with: name: app-v${{ env.PACKAGE_VERSION }}-universal-release - path: android/app/build/outputs/apk/release/lx-music-mobile-v${{ env.PACKAGE_VERSION }}-universal.apk + path: android/app/build/outputs/apk/release/lx-music-mobile-mod-v${{ env.PACKAGE_VERSION }}-universal.apk - name: Upload Artifact x86_64 if: env.PACKAGE_TYPE == null uses: actions/upload-artifact@v4 with: name: app-v${{ env.PACKAGE_VERSION }}-x86_64-release - path: android/app/build/outputs/apk/release/lx-music-mobile-v${{ env.PACKAGE_VERSION }}-x86_64.apk + path: android/app/build/outputs/apk/release/lx-music-mobile-mod-v${{ env.PACKAGE_VERSION }}-x86_64.apk - name: Upload Artifact x86 if: env.PACKAGE_TYPE == null uses: actions/upload-artifact@v4 with: name: app-v${{ env.PACKAGE_VERSION }}-x86-release - path: android/app/build/outputs/apk/release/lx-music-mobile-v${{ env.PACKAGE_VERSION }}-x86.apk + path: android/app/build/outputs/apk/release/lx-music-mobile-mod-v${{ env.PACKAGE_VERSION }}-x86.apk diff --git a/.github/workflows/beta-pack-all.yml b/.github/workflows/beta-pack-all.yml deleted file mode 100644 index 534bb6e..0000000 --- a/.github/workflows/beta-pack-all.yml +++ /dev/null @@ -1,114 +0,0 @@ -name: Build Beta - -on: - workflow_dispatch: - -jobs: - Android: - name: Android - runs-on: ubuntu-latest - steps: - - name: Check out git repository - uses: actions/checkout@v4 - - - name: Setup Env - uses: ./.github/actions/setup - - - name: Build Packages - shell: bash - run: | - cd android - echo ${{ secrets.KEYSTORE_STORE_FILE_BASE64 }} | base64 --decode > app/${{ secrets.KEYSTORE_STORE_FILE }} - ./gradlew assembleRelease -PMYAPP_UPLOAD_STORE_FILE='${{ secrets.KEYSTORE_STORE_FILE }}' -PMYAPP_UPLOAD_KEY_ALIAS='${{ secrets.KEYSTORE_KEY_ALIAS }}' -PMYAPP_UPLOAD_STORE_PASSWORD='${{ secrets.KEYSTORE_PASSWORD }}' -PMYAPP_UPLOAD_KEY_PASSWORD='${{ secrets.KEYSTORE_KEY_PASSWORD }}' - rm -f app/${{ secrets.KEYSTORE_STORE_FILE }} - - # Push tag to GitHub if package.json version's tag is not tagged - - name: Get package version - run: node -p -e '`PACKAGE_VERSION=${require("./package.json").version}`' >> $GITHUB_ENV - - - name: Generate file MD5 - run: | - cd android/app/build/outputs/apk/release - md5sum *.apk - - - name: Upload Artifact - uses: ./.github/actions/upload-artifact - env: - PACKAGE_VERSION: ${{ env.PACKAGE_VERSION }} - - - Android_SL: - name: Android_SL - runs-on: ubuntu-latest - steps: - - name: Check out git repository - uses: actions/checkout@v4 - with: - ref: statusbar_lyric - - - name: Setup Env - uses: ./.github/actions/setup - - - name: Build Packages - shell: bash - run: | - cd android - echo ${{ secrets.KEYSTORE_STORE_FILE_BASE64 }} | base64 --decode > app/${{ secrets.KEYSTORE_STORE_FILE }} - ./gradlew assembleRelease -PMYAPP_UPLOAD_STORE_FILE='${{ secrets.KEYSTORE_STORE_FILE }}' -PMYAPP_UPLOAD_KEY_ALIAS='${{ secrets.KEYSTORE_KEY_ALIAS }}' -PMYAPP_UPLOAD_STORE_PASSWORD='${{ secrets.KEYSTORE_PASSWORD }}' -PMYAPP_UPLOAD_KEY_PASSWORD='${{ secrets.KEYSTORE_KEY_PASSWORD }}' - rm -f app/${{ secrets.KEYSTORE_STORE_FILE }} - - # Push tag to GitHub if package.json version's tag is not tagged - - name: Get package version - run: | - node -p -e '`PACKAGE_VERSION=${require("./package.json").version}`' >> $GITHUB_ENV - echo "COMMIT_SHA=$(git show -s --format=%H)" >> $GITHUB_ENV - - - name: Generate file MD5 - run: | - echo "current commit sha: ${{ env.COMMIT_SHA }}" - cd android/app/build/outputs/apk/release - md5sum *.apk - - - name: Upload Artifact - uses: ./.github/actions/upload-artifact - env: - PACKAGE_TYPE: 'Android_SL' - PACKAGE_VERSION: ${{ env.PACKAGE_VERSION }} - - # Android_5: - # name: Android_5 - # runs-on: ubuntu-latest - # steps: - # - name: Check out git repository - # uses: actions/checkout@v4 - # with: - # ref: android_5 - - # - name: Setup Env - # uses: ./.github/actions/setup - - # - name: Build Packages - # shell: bash - # run: | - # cd android - # echo ${{ secrets.KEYSTORE_STORE_FILE_BASE64 }} | base64 --decode > app/${{ secrets.KEYSTORE_STORE_FILE }} - # ./gradlew assembleRelease -PMYAPP_UPLOAD_STORE_FILE='${{ secrets.KEYSTORE_STORE_FILE }}' -PMYAPP_UPLOAD_KEY_ALIAS='${{ secrets.KEYSTORE_KEY_ALIAS }}' -PMYAPP_UPLOAD_STORE_PASSWORD='${{ secrets.KEYSTORE_PASSWORD }}' -PMYAPP_UPLOAD_KEY_PASSWORD='${{ secrets.KEYSTORE_KEY_PASSWORD }}' - # rm -f app/${{ secrets.KEYSTORE_STORE_FILE }} - - # # Push tag to GitHub if package.json version's tag is not tagged - # - name: Get package version - # run: | - # node -p -e '`PACKAGE_VERSION=${require("./package.json").version}`' >> $GITHUB_ENV - # echo "COMMIT_SHA=$(git show -s --format=%H)" >> $GITHUB_ENV - - # - name: Generate file MD5 - # run: | - # echo "current commit sha: ${{ env.COMMIT_SHA }}" - # cd android/app/build/outputs/apk/release - # md5sum *.apk - - # - name: Upload Artifact - # uses: ./.github/actions/upload-artifact - # env: - # PACKAGE_TYPE: 'Android_5' - # PACKAGE_VERSION: ${{ env.PACKAGE_VERSION }} diff --git a/.github/workflows/beta-pack.yml b/.github/workflows/beta-pack.yml deleted file mode 100644 index 2f672bf..0000000 --- a/.github/workflows/beta-pack.yml +++ /dev/null @@ -1,39 +0,0 @@ -name: Build Beta - -on: - push: - branches: - - beta - -jobs: - Android: - name: Android - runs-on: ubuntu-latest - steps: - - name: Check out git repository - uses: actions/checkout@v4 - - - name: Setup Env - uses: ./.github/actions/setup - - - name: Build Packages - shell: bash - run: | - cd android - echo ${{ secrets.KEYSTORE_STORE_FILE_BASE64 }} | base64 --decode > app/${{ secrets.KEYSTORE_STORE_FILE }} - ./gradlew assembleRelease -PMYAPP_UPLOAD_STORE_FILE='${{ secrets.KEYSTORE_STORE_FILE }}' -PMYAPP_UPLOAD_KEY_ALIAS='${{ secrets.KEYSTORE_KEY_ALIAS }}' -PMYAPP_UPLOAD_STORE_PASSWORD='${{ secrets.KEYSTORE_PASSWORD }}' -PMYAPP_UPLOAD_KEY_PASSWORD='${{ secrets.KEYSTORE_KEY_PASSWORD }}' - rm -f app/${{ secrets.KEYSTORE_STORE_FILE }} - - # Push tag to GitHub if package.json version's tag is not tagged - - name: Get package version - run: node -p -e '`PACKAGE_VERSION=${require("./package.json").version}`' >> $GITHUB_ENV - - - name: Generate file MD5 - run: | - cd android/app/build/outputs/apk/release - md5sum *.apk - - - name: Upload Artifact - uses: ./.github/actions/upload-artifact - env: - PACKAGE_VERSION: ${{ env.PACKAGE_VERSION }} diff --git a/.github/workflows/build-test.yml b/.github/workflows/build-test.yml deleted file mode 100644 index 0a11130..0000000 --- a/.github/workflows/build-test.yml +++ /dev/null @@ -1,28 +0,0 @@ -name: Run build test - -on: - pull_request: - branches: - - dev - -jobs: - test: - runs-on: ubuntu-latest - - steps: - - name: Check out git repository - uses: actions/checkout@v4 - - - name: Install Node.js - uses: actions/setup-node@v4 - with: - node-version: 20 - - - name: Install Dependencies - run: npm ci - - - name: Eslint check - run: npm run lint - - - name: Test Build - run: npm run build-test diff --git a/.github/workflows/publish-version-info.yml b/.github/workflows/publish-version-info.yml deleted file mode 100644 index 1643272..0000000 --- a/.github/workflows/publish-version-info.yml +++ /dev/null @@ -1,17 +0,0 @@ -name: Publish NPM Version Info - -on: - workflow_dispatch: - release: - types: [published] - -jobs: - dispatch: - runs-on: ubuntu-latest - steps: - - name: Repository Dispatch - uses: peter-evans/repository-dispatch@v2 - with: - token: ${{ secrets.PAT }} - repository: lyswhut/lx-music-mobile-version-info - event-type: npm-release diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 8251b8e..2e2ee88 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -3,7 +3,7 @@ name: Build on: push: branches: - - master + - dev jobs: Android: @@ -47,104 +47,10 @@ jobs: env: PACKAGE_VERSION: ${{ env.PACKAGE_VERSION }} - Android_SL: - name: Android_SL - runs-on: ubuntu-latest - steps: - - name: Check out git repository - uses: actions/checkout@v4 - with: - ref: statusbar_lyric - - - name: Setup Env - uses: ./.github/actions/setup - - - name: Build Packages - shell: bash - run: | - cd android - echo ${{ secrets.KEYSTORE_STORE_FILE_BASE64 }} | base64 --decode > app/${{ secrets.KEYSTORE_STORE_FILE }} - ./gradlew assembleRelease -PMYAPP_UPLOAD_STORE_FILE='${{ secrets.KEYSTORE_STORE_FILE }}' -PMYAPP_UPLOAD_KEY_ALIAS='${{ secrets.KEYSTORE_KEY_ALIAS }}' -PMYAPP_UPLOAD_STORE_PASSWORD='${{ secrets.KEYSTORE_PASSWORD }}' -PMYAPP_UPLOAD_KEY_PASSWORD='${{ secrets.KEYSTORE_KEY_PASSWORD }}' - rm -f app/${{ secrets.KEYSTORE_STORE_FILE }} - - # Push tag to GitHub if package.json version's tag is not tagged - - name: Get package version - run: | - node -p -e '`PACKAGE_VERSION=${require("./package.json").version}`' >> $GITHUB_ENV - echo "COMMIT_SHA=$(git show -s --format=%H)" >> $GITHUB_ENV - - - name: Create git tag - uses: pkgdeps/git-tag-action@v3 - with: - github_token: ${{ secrets.GITHUB_TOKEN }} - github_repo: ${{ github.repository }} - version: ${{ env.PACKAGE_VERSION }} - git_commit_sha: ${{ env.COMMIT_SHA }} - git_tag_prefix: "v" - - - name: Generate file MD5 - run: | - echo "current commit sha: ${{ env.COMMIT_SHA }}" - cd android/app/build/outputs/apk/release - md5sum *.apk - - - name: Upload Artifact - uses: ./.github/actions/upload-artifact - env: - PACKAGE_TYPE: 'Android_SL' - PACKAGE_VERSION: ${{ env.PACKAGE_VERSION }} - - # Android_5: - # name: Android_5 - # runs-on: ubuntu-latest - # steps: - # - name: Check out git repository - # uses: actions/checkout@v4 - # with: - # ref: android_5 - - # - name: Setup Env - # uses: ./.github/actions/setup - - # - name: Build Packages - # shell: bash - # run: | - # cd android - # echo ${{ secrets.KEYSTORE_STORE_FILE_BASE64 }} | base64 --decode > app/${{ secrets.KEYSTORE_STORE_FILE }} - # ./gradlew assembleRelease -PMYAPP_UPLOAD_STORE_FILE='${{ secrets.KEYSTORE_STORE_FILE }}' -PMYAPP_UPLOAD_KEY_ALIAS='${{ secrets.KEYSTORE_KEY_ALIAS }}' -PMYAPP_UPLOAD_STORE_PASSWORD='${{ secrets.KEYSTORE_PASSWORD }}' -PMYAPP_UPLOAD_KEY_PASSWORD='${{ secrets.KEYSTORE_KEY_PASSWORD }}' - # rm -f app/${{ secrets.KEYSTORE_STORE_FILE }} - - # # Push tag to GitHub if package.json version's tag is not tagged - # - name: Get package version - # run: | - # node -p -e '`PACKAGE_VERSION=${require("./package.json").version}`' >> $GITHUB_ENV - # echo "COMMIT_SHA=$(git show -s --format=%H)" >> $GITHUB_ENV - - # - name: Create git tag - # uses: pkgdeps/git-tag-action@v3 - # with: - # github_token: ${{ secrets.GITHUB_TOKEN }} - # github_repo: ${{ github.repository }} - # version: ${{ env.PACKAGE_VERSION }} - # git_commit_sha: ${{ env.COMMIT_SHA }} - # git_tag_prefix: "v" - - # - name: Generate file MD5 - # run: | - # echo "current commit sha: ${{ env.COMMIT_SHA }}" - # cd android/app/build/outputs/apk/release - # md5sum *.apk - - # - name: Upload Artifact - # uses: ./.github/actions/upload-artifact - # env: - # PACKAGE_TYPE: 'Android_5' - # PACKAGE_VERSION: ${{ env.PACKAGE_VERSION }} - Release: name: Release runs-on: ubuntu-latest - needs: [Android, Android_SL] + needs: [Android] steps: - name: Check out git repository uses: actions/checkout@v4 @@ -173,12 +79,11 @@ jobs: draft: false tag_name: v${{ env.PACKAGE_VERSION }} files: | - artifacts/lx-music-mobile-v${{ env.PACKAGE_VERSION }}-arm64-v8a.apk - artifacts/lx-music-mobile-v${{ env.PACKAGE_VERSION }}-armeabi-v7a.apk - artifacts/lx-music-mobile-v${{ env.PACKAGE_VERSION }}-x86_64.apk - artifacts/lx-music-mobile-v${{ env.PACKAGE_VERSION }}-x86.apk - artifacts/lx-music-mobile-v${{ env.PACKAGE_VERSION }}-universal.apk - artifacts/lx-music-mobile-v${{ env.PACKAGE_VERSION }}-sl-arm64-v8a.apk - # artifacts/lx-music-mobile-v${{ env.PACKAGE_VERSION }}-android_5-universal.apk + artifacts/lx-music-mobile-mod-v${{ env.PACKAGE_VERSION }}-arm64-v8a.apk + artifacts/lx-music-mobile-mod-v${{ env.PACKAGE_VERSION }}-armeabi-v7a.apk + artifacts/lx-music-mobile-mod-v${{ env.PACKAGE_VERSION }}-x86_64.apk + artifacts/lx-music-mobile-mod-v${{ env.PACKAGE_VERSION }}-x86.apk + artifacts/lx-music-mobile-mod-v${{ env.PACKAGE_VERSION }}-universal.apk + artifacts/lx-music-mobile-mod-v${{ env.PACKAGE_VERSION }}-sl-arm64-v8a.apk env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} diff --git a/CHANGELOG.md b/CHANGELOG.md index ce7f69c..f4f5b97 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,7 +8,7 @@ Change log format is based on [Keep a Changelog](http://keepachangelog.com/). ## [1.4.2](https://github.com/lyswhut/lx-music-mobile/compare/v1.4.1...v1.4.2) - 2024-06-01 -我们发布了关于 LX Music 项目发展调整与新项目计划的说明, +我们发布了关于 LX Music Mod 项目发展调整与新项目计划的说明, 详情看: https://github.com/lyswhut/lx-music-desktop/issues/1912 ### 修复 @@ -17,7 +17,7 @@ Change log format is based on [Keep a Changelog](http://keepachangelog.com/). ## [1.4.1](https://github.com/lyswhut/lx-music-mobile/compare/v1.4.0...v1.4.1) - 2024-06-01 -我们发布了关于 LX Music 项目发展调整与新项目计划的说明, +我们发布了关于 LX Music Mod 项目发展调整与新项目计划的说明, 详情看: https://github.com/lyswhut/lx-music-desktop/issues/1912 ### 修复 @@ -26,7 +26,7 @@ Change log format is based on [Keep a Changelog](http://keepachangelog.com/). ## [1.4.0](https://github.com/lyswhut/lx-music-mobile/compare/v1.3.0...v1.4.0) - 2024-06-01 -我们发布了关于 LX Music 项目发展调整与新项目计划的说明, +我们发布了关于 LX Music Mod 项目发展调整与新项目计划的说明, 详情看: https://github.com/lyswhut/lx-music-desktop/issues/1912 ### 新增 @@ -148,7 +148,7 @@ Change log format is based on [Keep a Changelog](http://keepachangelog.com/). 目前本项目的原始发布地址只有 **GitHub** 及 **蓝奏网盘** (在设置-关于有说明),其他渠道均为第三方转载发布,可信度请自行鉴别。 -本项目无微信公众号之类的官方账号,也未在小米、华为、vivo等应用商店发布应用,商店内的“LX Music”、“洛雪音乐”相关的应用全部属于假冒应用,谨防被骗。 +本项目无微信公众号之类的官方账号,也未在小米、华为、vivo等应用商店发布应用,商店内的“LX Music Mod”、“洛雪音乐”相关的应用全部属于假冒应用,谨防被骗。 本软件完全无广告且无引流(如需要加群、关注公众号之类才能使用或者升级)的行为,若你使用过程中遇到广告或者引流的信息,则表明你当前运行的软件是第三方修改版。 diff --git a/FAQ.md b/FAQ.md deleted file mode 100644 index 0323305..0000000 --- a/FAQ.md +++ /dev/null @@ -1,115 +0,0 @@ -# lx-music-mobile 常见问题 - -本文档已迁移到: - -在阅读本常见问题后,仍然无法解决你的问题,请提交issue或者加企鹅群`830125506`反馈(无事勿加,入群先看群公告),反馈时请**注明**已阅读常见问题! - -## LX Music中的音乐播放列表机制 - -1. 默认情况下,播放搜索列表、歌单列表、排行榜列表的歌曲时会自动将该歌曲添加到“我的列表”的试听列表后再播放,手动将歌曲添加到试听列表,再去试听列表找到这首歌点播放是等价的 -2. 如果你想要播放多首歌曲,需要使用多选功能(若不知道如何多选请看常见问题)多选后,将歌曲这些歌曲添加到“我的列表”播放,或使用稍后播放功能播放 -3. 第2条适用于搜索列表、歌单列表、排行榜列表、我的列表的歌曲 -4. 对于歌单详情列表,除了可以使用第2条的方式播放外,你可以点击详情页上面的播放按钮临时播放当前歌单,或点击收藏将当前歌单收藏到“我的列表”后再去播放 -5. 对于排行榜详情列表,除了可以使用第2条的方式播放外,你可以在长按排行榜名字后弹出的菜单中,播放或收藏整个排行榜,这与第四条的歌单中的播放、与收藏按钮功能一致 -6. v0.11.0及之后新增了“双击列表里的歌曲时自动切换到当前列表播放”设置,默认关闭,此功能仅对歌单、排行榜有效 -7. 将歌曲添加“稍后播放”后,它们会被放在一个优先级最高的特殊队列中,点击“下一曲”时会消耗该队列中的歌曲,并且无法通过“上一曲”功能播放该队列的上一首歌曲 -8. 在切歌时若不是通过“上一曲”、“下一曲”功能切歌(例如直接点击“排行榜列表”、“我的列表”中的歌曲切歌),“稍后播放”队列将会被清空 - -## 歌曲无法试听与下载 - -### 所有歌曲都提示 `请求异常😮,可以多试几次,若还是不行就换一首吧。。。` - -尝试更换网络,如切换到移动网络,若移动网络还是不行则尝试开关下手机的飞行模式后再试,
-若使用家庭网络的话,可尝试将光猫断电5分钟左右再通电联网后播放。 - -### 其他情况 - -尝试在在浏览器打开这个地址`http://ts.tempmusics.tk`,浏览器显示404是正常的,如果不是404那就证明所在网络无法访问接口服务器,对于此类情况请尝试切换其他网络。 - -### 通用解决方法 - -尝试按以下顺序解决: - -1. 尝试更新到最新版本 -2. 尝试切换其他歌曲(或直接搜索该歌曲),若全部歌曲都无法试听与下载则进行下一步 -3. 尝试到 设置-音乐来源 切换到其他接口 -4. 尝试切换网络,比如用手机开热点(所有歌曲都提示请求异常时可通过此方法解决,或等一两天后再试) -5. 若还不行请到这个链接查看详情: -6. 若没有在第5条链接中的第一条评论中看到接口无法使用的说明,则应该是你网络无法访问接口服务器的问题,如果接口有问题我会在那里说明。 - -想要知道是不是自己网络的问题可以看看`http://ts.tempmusics.tk`能不能在浏览器打开,浏览器显示404是正常的,如果不是404那就证明所在网络无法访问接口服务器。 -若网页无法打开或打来不是404,则应该是DNS的问题,可以尝试以下办法: - -1. 将DNS改成自动获取试试 -2. 手动把DNS改一下,不要用360的DNS,可以把DNS改成`223.6.6.6`、`8.8.8.8` - -## 列表多选 - -长按列表将会进入多选模式。 - -- 例子一:想要选中1-5项,进入多选模式后,取消所有选中的内容,切换到区间,点击第一项,再点击第五项即可完成选择; -- 例子二:想要选中1项与第3项,进入多选模式后,点击第一项,再点击第三项即可完成选择; -- 例子三:想要选中当前列表的全部内容,进入多选模式后,点击全选即可完成选择(注:由于**在线列表**使用分页加载,全选只会选择目前已加载的内容,若要完整选择整个在线列表的内容则需要往下滑动将列表加载完毕再进行全选)。 - -注:选完后可用歌曲列表三个点的菜单操作已选的内容 - -## 无法打开外部歌单 - -不支持垮源打开歌单,请**确认**你需要打开的歌单平台是否与软件标签所写的**歌单源**对应(不一样的话请通过右上角切换歌单源);
-对于分享出来的歌单,若打开失败,可尝试先在浏览器中打开后,再从浏览器地址栏复制URL地址到软件打开;
-或者如果你知道歌单 id 也可以直接输入歌单 id 打开。
- -注:网易源的“我喜欢”歌单无法在未登录的情况下打开,所以你需要手动创建一个歌单后将“我喜欢”里的歌曲移动到该歌单打开 - -## 播放整个歌单或排行榜 - -播放在线列表内的歌曲需要将它们都添加到我的列表才能播放,你可以全选列表内的歌曲然后添加到现有列表或者新创建的列表,然后去播放该列表内的歌曲。 - -## 桌面歌词启用后不显示 - -安卓6及更高的版本需要给予LX Music显示悬浮窗的权限才能使用桌面歌词功能,请确认是否授予此权限(不懂怎么授予的话请自行百度“开启悬浮窗权限”)。 - -## 下载功能 - -移动端暂不支持歌曲下载功能。 - -## 同步功能的使用(实验性,首次使用前建议先备份一次列表) - -**注意:由于同步传输时的数据是明文传输,请在受信任的网络下使用此功能!**
-此功能需要配合PC端使用,移动端与PC端处在同一个局域网(路由器的网络)下时,可以多端实时同步歌曲列表,使用方法: - -1. 在PC端的设置-数据同步开启同步功能(这时如果出现安全软件、防火墙等提示网络连接弹窗时需要点击允许) -2. 在移动端的设置-同步-同步服务器地址输入PC端显示的同步服务器地址(如果显示可以多个,则输入与**移动端上显示的本机地址**最相似的那个),端口号与PC端的同步端口一致(**输入完毕后需要按一下键盘上的回车键使输入的内容生效**) -3. 输入完这两项后点击“启动同步” -4. 若连接成功,对于首次同步时,若两边的设备的列表不为空,则PC端会弹出选择列表同步方式的弹窗,同步方式的说明弹窗下面有介绍 - -#### 关于同步弹窗的说明 - -对于首次同步时,若两边的设备的列表不为空,则PC端会弹出选择列表同步方式的弹窗,此弹窗内的同步方式仅针对**首次同步**,
-第一次同步成功后,以后再同步时将会自动根据两边设备的列表内容合并同步,不信你可以在同步完成后断开两边的连接,然后在两边增删一些歌曲或列表后再同步试试看~😉 - -#### 连接同步服务失败的可能原因 - -- 此功能需要PC端与移动端都连接在同一个路由器下的网络才能使用 -- 检查防火墙是否拦截了PC端的服务端口 -- 路由器若开启了AP隔离,则此功能无法使用 - -#### 连接同步服务失败的检查 - -1. 确保PC端的同步服务已启用成功(若连接码、同步服务地址没有内容,则证明服务启动失败,此时看启用同步功能复选框后面的错误信息自行解决,另外若你不知道端口号是什么意思就不要乱改,或不要改得太大与太小) -2. 在手机浏览器地址栏输入`http://x.x.x.x:23332/hello` **(注:将`x.x.x.x`换成PC端显示的同步服务地址,`23332`为PC端的端口号)** 后回车,若此地址可以打开并显示 `Hello~::^-^::`则证明移动端与PC端网络已互通, -3. 若移动端无法打开第2步的地址,则在PC端的浏览器地址栏输入并打开该地址,若可以打开,则要么是被LX Music PC端被电脑防火墙拦截,要么PC端与移动端不在同一个网络下,或者路由器开启了AP隔离(一般在公共网络下会出现这种情况) - -## 更新已收藏的在线歌单 - -该功能仅对直接从歌单详情页点“收藏”按钮收藏的歌单有效,可右击已收藏的列表名从弹出的菜单中选择“更新”使用该功能, - -需要注意的是:这将会覆盖本地的目标列表,歌曲将被替换成最新的在线列表。 - -## 杀毒软件提示有病毒或恶意行为 - -本人只能保证我写的代码不包含任何**恶意代码**、**收集用户信息**的行为,并且软件代码已开源,请自行查阅,软件安装包也是由CI拉取源代码构建,构建日志:[GitHub Actions](https://github.com/lyswhut/lx-music-mobile/actions)
-尽管如此,但这不意味着软件是100%安全的,由于软件使用了第三方依赖,当这些依赖存在恶意行为时([供应链攻击](https://docs.microsoft.com/zh-cn/windows/security/threat-protection/intelligence/supply-chain-malware)),软件也将会受到牵连,所以我只能尽量选择使用较多人用、信任度较高的依赖。
-当然,以上说明建立的前提是在你所用的安装包是从**本项目主页上写的链接**下载的,或者有相关能力者还可以下载源代码自己构建安装包。 - -最后,若出现杀毒软件报毒、存在恶意行为,请自行判断选择是否继续使用本软件! diff --git a/android/app/build.gradle b/android/app/build.gradle index 06c47e1..1101713 100644 --- a/android/app/build.gradle +++ b/android/app/build.gradle @@ -108,9 +108,9 @@ android { buildToolsVersion rootProject.ext.buildToolsVersion compileSdk rootProject.ext.compileSdkVersion - namespace "cn.toside.music.mobile" + namespace "com.ikunshare.music.mobile" defaultConfig { - applicationId "cn.toside.music.mobile" + applicationId "com.ikunshare.music.mobile" minSdkVersion rootProject.ext.minSdkVersion targetSdkVersion rootProject.ext.targetSdkVersion versionCode verCode diff --git a/android/app/src/main/AndroidManifest.xml b/android/app/src/main/AndroidManifest.xml index cf9b8a1..4cb022d 100644 --- a/android/app/src/main/AndroidManifest.xml +++ b/android/app/src/main/AndroidManifest.xml @@ -1,6 +1,6 @@ + package="com.ikunshare.music.mobile"> diff --git a/android/app/src/main/java/cn/toside/music/mobile/MainActivity.java b/android/app/src/main/java/cn/toside/music/mobile/MainActivity.java index a7e3237..52d6830 100644 --- a/android/app/src/main/java/cn/toside/music/mobile/MainActivity.java +++ b/android/app/src/main/java/cn/toside/music/mobile/MainActivity.java @@ -1,4 +1,4 @@ -package cn.toside.music.mobile; +package com.ikunshare.music.mobile; import com.reactnativenavigation.NavigationActivity; import com.facebook.react.ReactActivityDelegate; diff --git a/android/app/src/main/java/cn/toside/music/mobile/MainApplication.java b/android/app/src/main/java/cn/toside/music/mobile/MainApplication.java index f1bf7e4..106dd34 100644 --- a/android/app/src/main/java/cn/toside/music/mobile/MainApplication.java +++ b/android/app/src/main/java/cn/toside/music/mobile/MainApplication.java @@ -1,4 +1,4 @@ -package cn.toside.music.mobile; +package com.ikunshare.music.mobile; import com.facebook.react.PackageList; import com.facebook.react.flipper.ReactNativeFlipper; @@ -9,11 +9,11 @@ import com.facebook.react.defaults.DefaultNewArchitectureEntryPoint; import com.reactnativenavigation.react.NavigationReactNativeHost; import java.util.List; -import cn.toside.music.mobile.cache.CachePackage; -import cn.toside.music.mobile.crypto.CryptoPackage; -import cn.toside.music.mobile.lyric.LyricPackage; -import cn.toside.music.mobile.userApi.UserApiPackage; -import cn.toside.music.mobile.utils.UtilsPackage; +import com.ikunshare.music.mobile.cache.CachePackage; +import com.ikunshare.music.mobile.crypto.CryptoPackage; +import com.ikunshare.music.mobile.lyric.LyricPackage; +import com.ikunshare.music.mobile.userApi.UserApiPackage; +import com.ikunshare.music.mobile.utils.UtilsPackage; public class MainApplication extends NavigationApplication { diff --git a/android/app/src/main/java/cn/toside/music/mobile/cache/CacheClearAsyncTask.java b/android/app/src/main/java/cn/toside/music/mobile/cache/CacheClearAsyncTask.java index acd491f..07900a4 100644 --- a/android/app/src/main/java/cn/toside/music/mobile/cache/CacheClearAsyncTask.java +++ b/android/app/src/main/java/cn/toside/music/mobile/cache/CacheClearAsyncTask.java @@ -1,4 +1,4 @@ -package cn.toside.music.mobile.cache; +package com.ikunshare.music.mobile.cache; import android.os.AsyncTask; diff --git a/android/app/src/main/java/cn/toside/music/mobile/cache/CacheModule.java b/android/app/src/main/java/cn/toside/music/mobile/cache/CacheModule.java index a8ad4b2..d060fc4 100644 --- a/android/app/src/main/java/cn/toside/music/mobile/cache/CacheModule.java +++ b/android/app/src/main/java/cn/toside/music/mobile/cache/CacheModule.java @@ -1,4 +1,4 @@ -package cn.toside.music.mobile.cache; +package com.ikunshare.music.mobile.cache; import com.facebook.react.bridge.Promise; import com.facebook.react.bridge.ReactApplicationContext; @@ -7,9 +7,9 @@ import com.facebook.react.bridge.ReactMethod; import java.io.File; -import static cn.toside.music.mobile.cache.Utils.clearCacheFolder; -import static cn.toside.music.mobile.cache.Utils.getDirSize; -import static cn.toside.music.mobile.cache.Utils.isMethodsCompat; +import static com.ikunshare.music.mobile.cache.Utils.clearCacheFolder; +import static com.ikunshare.music.mobile.cache.Utils.getDirSize; +import static com.ikunshare.music.mobile.cache.Utils.isMethodsCompat; // https://github.com/midas-gufei/react-native-clear-app-cache/tree/master/android/src/main/java/com/learnta/clear public class CacheModule extends ReactContextBaseJavaModule { diff --git a/android/app/src/main/java/cn/toside/music/mobile/cache/CachePackage.java b/android/app/src/main/java/cn/toside/music/mobile/cache/CachePackage.java index 98513e7..de21e4b 100644 --- a/android/app/src/main/java/cn/toside/music/mobile/cache/CachePackage.java +++ b/android/app/src/main/java/cn/toside/music/mobile/cache/CachePackage.java @@ -1,4 +1,4 @@ -package cn.toside.music.mobile.cache; +package com.ikunshare.music.mobile.cache; import com.facebook.react.ReactPackage; import com.facebook.react.bridge.NativeModule; diff --git a/android/app/src/main/java/cn/toside/music/mobile/cache/Utils.java b/android/app/src/main/java/cn/toside/music/mobile/cache/Utils.java index a2167d8..5617384 100644 --- a/android/app/src/main/java/cn/toside/music/mobile/cache/Utils.java +++ b/android/app/src/main/java/cn/toside/music/mobile/cache/Utils.java @@ -1,4 +1,4 @@ -package cn.toside.music.mobile.cache; +package com.ikunshare.music.mobile.cache; import android.content.Context; diff --git a/android/app/src/main/java/cn/toside/music/mobile/crypto/AES.java b/android/app/src/main/java/cn/toside/music/mobile/crypto/AES.java index bfd8f56..39acf73 100644 --- a/android/app/src/main/java/cn/toside/music/mobile/crypto/AES.java +++ b/android/app/src/main/java/cn/toside/music/mobile/crypto/AES.java @@ -1,4 +1,4 @@ -package cn.toside.music.mobile.crypto; +package com.ikunshare.music.mobile.crypto; import android.util.Base64; diff --git a/android/app/src/main/java/cn/toside/music/mobile/crypto/CryptoModule.java b/android/app/src/main/java/cn/toside/music/mobile/crypto/CryptoModule.java index 83b6649..587a4f9 100644 --- a/android/app/src/main/java/cn/toside/music/mobile/crypto/CryptoModule.java +++ b/android/app/src/main/java/cn/toside/music/mobile/crypto/CryptoModule.java @@ -1,4 +1,4 @@ -package cn.toside.music.mobile.crypto; +package com.ikunshare.music.mobile.crypto; import android.util.Base64; diff --git a/android/app/src/main/java/cn/toside/music/mobile/crypto/CryptoPackage.java b/android/app/src/main/java/cn/toside/music/mobile/crypto/CryptoPackage.java index b12ff97..74372fa 100644 --- a/android/app/src/main/java/cn/toside/music/mobile/crypto/CryptoPackage.java +++ b/android/app/src/main/java/cn/toside/music/mobile/crypto/CryptoPackage.java @@ -1,4 +1,4 @@ -package cn.toside.music.mobile.crypto; +package com.ikunshare.music.mobile.crypto; import com.facebook.react.ReactPackage; import com.facebook.react.bridge.NativeModule; diff --git a/android/app/src/main/java/cn/toside/music/mobile/crypto/RSA.java b/android/app/src/main/java/cn/toside/music/mobile/crypto/RSA.java index 4bb8f6f..82f1749 100644 --- a/android/app/src/main/java/cn/toside/music/mobile/crypto/RSA.java +++ b/android/app/src/main/java/cn/toside/music/mobile/crypto/RSA.java @@ -1,4 +1,4 @@ -package cn.toside.music.mobile.crypto; +package com.ikunshare.music.mobile.crypto; import android.util.Base64; diff --git a/android/app/src/main/java/cn/toside/music/mobile/lyric/Lyric.java b/android/app/src/main/java/cn/toside/music/mobile/lyric/Lyric.java index f93fd84..5588f53 100644 --- a/android/app/src/main/java/cn/toside/music/mobile/lyric/Lyric.java +++ b/android/app/src/main/java/cn/toside/music/mobile/lyric/Lyric.java @@ -1,4 +1,4 @@ -package cn.toside.music.mobile.lyric; +package com.ikunshare.music.mobile.lyric; import android.content.BroadcastReceiver; import android.content.Context; @@ -21,7 +21,7 @@ public class Lyric extends LyricPlayer { ReactApplicationContext reactAppContext; boolean isShowLyric = false; - // String lastText = "LX Music ^-^"; + // String lastText = "LX Music Mod ^-^"; int lastLine = 0; List lines = new ArrayList(); boolean isShowTranslation; diff --git a/android/app/src/main/java/cn/toside/music/mobile/lyric/LyricEvent.java b/android/app/src/main/java/cn/toside/music/mobile/lyric/LyricEvent.java index 3e0624b..7f56144 100644 --- a/android/app/src/main/java/cn/toside/music/mobile/lyric/LyricEvent.java +++ b/android/app/src/main/java/cn/toside/music/mobile/lyric/LyricEvent.java @@ -1,4 +1,4 @@ -package cn.toside.music.mobile.lyric; +package com.ikunshare.music.mobile.lyric; import android.util.Log; diff --git a/android/app/src/main/java/cn/toside/music/mobile/lyric/LyricModule.java b/android/app/src/main/java/cn/toside/music/mobile/lyric/LyricModule.java index 05a29b0..8727684 100644 --- a/android/app/src/main/java/cn/toside/music/mobile/lyric/LyricModule.java +++ b/android/app/src/main/java/cn/toside/music/mobile/lyric/LyricModule.java @@ -1,4 +1,4 @@ -package cn.toside.music.mobile.lyric; +package com.ikunshare.music.mobile.lyric; import android.content.Intent; import android.net.Uri; diff --git a/android/app/src/main/java/cn/toside/music/mobile/lyric/LyricPackage.java b/android/app/src/main/java/cn/toside/music/mobile/lyric/LyricPackage.java index fe399a4..95de2a7 100644 --- a/android/app/src/main/java/cn/toside/music/mobile/lyric/LyricPackage.java +++ b/android/app/src/main/java/cn/toside/music/mobile/lyric/LyricPackage.java @@ -1,4 +1,4 @@ -package cn.toside.music.mobile.lyric; +package com.ikunshare.music.mobile.lyric; import com.facebook.react.ReactPackage; import com.facebook.react.bridge.NativeModule; diff --git a/android/app/src/main/java/cn/toside/music/mobile/lyric/LyricPlayer.java b/android/app/src/main/java/cn/toside/music/mobile/lyric/LyricPlayer.java index c5e0785..dbd5ac9 100644 --- a/android/app/src/main/java/cn/toside/music/mobile/lyric/LyricPlayer.java +++ b/android/app/src/main/java/cn/toside/music/mobile/lyric/LyricPlayer.java @@ -1,4 +1,4 @@ -package cn.toside.music.mobile.lyric; +package com.ikunshare.music.mobile.lyric; import java.util.ArrayList; import java.util.Collections; diff --git a/android/app/src/main/java/cn/toside/music/mobile/lyric/LyricSwitchView.java b/android/app/src/main/java/cn/toside/music/mobile/lyric/LyricSwitchView.java index 3678963..abff4f2 100644 --- a/android/app/src/main/java/cn/toside/music/mobile/lyric/LyricSwitchView.java +++ b/android/app/src/main/java/cn/toside/music/mobile/lyric/LyricSwitchView.java @@ -1,4 +1,4 @@ -package cn.toside.music.mobile.lyric; +package com.ikunshare.music.mobile.lyric; import android.annotation.SuppressLint; import android.content.Context; diff --git a/android/app/src/main/java/cn/toside/music/mobile/lyric/LyricTextView.java b/android/app/src/main/java/cn/toside/music/mobile/lyric/LyricTextView.java index f3c6392..986adb4 100644 --- a/android/app/src/main/java/cn/toside/music/mobile/lyric/LyricTextView.java +++ b/android/app/src/main/java/cn/toside/music/mobile/lyric/LyricTextView.java @@ -1,4 +1,4 @@ -package cn.toside.music.mobile.lyric; +package com.ikunshare.music.mobile.lyric; import android.annotation.SuppressLint; import android.content.Context; diff --git a/android/app/src/main/java/cn/toside/music/mobile/lyric/LyricView.java b/android/app/src/main/java/cn/toside/music/mobile/lyric/LyricView.java index 32c9999..7b42460 100644 --- a/android/app/src/main/java/cn/toside/music/mobile/lyric/LyricView.java +++ b/android/app/src/main/java/cn/toside/music/mobile/lyric/LyricView.java @@ -1,4 +1,4 @@ -package cn.toside.music.mobile.lyric; +package com.ikunshare.music.mobile.lyric; import android.app.Activity; import android.content.Context; @@ -26,7 +26,7 @@ import java.util.ArrayList; import java.util.regex.Matcher; import java.util.regex.Pattern; -import cn.toside.music.mobile.R; +import com.ikunshare.music.mobile.R; public class LyricView extends Activity implements View.OnTouchListener { LyricSwitchView textView = null; @@ -56,7 +56,7 @@ public class LyricView extends Activity implements View.OnTouchListener { private String unplayColor = "rgba(255, 255, 255, 1)"; private String playedColor = "rgba(7, 197, 86, 1)"; private String shadowColor = "rgba(0, 0, 0, 0.15)"; - // private String lastText = "LX Music ^-^"; + // private String lastText = "LX Music Mod ^-^"; private String textX = "LEFT"; private String textY = "TOP"; private float alpha = 1f; @@ -66,7 +66,7 @@ public class LyricView extends Activity implements View.OnTouchListener { private int maxLineNum = 5; // private float lineHeight = 1; - private String currentLyric = "LX Music ^-^"; + private String currentLyric = "LX Music Mod ^-^"; private ArrayList currentExtendedLyrics = new ArrayList<>(); private int mLastRotation; diff --git a/android/app/src/main/java/cn/toside/music/mobile/lyric/Utils.java b/android/app/src/main/java/cn/toside/music/mobile/lyric/Utils.java index 6a89a97..7c9a986 100644 --- a/android/app/src/main/java/cn/toside/music/mobile/lyric/Utils.java +++ b/android/app/src/main/java/cn/toside/music/mobile/lyric/Utils.java @@ -1,4 +1,4 @@ -package cn.toside.music.mobile.lyric; +package com.ikunshare.music.mobile.lyric; import android.os.Handler; diff --git a/android/app/src/main/java/cn/toside/music/mobile/userApi/Console.java b/android/app/src/main/java/cn/toside/music/mobile/userApi/Console.java index 25bc9b3..f9da050 100644 --- a/android/app/src/main/java/cn/toside/music/mobile/userApi/Console.java +++ b/android/app/src/main/java/cn/toside/music/mobile/userApi/Console.java @@ -1,4 +1,4 @@ -package cn.toside.music.mobile.userApi; +package com.ikunshare.music.mobile.userApi; import android.os.Handler; import android.os.Message; diff --git a/android/app/src/main/java/cn/toside/music/mobile/userApi/HandlerWhat.java b/android/app/src/main/java/cn/toside/music/mobile/userApi/HandlerWhat.java index 4ec91d0..96289c5 100644 --- a/android/app/src/main/java/cn/toside/music/mobile/userApi/HandlerWhat.java +++ b/android/app/src/main/java/cn/toside/music/mobile/userApi/HandlerWhat.java @@ -1,4 +1,4 @@ -package cn.toside.music.mobile.userApi; +package com.ikunshare.music.mobile.userApi; public class HandlerWhat { public static final int ACTION = 1000; diff --git a/android/app/src/main/java/cn/toside/music/mobile/userApi/JavaScriptThread.java b/android/app/src/main/java/cn/toside/music/mobile/userApi/JavaScriptThread.java index acf08e6..96c5ba1 100644 --- a/android/app/src/main/java/cn/toside/music/mobile/userApi/JavaScriptThread.java +++ b/android/app/src/main/java/cn/toside/music/mobile/userApi/JavaScriptThread.java @@ -1,4 +1,4 @@ -package cn.toside.music.mobile.userApi; +package com.ikunshare.music.mobile.userApi; import android.os.Bundle; import android.os.Handler; diff --git a/android/app/src/main/java/cn/toside/music/mobile/userApi/JsHandler.java b/android/app/src/main/java/cn/toside/music/mobile/userApi/JsHandler.java index 821e36f..215c339 100644 --- a/android/app/src/main/java/cn/toside/music/mobile/userApi/JsHandler.java +++ b/android/app/src/main/java/cn/toside/music/mobile/userApi/JsHandler.java @@ -1,4 +1,4 @@ -package cn.toside.music.mobile.userApi; +package com.ikunshare.music.mobile.userApi; import android.os.Handler; import android.os.Looper; diff --git a/android/app/src/main/java/cn/toside/music/mobile/userApi/QuickJS.java b/android/app/src/main/java/cn/toside/music/mobile/userApi/QuickJS.java index 416c906..d101ccc 100644 --- a/android/app/src/main/java/cn/toside/music/mobile/userApi/QuickJS.java +++ b/android/app/src/main/java/cn/toside/music/mobile/userApi/QuickJS.java @@ -1,12 +1,12 @@ -package cn.toside.music.mobile.userApi; +package com.ikunshare.music.mobile.userApi; import android.os.Bundle; import android.os.Handler; import android.os.Message; import android.util.Base64; import android.util.Log; -import cn.toside.music.mobile.crypto.AES; -import cn.toside.music.mobile.crypto.RSA; +import com.ikunshare.music.mobile.crypto.AES; +import com.ikunshare.music.mobile.crypto.RSA; import com.facebook.react.bridge.ReactApplicationContext; import com.whl.quickjs.android.QuickJSLoader; diff --git a/android/app/src/main/java/cn/toside/music/mobile/userApi/UserApiModule.java b/android/app/src/main/java/cn/toside/music/mobile/userApi/UserApiModule.java index 9fbc154..0efcf39 100644 --- a/android/app/src/main/java/cn/toside/music/mobile/userApi/UserApiModule.java +++ b/android/app/src/main/java/cn/toside/music/mobile/userApi/UserApiModule.java @@ -1,4 +1,4 @@ -package cn.toside.music.mobile.userApi; +package com.ikunshare.music.mobile.userApi; import android.os.Bundle; import android.os.Handler; diff --git a/android/app/src/main/java/cn/toside/music/mobile/userApi/UserApiPackage.java b/android/app/src/main/java/cn/toside/music/mobile/userApi/UserApiPackage.java index 3944092..101fe4b 100644 --- a/android/app/src/main/java/cn/toside/music/mobile/userApi/UserApiPackage.java +++ b/android/app/src/main/java/cn/toside/music/mobile/userApi/UserApiPackage.java @@ -1,4 +1,4 @@ -package cn.toside.music.mobile.userApi; +package com.ikunshare.music.mobile.userApi; import com.facebook.react.ReactPackage; import com.facebook.react.bridge.NativeModule; diff --git a/android/app/src/main/java/cn/toside/music/mobile/userApi/UtilsEvent.java b/android/app/src/main/java/cn/toside/music/mobile/userApi/UtilsEvent.java index cfa3558..ac90d8a 100644 --- a/android/app/src/main/java/cn/toside/music/mobile/userApi/UtilsEvent.java +++ b/android/app/src/main/java/cn/toside/music/mobile/userApi/UtilsEvent.java @@ -1,4 +1,4 @@ -package cn.toside.music.mobile.userApi; +package com.ikunshare.music.mobile.userApi; import android.util.Log; diff --git a/android/app/src/main/java/cn/toside/music/mobile/utils/AsyncTask.java b/android/app/src/main/java/cn/toside/music/mobile/utils/AsyncTask.java index 53471a1..fa23483 100644 --- a/android/app/src/main/java/cn/toside/music/mobile/utils/AsyncTask.java +++ b/android/app/src/main/java/cn/toside/music/mobile/utils/AsyncTask.java @@ -1,4 +1,4 @@ -package cn.toside.music.mobile.utils; +package com.ikunshare.music.mobile.utils; import android.os.Handler; import android.os.Looper; diff --git a/android/app/src/main/java/cn/toside/music/mobile/utils/BatteryOptimizationUtil.java b/android/app/src/main/java/cn/toside/music/mobile/utils/BatteryOptimizationUtil.java index 2971be7..29b6509 100644 --- a/android/app/src/main/java/cn/toside/music/mobile/utils/BatteryOptimizationUtil.java +++ b/android/app/src/main/java/cn/toside/music/mobile/utils/BatteryOptimizationUtil.java @@ -1,4 +1,4 @@ -package cn.toside.music.mobile.utils; +package com.ikunshare.music.mobile.utils; import static android.content.Context.POWER_SERVICE; diff --git a/android/app/src/main/java/cn/toside/music/mobile/utils/Utils.java b/android/app/src/main/java/cn/toside/music/mobile/utils/Utils.java index 14c8c10..a91c9c4 100644 --- a/android/app/src/main/java/cn/toside/music/mobile/utils/Utils.java +++ b/android/app/src/main/java/cn/toside/music/mobile/utils/Utils.java @@ -1,4 +1,4 @@ -package cn.toside.music.mobile.utils; +package com.ikunshare.music.mobile.utils; import android.content.Context; diff --git a/android/app/src/main/java/cn/toside/music/mobile/utils/UtilsEvent.java b/android/app/src/main/java/cn/toside/music/mobile/utils/UtilsEvent.java index 3cede34..a8daa9d 100644 --- a/android/app/src/main/java/cn/toside/music/mobile/utils/UtilsEvent.java +++ b/android/app/src/main/java/cn/toside/music/mobile/utils/UtilsEvent.java @@ -1,4 +1,4 @@ -package cn.toside.music.mobile.utils; +package com.ikunshare.music.mobile.utils; import android.util.Log; diff --git a/android/app/src/main/java/cn/toside/music/mobile/utils/UtilsModule.java b/android/app/src/main/java/cn/toside/music/mobile/utils/UtilsModule.java index 5b79183..47f2dcf 100644 --- a/android/app/src/main/java/cn/toside/music/mobile/utils/UtilsModule.java +++ b/android/app/src/main/java/cn/toside/music/mobile/utils/UtilsModule.java @@ -1,4 +1,4 @@ -package cn.toside.music.mobile.utils; +package com.ikunshare.music.mobile.utils; import android.annotation.SuppressLint; import android.app.Activity; diff --git a/android/app/src/main/java/cn/toside/music/mobile/utils/UtilsPackage.java b/android/app/src/main/java/cn/toside/music/mobile/utils/UtilsPackage.java index 9080025..4e08252 100644 --- a/android/app/src/main/java/cn/toside/music/mobile/utils/UtilsPackage.java +++ b/android/app/src/main/java/cn/toside/music/mobile/utils/UtilsPackage.java @@ -1,4 +1,4 @@ -package cn.toside.music.mobile.utils; +package com.ikunshare.music.mobile.utils; import com.facebook.react.ReactPackage; import com.facebook.react.bridge.NativeModule; diff --git a/android/app/src/main/res/values/strings.xml b/android/app/src/main/res/values/strings.xml index b80075c..8596cea 100644 --- a/android/app/src/main/res/values/strings.xml +++ b/android/app/src/main/res/values/strings.xml @@ -1,3 +1,3 @@ - LX Music + LX Music Mod diff --git a/android/app/src/release/java/cn/toside/music/ReactNativeFlipper.java b/android/app/src/release/java/cn/toside/music/ReactNativeFlipper.java index b72338d..251e52f 100644 --- a/android/app/src/release/java/cn/toside/music/ReactNativeFlipper.java +++ b/android/app/src/release/java/cn/toside/music/ReactNativeFlipper.java @@ -4,7 +4,7 @@ *

This source code is licensed under the MIT license found in the LICENSE file in the root * directory of this source tree. */ -package cn.toside.music.mobile; +package com.ikunshare.music.mobile; import android.content.Context; import com.facebook.react.ReactInstanceManager; diff --git a/android/settings.gradle b/android/settings.gradle index a22dd95..a0d1164 100644 --- a/android/settings.gradle +++ b/android/settings.gradle @@ -1,4 +1,4 @@ -rootProject.name = 'cn.toside.music.mobile' +rootProject.name = 'com.ikunshare.music.mobile' apply from: file("../node_modules/@react-native-community/cli-platform-android/native_modules.gradle"); applyNativeModulesSettingsGradle(settings) include ':app' includeBuild('../node_modules/@react-native/gradle-plugin') diff --git a/app.json b/app.json index 40a9a4a..373143f 100644 --- a/app.json +++ b/app.json @@ -1,4 +1,4 @@ { - "name": "LX Music", + "name": "LX Music Mod", "displayName": "洛雪音乐助手" } diff --git a/doc/images/icon.png b/doc/images/icon.png deleted file mode 100644 index 67a7f8ef6b1e4f7ea51957f2c901865d1c32855e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6856 zcmV;(8aL&MP) zd2l3GeaF9VdJfG<8m*35?IEr9zSpF$?$y_%ub>KV;QGwRo) z->0gpXC#gKP0#zx@7<5xci(-OB`nX&^8Jn=$_>x+|MUHB8r~ukYM1d@0gnk{zTl=j zX_g`LnA!Yn&VpDoJF_|G620lOFV0rx%NoFcy1IL9MJlrxUXvK!UAuO*wzs$c zZ73A_AY-i9PDg?$JDhVh9*_U5qod6xs=rOAenn z*VNPmzVL-Fe6zm3{?imS2)Do(^Ho<@-_YLPzVzV1gRi7gDZ5U?X`P7XZ+^Qb-D&lX zd+xdCpR22@KSnu&a3eJ}H6Op{o_p@MR2LLeW78B5JT@&&Iitw#-Mc?2EqR3XRtx;rJ)9&`| z+jld@swj65l>lQb)ZX6yIZHk_OJXon1ToH{pCc3s-9|Zss3b(5-oAZ%B*zGlDG>yD z1|)h!Cm>@?q1-`K5~5|Ry}kXGe4{|@M&3>nMD&nT&LAq0a5%gp&p1Nc4nFI^Lyynr z+d#R4s6_mJ{|1}ExKrvNcF_aopDBv6m~sbEiHLE7x$?a@yrv((?hh^$)o9>hvGk>) z_-Wq(9F27$s>h*Ej*IiagDO^qMsF=z1C7{Ny#$xkv>@!O5;xjSZ?Pg^jMe0rqG4b+ z+&y1JA!b0;H9UCsB^-{Q0=F6BqeDlW#}QA*aW>tH*P};)UNMfxhdQOkkY-!;a$FH^ zBWdOjyZKAT<3gs~5(P4pj^it*oR2;_)VVb@5xVU-+Zfe|wdS8fy znIj}f3HYDB{Zgbu2-B?&pnG%xzaBk+YF3R6!KJvVVKX*VHo61eqhh89r&-oGTj>n82}#P8{p* zgugq0^;OGoOXF5-tZpV*@<4*jk<-Zm*QGgy3A~j&jknI7MimR<(oh?2k6ePLKrI!+ zERY~`WK>PKI{itWz`odV?2G*Y5oHl>sN0D5H*GPRk40oz=#U_Dgmdfam2QQjUmM0x zhW6p9q5Zfh*oHe6UykOg@PdviBnUAL6=@tuoWQ|%PhzRJ2_I>?43~ym7i3+91R-)F z8XwN9{rLBuXHnM|#%=W%r&<2;HV z^uK_woPHW-V?)q1O)MB)F*lV2AxeU%%zv%xDSWTLX-?K9REP_1a_Z% z0>2wRQxU~35`-u@NhI<8{ul6XoqG_QNV+9XMyJ|?FLgeJ?%1$V z7E+8QyDkYU9BnTl5U3x#B?0r+Jq8154NX1L3<2X6gZA20oBq2cvsSxW6 zKRosZ#>dB{C~A=)gmetCG3@C-hOx0R$D;@dLP*Ig>27At;ByHY`d5Yn>WbKaNqxj<_8lA?L?SW&3x$&)gw%Af z^Tq@#5lNhogajd^rkjl#m2@GAI1ddC&8s9N2q85ZQ*i>LSwTd<$b3pdtGl~^RoY@~ z<&DOQ>KZsEn1&QI#JP$jR3xAx&eDh@g`_bZNi{N7rEnaBSg+S-1rZ2I8X6i93XVJmMoewN8xo!Tf4>3ukZ5sb2! zvEqpA#E>*nXpSJ6_gZdAND!A{w;kF{yFQsC%vv778s21NHdWW~hT4sT`gshpacN~q zGZksB!)p-)^B@TcvH-{kWEM$eEHC%sT3;Kk(OZrE-d{+a##_7_6Kq1Vo5C^7lc?f8 z+rf+Fl!RKb7AS0T7h6$m^Z9%T`-AvUXd}K9ydHnz*@7xwCDn}?W)suuTxP`2%F$0k zf)EDgI?gr075Gx95CUgV&-8^Iw6lfp1n{5ObA;1R;u|!5hSI?#&cto%*Di+C^_Ip*3(QLH2+2r(z_3SCzAqE;&pXZvSL zK{1k$AjF)g_V{p_x2>!^( zXkl9GSyGl8*=#Cam7}9nNRkf{geVESs@9g}MqZ>xvI8kg9YG3#1R+YoGNlGVly)wL zn6I*tFUk(fcVw8&ykC*1SXz~alD@STOXZvdAzaN?Z*xhLe=T3`Xz>ap2vJHldP~=7 z80Ixt%!7^=uRwwjr9||JcuO=KzFk|Eow!AU5EVnP1fzV#eE4mX3*|XkyaEYAl$s!$ zyC7F-f2?~r89hLP5T&My&8>(fqQ{kdadrU-adr|CL~_JHz(st1CnwDX{~U*$T%)y0 z6Foo+$H~hgUW+TVrMQ$uz&y-$$RZ~5uo8f`#1c-RI6)eD_(HSpWaN}B zYLXxh;^RJiR9l;^nC6n>`Jq$TJ8&F>u|DWpDYqtIP`m*&g_^OWVJ+TMzY5+tMlQ98 zI*6Esc)PlOO2u5ZmO2u|L9W$S!pD@Ha-2*K+U9oAMi%<7xGOB0*$%)GdChU?T-sAK*q?_V|+q#$RLBX}p?i*v~l45=|hwItG9 z6Zr)S^T5v(gp>g4y&bg2jPa@#IxXfx+K>t zgjiw_-#hh7+_~aLTvEHF=x_A5)%?>}%`DR!a2bzCTeQkh@q(ya$7{nUuz&mvI+Fv4 z>M`iWY&AA|;bin^E463~G~tTcHncBV4P_1==qA%tQtN=cu8DCxdh)q>l_P_$rSM4S zi-@ec70W~6q9i%1jTH2E0Up4|v~}55E15e%D^d_4z^@06V(-X1IG-LU$=-Wnci16q z1Vix=9E_j9!@VzKxi5m4o}9&hW4KChHro8{Myoz_<`pBOI)$j`{8!I!ac|4@MJ?FY ztBn=#&ONwY+W^1EE4>`3G(iSZQ9RPqfwyAsLYrlWRiS9m(3$R;)oTOXpIxooTC_M8 z8^GZBxw59c5c;F%(3u>=O3xqXgy%yC#~5NW{^uQ98jwUIoY8W(V2S>oKUX&y zeJpO018x*Vv`T%ua}SQhPfL)R+2NnO?RMYDG8GVYt{1d%=7^p|G)Miz0}no`Z9>=+ z$o6-*X^fex1QB(Oe>(GXMD?fyshJy|M4y$QGID~*WZW;r1Hq78e8Pm&yxb4neW zlE7xY9(QQ#T-ThN3uzXZUz%D|CG`R8=*O%m`h# zM~)2A3G#z;doftxuxUaLgb3zErpvKano~$6$UCtjZ*d?q{Y#W!e0y=uDF~b z7MSyMu^qCK^V_EpRTbU2R!KN2$l++NshaL0$g8kPUu=uI~+>2v^h(#FON;MDRZgnfXoigi9URKQ=!hgf|14t1j; zM`mIW$x*pDCdil;cjZl8twqqts$8@9GBGzCD`KT*vDu>xT+NqGn;>N7NUR^fAML_u zI*zzn{IaNNH6hJ=ok+*<{ek_Hbt(@E{Tc{)1E})_vAu2u)&(0}T_{ z?LO%3;pJ$qYg_2IXc{fyRaob%bM4R?5~L_N-eA4i4P~s7+`IZlgsK{(e;4ybO)!GH z8!t5)G;+22$&Mp}guPX+x=CgZd3p^o>?)ig#fL9%xD~;wdZ&}=IMr2+`0SEv5m3CY zUZdBM6fgGIIC0sM5N8SO=e>p?x=mfG-WS9_Z1~`UmPE*L&(iBrqxf9E45=f6EDh8- zaoLjbs^>IDwIoSmgH;ZwGon75aBAxKiGa==MJ)&-lL zx^zkDV+&i7N|pmo3evu)a(bQ@sw9;z2b>gSO|S{R$-#e>z(SK`A;?~iuZ0&rCzDVXDpit&CI_4rL|lAxsMX0N zl#NQ0WFg7{8AkJdV#!rt1>p zos$z5~QSjxJ?q0;{wvmVEOCT_Zq7fRx)mpgyi@m(&R`n ziR$|B770>PUSyYq$9`~$M{cC772h1$f^EK)5~QU3RO>#ds%jj$7F8>! zBqT?Eq-{3({F8ay2 zxKrJnT~w`*j9E%aNRGmgy5qsGc=3&OA3=mw)>PF+ycTz2Q&gybk3 z>3imcB;VZdF|1H3W4u;GUxZJoTTrE3$e6{*kzp>9kQ~L~imq#gG2FlI!?@hH+SOyW z)@w^}r?v^c$>lg_BS(geB(uGhNB_v0YxMpmJ_z*v{W*0shy25pf&WV1V8`br= zjjuK`WFQbQj=3(!DJ1#&#t-AlC6~ja1akhJ;tk@e$Yr>9>2;{}`m>RX=sd z+Ko{)Zfrqc=L=zTRWmLLHW~FDam`GFfLqtfoo`$v2qq=jxU>y_?+xLZ;iGs(I{_`v z#x_o&z>6!j7VPB9pm>$69M-)JOLb2IUN3HFT!riE+l=*sGY3pt#+mo%AUO)dP7qgY z0ThWu@By|3SI1iMlf)6c&3nM%{LWQkMDj|l2_N9A5M*9>ecr4b<=j9flj+4Zth+ho z+BS~JN!9_^MG!MhO-;s!{uk_G46Ez#^NF`{5`EAy|9jzi;6a<#h+Vu5i&!8VH8RDS z`P>_WWGEf37DUk4*l3(toZ(LIB}ix~yfkqJhxBg5SiJ1l5Aq;3>P<#bDkxU1_bStN zRHDr4Uh)aTEoW)TNRmh-5Mlw`qO8aJwKeEfqj+8I!f8H)aTYI05lj@JYIqQ>dL6Fd z%~;~82Jam zlJ~8Ga7(!1Zj;3I?7^1y)ufAidP&+WBD4mD5l%E;&JzWeUW+#qZ8V3S3#%%RvEVl0g zn_LlO+K3RFXkpibK80M%{+MMjqnjd(If__|WT5Cl%rjHI`E4?PJ}K;`c^KrIa%+`@ zTSUk_*YiYRP87Sd_3x(w;Qs+;=5e{|oP`(w0000 /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; - showEnvVarsInLog = 0; - }; - C38B50BA6285516D6DCD4F65 /* [CP] Check Pods Manifest.lock */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputFileListPaths = ( - ); - inputPaths = ( - "${PODS_PODFILE_DIR_PATH}/Podfile.lock", - "${PODS_ROOT}/Manifest.lock", - ); - name = "[CP] Check Pods Manifest.lock"; - outputFileListPaths = ( - ); - outputPaths = ( - "$(DERIVED_FILE_DIR)/Pods-LxMusicMobile-checkManifestLockResult.txt", - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; - showEnvVarsInLog = 0; - }; - C59DA0FBD6956966B86A3779 /* [CP] Embed Pods Frameworks */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputFileListPaths = ( - "${PODS_ROOT}/Target Support Files/Pods-LxMusicMobile-LxMusicMobileTests/Pods-LxMusicMobile-LxMusicMobileTests-frameworks-${CONFIGURATION}-input-files.xcfilelist", - ); - name = "[CP] Embed Pods Frameworks"; - outputFileListPaths = ( - "${PODS_ROOT}/Target Support Files/Pods-LxMusicMobile-LxMusicMobileTests/Pods-LxMusicMobile-LxMusicMobileTests-frameworks-${CONFIGURATION}-output-files.xcfilelist", - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-LxMusicMobile-LxMusicMobileTests/Pods-LxMusicMobile-LxMusicMobileTests-frameworks.sh\"\n"; - showEnvVarsInLog = 0; - }; - E235C05ADACE081382539298 /* [CP] Copy Pods Resources */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputFileListPaths = ( - "${PODS_ROOT}/Target Support Files/Pods-LxMusicMobile/Pods-LxMusicMobile-resources-${CONFIGURATION}-input-files.xcfilelist", - ); - name = "[CP] Copy Pods Resources"; - outputFileListPaths = ( - "${PODS_ROOT}/Target Support Files/Pods-LxMusicMobile/Pods-LxMusicMobile-resources-${CONFIGURATION}-output-files.xcfilelist", - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-LxMusicMobile/Pods-LxMusicMobile-resources.sh\"\n"; - showEnvVarsInLog = 0; - }; - F6A41C54EA430FDDC6A6ED99 /* [CP] Copy Pods Resources */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputFileListPaths = ( - "${PODS_ROOT}/Target Support Files/Pods-LxMusicMobile-LxMusicMobileTests/Pods-LxMusicMobile-LxMusicMobileTests-resources-${CONFIGURATION}-input-files.xcfilelist", - ); - name = "[CP] Copy Pods Resources"; - outputFileListPaths = ( - "${PODS_ROOT}/Target Support Files/Pods-LxMusicMobile-LxMusicMobileTests/Pods-LxMusicMobile-LxMusicMobileTests-resources-${CONFIGURATION}-output-files.xcfilelist", - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-LxMusicMobile-LxMusicMobileTests/Pods-LxMusicMobile-LxMusicMobileTests-resources.sh\"\n"; - showEnvVarsInLog = 0; - }; -/* End PBXShellScriptBuildPhase section */ - -/* Begin PBXSourcesBuildPhase section */ - 00E356EA1AD99517003FC87E /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 00E356F31AD99517003FC87E /* LxMusicMobileTests.m in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 13B07F871A680F5B00A75B9A /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 13B07FBC1A68108700A75B9A /* AppDelegate.mm in Sources */, - 13B07FC11A68108700A75B9A /* main.m in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXSourcesBuildPhase section */ - -/* Begin PBXTargetDependency section */ - 00E356F51AD99517003FC87E /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - target = 13B07F861A680F5B00A75B9A /* LxMusicMobile */; - targetProxy = 00E356F41AD99517003FC87E /* PBXContainerItemProxy */; - }; -/* End PBXTargetDependency section */ - -/* Begin XCBuildConfiguration section */ - 00E356F61AD99517003FC87E /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 5B7EB9410499542E8C5724F5 /* Pods-LxMusicMobile-LxMusicMobileTests.debug.xcconfig */; - buildSettings = { - BUNDLE_LOADER = "$(TEST_HOST)"; - GCC_PREPROCESSOR_DEFINITIONS = ( - "DEBUG=1", - "$(inherited)", - ); - INFOPLIST_FILE = LxMusicMobileTests/Info.plist; - IPHONEOS_DEPLOYMENT_TARGET = 13.4; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - "@loader_path/Frameworks", - ); - OTHER_LDFLAGS = ( - "-ObjC", - "-lc++", - "$(inherited)", - ); - PRODUCT_BUNDLE_IDENTIFIER = "org.reactjs.native.example.$(PRODUCT_NAME:rfc1034identifier)"; - PRODUCT_NAME = "$(TARGET_NAME)"; - TEST_HOST = "$(BUILT_PRODUCTS_DIR)/LxMusicMobile.app/LxMusicMobile"; - }; - name = Debug; - }; - 00E356F71AD99517003FC87E /* Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 89C6BE57DB24E9ADA2F236DE /* Pods-LxMusicMobile-LxMusicMobileTests.release.xcconfig */; - buildSettings = { - BUNDLE_LOADER = "$(TEST_HOST)"; - COPY_PHASE_STRIP = NO; - INFOPLIST_FILE = LxMusicMobileTests/Info.plist; - IPHONEOS_DEPLOYMENT_TARGET = 13.4; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - "@loader_path/Frameworks", - ); - OTHER_LDFLAGS = ( - "-ObjC", - "-lc++", - "$(inherited)", - ); - PRODUCT_BUNDLE_IDENTIFIER = "org.reactjs.native.example.$(PRODUCT_NAME:rfc1034identifier)"; - PRODUCT_NAME = "$(TARGET_NAME)"; - TEST_HOST = "$(BUILT_PRODUCTS_DIR)/LxMusicMobile.app/LxMusicMobile"; - }; - name = Release; - }; - 13B07F941A680F5B00A75B9A /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 3B4392A12AC88292D35C810B /* Pods-LxMusicMobile.debug.xcconfig */; - buildSettings = { - ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; - CLANG_ENABLE_MODULES = YES; - CURRENT_PROJECT_VERSION = 1; - ENABLE_BITCODE = NO; - INFOPLIST_FILE = LxMusicMobile/Info.plist; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - ); - MARKETING_VERSION = 1.0; - OTHER_LDFLAGS = ( - "$(inherited)", - "-ObjC", - "-lc++", - ); - PRODUCT_BUNDLE_IDENTIFIER = "org.reactjs.native.example.$(PRODUCT_NAME:rfc1034identifier)"; - PRODUCT_NAME = LxMusicMobile; - SWIFT_OPTIMIZATION_LEVEL = "-Onone"; - SWIFT_VERSION = 5.0; - VERSIONING_SYSTEM = "apple-generic"; - }; - name = Debug; - }; - 13B07F951A680F5B00A75B9A /* Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 5709B34CF0A7D63546082F79 /* Pods-LxMusicMobile.release.xcconfig */; - buildSettings = { - ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; - CLANG_ENABLE_MODULES = YES; - CURRENT_PROJECT_VERSION = 1; - INFOPLIST_FILE = LxMusicMobile/Info.plist; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - ); - MARKETING_VERSION = 1.0; - OTHER_LDFLAGS = ( - "$(inherited)", - "-ObjC", - "-lc++", - ); - PRODUCT_BUNDLE_IDENTIFIER = "org.reactjs.native.example.$(PRODUCT_NAME:rfc1034identifier)"; - PRODUCT_NAME = LxMusicMobile; - SWIFT_VERSION = 5.0; - VERSIONING_SYSTEM = "apple-generic"; - }; - name = Release; - }; - 83CBBA201A601CBA00E9B192 /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES; - CLANG_CXX_LANGUAGE_STANDARD = "c++20"; - CLANG_CXX_LIBRARY = "libc++"; - CLANG_ENABLE_MODULES = YES; - CLANG_ENABLE_OBJC_ARC = YES; - CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; - CLANG_WARN_BOOL_CONVERSION = YES; - CLANG_WARN_COMMA = YES; - CLANG_WARN_CONSTANT_CONVERSION = YES; - CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_EMPTY_BODY = YES; - CLANG_WARN_ENUM_CONVERSION = YES; - CLANG_WARN_INFINITE_RECURSION = YES; - CLANG_WARN_INT_CONVERSION = YES; - CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; - CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; - CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; - CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; - CLANG_WARN_STRICT_PROTOTYPES = YES; - CLANG_WARN_SUSPICIOUS_MOVE = YES; - CLANG_WARN_UNREACHABLE_CODE = YES; - CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; - COPY_PHASE_STRIP = NO; - ENABLE_STRICT_OBJC_MSGSEND = YES; - ENABLE_TESTABILITY = YES; - "EXCLUDED_ARCHS[sdk=iphonesimulator*]" = ""; - GCC_C_LANGUAGE_STANDARD = gnu99; - GCC_DYNAMIC_NO_PIC = NO; - GCC_NO_COMMON_BLOCKS = YES; - GCC_OPTIMIZATION_LEVEL = 0; - GCC_PREPROCESSOR_DEFINITIONS = ( - "DEBUG=1", - "$(inherited)", - ); - GCC_SYMBOLS_PRIVATE_EXTERN = NO; - GCC_WARN_64_TO_32_BIT_CONVERSION = YES; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNDECLARED_SELECTOR = YES; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - GCC_WARN_UNUSED_FUNCTION = YES; - GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 13.4; - LD_RUNPATH_SEARCH_PATHS = ( - /usr/lib/swift, - "$(inherited)", - ); - LIBRARY_SEARCH_PATHS = ( - "\"$(SDKROOT)/usr/lib/swift\"", - "\"$(TOOLCHAIN_DIR)/usr/lib/swift/$(PLATFORM_NAME)\"", - "\"$(inherited)\"", - ); - MTL_ENABLE_DEBUG_INFO = YES; - ONLY_ACTIVE_ARCH = YES; - OTHER_CPLUSPLUSFLAGS = ( - "$(OTHER_CFLAGS)", - "-DFOLLY_NO_CONFIG", - "-DFOLLY_MOBILE=1", - "-DFOLLY_USE_LIBCPP=1", - "-DFOLLY_CFG_NO_COROUTINES=1", - ); - SDKROOT = iphoneos; - }; - name = Debug; - }; - 83CBBA211A601CBA00E9B192 /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES; - CLANG_CXX_LANGUAGE_STANDARD = "c++20"; - CLANG_CXX_LIBRARY = "libc++"; - CLANG_ENABLE_MODULES = YES; - CLANG_ENABLE_OBJC_ARC = YES; - CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; - CLANG_WARN_BOOL_CONVERSION = YES; - CLANG_WARN_COMMA = YES; - CLANG_WARN_CONSTANT_CONVERSION = YES; - CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_EMPTY_BODY = YES; - CLANG_WARN_ENUM_CONVERSION = YES; - CLANG_WARN_INFINITE_RECURSION = YES; - CLANG_WARN_INT_CONVERSION = YES; - CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; - CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; - CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; - CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; - CLANG_WARN_STRICT_PROTOTYPES = YES; - CLANG_WARN_SUSPICIOUS_MOVE = YES; - CLANG_WARN_UNREACHABLE_CODE = YES; - CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; - COPY_PHASE_STRIP = YES; - ENABLE_NS_ASSERTIONS = NO; - ENABLE_STRICT_OBJC_MSGSEND = YES; - "EXCLUDED_ARCHS[sdk=iphonesimulator*]" = ""; - GCC_C_LANGUAGE_STANDARD = gnu99; - GCC_NO_COMMON_BLOCKS = YES; - GCC_WARN_64_TO_32_BIT_CONVERSION = YES; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNDECLARED_SELECTOR = YES; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - GCC_WARN_UNUSED_FUNCTION = YES; - GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 13.4; - LD_RUNPATH_SEARCH_PATHS = ( - /usr/lib/swift, - "$(inherited)", - ); - LIBRARY_SEARCH_PATHS = ( - "\"$(SDKROOT)/usr/lib/swift\"", - "\"$(TOOLCHAIN_DIR)/usr/lib/swift/$(PLATFORM_NAME)\"", - "\"$(inherited)\"", - ); - MTL_ENABLE_DEBUG_INFO = NO; - OTHER_CPLUSPLUSFLAGS = ( - "$(OTHER_CFLAGS)", - "-DFOLLY_NO_CONFIG", - "-DFOLLY_MOBILE=1", - "-DFOLLY_USE_LIBCPP=1", - "-DFOLLY_CFG_NO_COROUTINES=1", - ); - SDKROOT = iphoneos; - VALIDATE_PRODUCT = YES; - }; - name = Release; - }; -/* End XCBuildConfiguration section */ - -/* Begin XCConfigurationList section */ - 00E357021AD99517003FC87E /* Build configuration list for PBXNativeTarget "LxMusicMobileTests" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 00E356F61AD99517003FC87E /* Debug */, - 00E356F71AD99517003FC87E /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - 13B07F931A680F5B00A75B9A /* Build configuration list for PBXNativeTarget "LxMusicMobile" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 13B07F941A680F5B00A75B9A /* Debug */, - 13B07F951A680F5B00A75B9A /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - 83CBB9FA1A601CBA00E9B192 /* Build configuration list for PBXProject "LxMusicMobile" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 83CBBA201A601CBA00E9B192 /* Debug */, - 83CBBA211A601CBA00E9B192 /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; -/* End XCConfigurationList section */ - }; - rootObject = 83CBB9F71A601CBA00E9B192 /* Project object */; -} diff --git a/ios/LxMusicMobile.xcodeproj/xcshareddata/xcschemes/LxMusicMobile.xcscheme b/ios/LxMusicMobile.xcodeproj/xcshareddata/xcschemes/LxMusicMobile.xcscheme deleted file mode 100644 index 4223f6c..0000000 --- a/ios/LxMusicMobile.xcodeproj/xcshareddata/xcschemes/LxMusicMobile.xcscheme +++ /dev/null @@ -1,88 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/ios/LxMusicMobile/AppDelegate.h b/ios/LxMusicMobile/AppDelegate.h deleted file mode 100644 index 5d28082..0000000 --- a/ios/LxMusicMobile/AppDelegate.h +++ /dev/null @@ -1,6 +0,0 @@ -#import -#import - -@interface AppDelegate : RCTAppDelegate - -@end diff --git a/ios/LxMusicMobile/AppDelegate.mm b/ios/LxMusicMobile/AppDelegate.mm deleted file mode 100644 index 2db13a1..0000000 --- a/ios/LxMusicMobile/AppDelegate.mm +++ /dev/null @@ -1,36 +0,0 @@ -#import "AppDelegate.h" -#import - -#import - -@implementation AppDelegate - -- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions -{ - RCTBridge *bridge = [[RCTBridge alloc] initWithDelegate:self launchOptions:launchOptions]; - [ReactNativeNavigation bootstrapWithBridge:bridge]; - // You can add your custom initial props in the dictionary below. - // They will be passed down to the ViewController used by React Native. - self.initialProps = @{}; - - return YES; -} - -- (NSArray> *)extraModulesForBridge:(RCTBridge *)bridge { - return [ReactNativeNavigation extraModulesForBridge:bridge]; -} - -- (NSURL *)sourceURLForBridge:(RCTBridge *)bridge -{ - return [self getBundleURL]; -} -- (NSURL *)getBundleURL -{ -#if DEBUG - return [[RCTBundleURLProvider sharedSettings] jsBundleURLForBundleRoot:@"index"]; -#else - return [[NSBundle mainBundle] URLForResource:@"main" withExtension:@"jsbundle"]; -#endif -} - -@end diff --git a/ios/LxMusicMobile/Images.xcassets/AppIcon.appiconset/Contents.json b/ios/LxMusicMobile/Images.xcassets/AppIcon.appiconset/Contents.json deleted file mode 100644 index 8121323..0000000 --- a/ios/LxMusicMobile/Images.xcassets/AppIcon.appiconset/Contents.json +++ /dev/null @@ -1,53 +0,0 @@ -{ - "images" : [ - { - "idiom" : "iphone", - "scale" : "2x", - "size" : "20x20" - }, - { - "idiom" : "iphone", - "scale" : "3x", - "size" : "20x20" - }, - { - "idiom" : "iphone", - "scale" : "2x", - "size" : "29x29" - }, - { - "idiom" : "iphone", - "scale" : "3x", - "size" : "29x29" - }, - { - "idiom" : "iphone", - "scale" : "2x", - "size" : "40x40" - }, - { - "idiom" : "iphone", - "scale" : "3x", - "size" : "40x40" - }, - { - "idiom" : "iphone", - "scale" : "2x", - "size" : "60x60" - }, - { - "idiom" : "iphone", - "scale" : "3x", - "size" : "60x60" - }, - { - "idiom" : "ios-marketing", - "scale" : "1x", - "size" : "1024x1024" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - } -} diff --git a/ios/LxMusicMobile/Images.xcassets/Contents.json b/ios/LxMusicMobile/Images.xcassets/Contents.json deleted file mode 100644 index 2d92bd5..0000000 --- a/ios/LxMusicMobile/Images.xcassets/Contents.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "info" : { - "version" : 1, - "author" : "xcode" - } -} diff --git a/ios/LxMusicMobile/Info.plist b/ios/LxMusicMobile/Info.plist deleted file mode 100644 index ed97568..0000000 --- a/ios/LxMusicMobile/Info.plist +++ /dev/null @@ -1,52 +0,0 @@ - - - - - CFBundleDevelopmentRegion - en - CFBundleDisplayName - LxMusicMobile - CFBundleExecutable - $(EXECUTABLE_NAME) - CFBundleIdentifier - $(PRODUCT_BUNDLE_IDENTIFIER) - CFBundleInfoDictionaryVersion - 6.0 - CFBundleName - $(PRODUCT_NAME) - CFBundlePackageType - APPL - CFBundleShortVersionString - $(MARKETING_VERSION) - CFBundleSignature - ???? - CFBundleVersion - $(CURRENT_PROJECT_VERSION) - LSRequiresIPhoneOS - - NSAppTransportSecurity - - - NSAllowsArbitraryLoads - - NSAllowsLocalNetworking - - - NSLocationWhenInUseUsageDescription - - UILaunchStoryboardName - LaunchScreen - UIRequiredDeviceCapabilities - - armv7 - - UISupportedInterfaceOrientations - - UIInterfaceOrientationPortrait - UIInterfaceOrientationLandscapeLeft - UIInterfaceOrientationLandscapeRight - - UIViewControllerBasedStatusBarAppearance - - - diff --git a/ios/LxMusicMobile/LaunchScreen.storyboard b/ios/LxMusicMobile/LaunchScreen.storyboard deleted file mode 100644 index c5de713..0000000 --- a/ios/LxMusicMobile/LaunchScreen.storyboard +++ /dev/null @@ -1,47 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/ios/LxMusicMobile/main.m b/ios/LxMusicMobile/main.m deleted file mode 100644 index d645c72..0000000 --- a/ios/LxMusicMobile/main.m +++ /dev/null @@ -1,10 +0,0 @@ -#import - -#import "AppDelegate.h" - -int main(int argc, char *argv[]) -{ - @autoreleasepool { - return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class])); - } -} diff --git a/ios/LxMusicMobileTests/Info.plist b/ios/LxMusicMobileTests/Info.plist deleted file mode 100644 index ba72822..0000000 --- a/ios/LxMusicMobileTests/Info.plist +++ /dev/null @@ -1,24 +0,0 @@ - - - - - CFBundleDevelopmentRegion - en - CFBundleExecutable - $(EXECUTABLE_NAME) - CFBundleIdentifier - $(PRODUCT_BUNDLE_IDENTIFIER) - CFBundleInfoDictionaryVersion - 6.0 - CFBundleName - $(PRODUCT_NAME) - CFBundlePackageType - BNDL - CFBundleShortVersionString - 1.0 - CFBundleSignature - ???? - CFBundleVersion - 1 - - diff --git a/ios/LxMusicMobileTests/LxMusicMobileTests.m b/ios/LxMusicMobileTests/LxMusicMobileTests.m deleted file mode 100644 index a3034d1..0000000 --- a/ios/LxMusicMobileTests/LxMusicMobileTests.m +++ /dev/null @@ -1,66 +0,0 @@ -#import -#import - -#import -#import - -#define TIMEOUT_SECONDS 600 -#define TEXT_TO_LOOK_FOR @"Welcome to React" - -@interface LxMusicMobileTests : XCTestCase - -@end - -@implementation LxMusicMobileTests - -- (BOOL)findSubviewInView:(UIView *)view matching:(BOOL (^)(UIView *view))test -{ - if (test(view)) { - return YES; - } - for (UIView *subview in [view subviews]) { - if ([self findSubviewInView:subview matching:test]) { - return YES; - } - } - return NO; -} - -- (void)testRendersWelcomeScreen -{ - UIViewController *vc = [[[RCTSharedApplication() delegate] window] rootViewController]; - NSDate *date = [NSDate dateWithTimeIntervalSinceNow:TIMEOUT_SECONDS]; - BOOL foundElement = NO; - - __block NSString *redboxError = nil; -#ifdef DEBUG - RCTSetLogFunction( - ^(RCTLogLevel level, RCTLogSource source, NSString *fileName, NSNumber *lineNumber, NSString *message) { - if (level >= RCTLogLevelError) { - redboxError = message; - } - }); -#endif - - while ([date timeIntervalSinceNow] > 0 && !foundElement && !redboxError) { - [[NSRunLoop mainRunLoop] runMode:NSDefaultRunLoopMode beforeDate:[NSDate dateWithTimeIntervalSinceNow:0.1]]; - [[NSRunLoop mainRunLoop] runMode:NSRunLoopCommonModes beforeDate:[NSDate dateWithTimeIntervalSinceNow:0.1]]; - - foundElement = [self findSubviewInView:vc.view - matching:^BOOL(UIView *view) { - if ([view.accessibilityLabel isEqualToString:TEXT_TO_LOOK_FOR]) { - return YES; - } - return NO; - }]; - } - -#ifdef DEBUG - RCTSetLogFunction(RCTDefaultLogFunction); -#endif - - XCTAssertNil(redboxError, @"RedBox error: %@", redboxError); - XCTAssertTrue(foundElement, @"Couldn't find element with text '%@' in %d seconds", TEXT_TO_LOOK_FOR, TIMEOUT_SECONDS); -} - -@end diff --git a/ios/Podfile b/ios/Podfile deleted file mode 100644 index 2b2191d..0000000 --- a/ios/Podfile +++ /dev/null @@ -1,55 +0,0 @@ -# Resolve react_native_pods.rb with node to allow for hoisting -require Pod::Executable.execute_command('node', ['-p', - 'require.resolve( - "react-native/scripts/react_native_pods.rb", - {paths: [process.argv[1]]}, - )', __dir__]).strip - -platform :ios, min_ios_version_supported -prepare_react_native_project! - -# If you are using a `react-native-flipper` your iOS build will fail when `NO_FLIPPER=1` is set. -# because `react-native-flipper` depends on (FlipperKit,...) that will be excluded -# -# To fix this you can also exclude `react-native-flipper` using a `react-native.config.js` -# ```js -# module.exports = { -# dependencies: { -# ...(process.env.NO_FLIPPER ? { 'react-native-flipper': { platforms: { ios: null } } } : {}), -# ``` -flipper_config = ENV['NO_FLIPPER'] == "1" ? FlipperConfiguration.disabled : FlipperConfiguration.enabled - -linkage = ENV['USE_FRAMEWORKS'] -if linkage != nil - Pod::UI.puts "Configuring Pod with #{linkage}ally linked Frameworks".green - use_frameworks! :linkage => linkage.to_sym -end - -target 'LxMusicMobile' do - config = use_native_modules! - - use_react_native!( - :path => config[:reactNativePath], - # Enables Flipper. - # - # Note that if you have use_frameworks! enabled, Flipper will not work and - # you should disable the next line. - :flipper_configuration => flipper_config, - # An absolute path to your application root. - :app_path => "#{Pod::Config.instance.installation_root}/.." - ) - - target 'LxMusicMobileTests' do - inherit! :complete - # Pods for testing - end - - post_install do |installer| - # https://github.com/facebook/react-native/blob/main/packages/react-native/scripts/react_native_pods.rb#L197-L202 - react_native_post_install( - installer, - config[:reactNativePath], - :mac_catalyst_enabled => false - ) - end -end diff --git a/package-lock.json b/package-lock.json index ab10046..ab61553 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { - "name": "lx-music-mobile", - "version": "1.5.0-beta.3", + "name": "lx-music-mobile-mod", + "version": "3.3.4", "lockfileVersion": 2, "requires": true, "packages": { "": { - "name": "lx-music-mobile", - "version": "1.5.0-beta.3", + "name": "lx-music-mobile-mod", + "version": "3.3.4", "license": "Apache-2.0", "dependencies": { "@craftzdog/react-native-buffer": "^6.0.5", diff --git a/package.json b/package.json index 448229e..6434792 100644 --- a/package.json +++ b/package.json @@ -1,5 +1,5 @@ { - "name": "lx-music-mobile", + "name": "lx-music-mobile-mod", "version": "1.5.0-beta.3", "versionCode": 67, "private": true, @@ -28,21 +28,21 @@ }, "repository": { "type": "git", - "url": "git+https://github.com/lyswhut/lx-music-mobile.git" + "url": "git+https://github.com/ikunshare/lx-music-mobile-mod.git" }, "keywords": [ "music-player", "react-native-app" ], "author": { - "name": "lyswhut", - "email": "lyswhut@qq.com" + "name": "ikun0014", + "email": "ikun0014@qq.com" }, "license": "Apache-2.0", "bugs": { - "url": "https://github.com/lyswhut/lx-music-mobile/issues" + "url": "https://github.com/ikunshare/lx-music-mobile-mod/issues" }, - "homepage": "https://github.com/lyswhut/lx-music-mobile#readme", + "homepage": "https://github.com/ikunshare/lx-music-mobile-mod#readme", "dependencies": { "@craftzdog/react-native-buffer": "^6.0.5", "@react-native-async-storage/async-storage": "^1.24.0", diff --git a/publish/changeLog.md b/publish/changeLog.md index 7beab87..c0f5eab 100644 --- a/publish/changeLog.md +++ b/publish/changeLog.md @@ -1,4 +1,4 @@ -我们发布了关于 LX Music 项目发展调整与新项目计划的说明, +我们发布了关于 LX Music Mod 项目发展调整与新项目计划的说明, 详情看: https://github.com/lyswhut/lx-music-desktop/issues/1912 ### 新增 diff --git a/publish/version.json b/publish/version.json index d87f3fe..d86170f 100644 --- a/publish/version.json +++ b/publish/version.json @@ -1 +1 @@ -{"version":"1.4.2","desc":"我们发布了关于 LX Music 项目发展调整与新项目计划的说明,\n详情看: https://github.com/lyswhut/lx-music-desktop/issues/1912\n\n修复\n- 修复数据存储管理在移除数据时可能出现移除失败的问题","history":[{"version":"1.4.1","desc":"我们发布了关于 LX Music 项目发展调整与新项目计划的说明,\n详情看: https://github.com/lyswhut/lx-music-desktop/issues/1912\n\n修复\n- 修复播放详情页歌词滚动问题(#518)"},{"version":"1.4.0","desc":"我们发布了关于 LX Music 项目发展调整与新项目计划的说明,\n详情看: https://github.com/lyswhut/lx-music-desktop/issues/1912\n\n新增\n- 新增 设置-基本设置-启动后打开播放详情界面 设置,默认关闭(#502 @mingcc7)\n\n修复\n- 修复重复的数据初始化调用\n- 修复导入歌单时可能会导致歌单数据存储异常的问题(#500)\n\n变更\n- 设置-播放设置-优先播放320k音质选项改为“优先播放的音质”,允许选择更高优先播放的音质,如果歌曲及音源支持的话(#487)\n\n其他\n- 更新 React native 到 v0.73.8"},{"version":"1.3.0","desc":"新增\n- 新增棕色主题“泥牛入海”\n- 新增设置-基本设置-总是保留状态栏高度设置,如果在你的设备上出现软件可交互内容与状态栏内容显示重叠的情况,可以启用该设置以始终为系统状态栏保留空间\n- 新增在线自定义源导入功能,允许通过http/https链接导入自定义源\n\n优化\n- 不再丢弃kg源逐行歌词(@helloplhm-qwq)\n- 支持kw源排行榜显示大小(revert @Folltoshe #1460)\n- 优化本地歌曲换源匹配机制\n\n修复\n- 修复mg歌词在某些情况下获取失败的问题\n- 修复mg歌单搜索(@helloplhm-qwq)\n- 修复kg最新评论无法获取的问题(@helloplhm-qwq)\n\n其他\n- 更新 React native 到 v0.73.6"},{"version":"1.2.0","desc":"提前祝大家新年快乐!\n\n新增\n- 新增自定义源(实验性功能),调用方式与PC端一致,但需要注意的是,移动端自定义源的环境与PC端不同,某些环境API不可用,详情看自定义说明文档\n- 新增长按收藏列表名自动跳转列表顶部的功能\n- 新增实验性的添加本地歌曲到我的收藏支持,与PC端类似,在我的收藏的列表菜单中选择歌曲目录,将添加所选目录下的所有歌曲,目前支持mp3/flac/ogg/wav等格式\n- 新增歌曲标签编辑功能,允许编辑本地源且文件存在的歌曲标签信息\n- 新增动态背景,启用后将使用当前播放歌曲封面做APP背景,默认关闭,可到设置-主题设置启用\n- 新增APP全局字体阴影,默认关闭,可到设置-主题设置启用\n- 新增启用竖屏首页横向滚动设置,默认开启(原来的行为),如果你不想要竖屏的首页左右滑动则可以关闭此设置(#397)\n- 新增“使用系统文件选择器”设置,默认启用,启用该选项后,导入备份文件、自定义源等操作将不需要申请存储权限,但可能在某些系统上不可用\n- 播放详情页新增桌面歌词显示/隐藏切换按钮,长按可切换歌词锁定状态\n- 我的列表菜单列表新增“新建列表”菜单\n- 我的列表菜单列表新增“排序歌曲”菜单,可以排序所选列表内的歌曲,排序功能与PC一致\n- 添加 墨·状态栏特别版(版本号包含`sl`)的 release 构建\n\n优化\n- 添加是否忽略电池优化检查,用于提醒用户添加白名单,确保APP后台播放稳定性\n- 在设置界面返回时,不再直接返回桌面,将回到进入设置界面前的界面,在非设置界面返回时才会返回桌面\n- 更新播放栏进度条样式,进度条允许拖动调整进度\n- 优化播放详情页歌曲封面、控制按钮对各尺寸屏幕的适配,修改横屏下的控制栏按钮布局\n- 优化横竖屏界面的展示判断,现在趋于方屏的屏幕按竖屏的方式显示,横屏下的播放栏添加上一曲切歌按钮\n- 添加对wy源某些歌曲有问题的歌词进行修复(#370)\n- 文件选择器允许选择外置存储设备上的路径,添加SD卡、USB存储等外置存储设备的读写支持\n- 图片显示改用第三方的图片组件,支持gif类型的图片显示,尝试解决某些设备上图片过多导致的应用崩溃问题\n- 歌曲评论内容过长时自动折叠,需手动展开\n- 改进本地音乐在线信息的匹配机制\n- 移除播放服务唤醒锁,解决APP在空闲时仍然处于唤醒状态的问题\n- 添加创建同名列表时的二次确认\n\n修复\n- 修复主题背景覆盖不全的问题\n- 修复清理缓存后查看日志时会导致APP崩溃的问题\n- 修复临时列表变更会意外触发同步的问题\n\n变更\n- 在更低版本的安卓上启用跟随系统亮暗主题功能(#317)\n- 由于歌曲评论的图片太大占用较多资源,评论图片不再直接加载,需要点击图片区域后再加载\n- 导入文件(歌单备份、自定义源文件等)默认不再需要设备存储权限,但如果这导致在你的设备上无法选择文件,则可以关闭基本设置的“使用系统文件选择器”设置,回退到原来的文件选择方式\n\n其他\n- 移除所有内置源,由于收到腾讯投诉要求停止提供软件内置的连接到他们平台的在线播放及下载服务,所以从即日(2023年10月18日)起LX本身不再提供上述服务\n- 更新许可协议的排版,使其看起来更加清晰明了,更新数据来源原理说明\n- 更新 React native 到 v0.73.3\n- 核心播放器从 ExoPlayer 迁移到 media3 v1.2.1"},{"version":"1.1.1","desc":"落雪提前祝大家中秋快乐~🥮😘!\n\n优化\n- 通过歌曲菜单添加不喜欢歌曲时需要二次确认防止手抖\n- 减慢歌词详情页歌词滚动速度\n- 更改应用窗口大小获取方式,尝试解决在某些设备上的背景、弹出菜单显示问题\n- 优化同步功能错误消息提示,因同步服务版本不匹配导致的连接失败现在将区分提示\n\n修复\n- 修复横屏状态下的歌词滚动位置计算问题\n- 修复切歌时歌词激活行的重置问题\n- 修复更新翻译歌词、罗马音歌词设置后需重启应用才生效的问题,现在更新设置后会立即生效\n\n其他\n- 更新 React native 到 v0.72.5"},{"version":"1.1.0","desc":"目前本项目的原始发布地址只有 **GitHub** 及 **蓝奏网盘** (在设置-关于有说明),其他渠道均为第三方转载发布,可信度请自行鉴别。\n\n本项目无微信公众号之类的官方账号,也未在小米、华为、vivo等应用商店发布应用,商店内的“LX Music”、“洛雪音乐”相关的应用全部属于假冒应用,谨防被骗。\n\n本软件完全无广告且无引流(如需要加群、关注公众号之类才能使用或者升级)的行为,若你使用过程中遇到广告或者引流的信息,则表明你当前运行的软件是第三方修改版。\n\n若在升级新版本时提示签名不一致,则表明你手机上的旧版本或者将要安装的新版本中有一方是第三方修改版。\n\n若在升级新版本时提示无法降级安装,则表明你使用的是universal(通用)版安装包(安装包大小20M+),尝试使用arm64-v8a版安装包或者到GitHub下载其他版本安装包。\n\n该版本针对一加、OPPO、Pixel无法播放歌曲(提示音频加载出错,5 秒后切换下一首)或者无法完整播放歌曲的问题做了处理,但如果你使用该版本后问题依然存在,临时的解决方案是去设置-播放设置关闭“音频卸载”选项后完全重启应用\n\n不兼容性变更\n该版本修改了同步协议逻辑,同步功能至少需要PC端v2.4.0或移动端v1.1.0或同步服务v2.0.0版本才能连接使用\n\n新增\n- 新增列表设置-是否显示歌曲专辑名,默认关闭\n- 新增列表设置-是否显示歌曲时长,默认开启\n- 新增是否允许通过歌词调整播放进度功能,默认关闭,可到播放详情页右上角设置开启\n- 新增“不喜欢歌曲”功能,可以在我的列表或者在线列表内歌曲的右击菜单使用,还可以去“设置-其他”手动编辑不喜欢规则,注:“上一曲”、“下一曲”功能将跳过符合“不喜欢歌曲”规则的歌曲,但你仍可以手动播放这些歌曲\n- 新增同步功能对“不喜欢歌曲”列表的同步\n- 新增设置-播放设置-是否启用音频卸载,该设置之前默认是启用的,现在添加开关允许将其关闭,若出现播放器问题可尝试将其关闭\n- 新增设置-播放设置-自动清空已播放列表选项,默认关闭\n\n优化\n- 优化歌单列表歌单封面大小计算方式\n- 调整竖屏下的排行榜布局\n- 调整歌曲列表信息布局\n- 调整横屏下的歌曲列表为两列\n- 调整桌面歌词主题配色,增强歌词字体阴影(#276)\n- 优化数据传输逻辑,列表同步指令使用队列机制,保证列表同步操作的顺序\n- 暂停播放时播放详情歌词页不要自动滚动歌词回播放位置\n- 播放详情页歌词添加延迟滚动及着色动画\n- 优化息屏下的逻辑处理,尽量减少电量消耗\n\n修复\n- 修复wy歌单分类切换无效的问题\n- 修复因插入数字类型的ID导致其意外在末尾追加 .0 导致列表数据异常的问题,同时也可能导致同步数据丢失的问题(此问题会影响PC端,要完全修复这个问题还需要同时将PC端、同步服务更新到最新版本)\n- 修复在线列表、我的列表内的歌曲批量操作后,没有自动取消选择的问题\n- 修复tx热门评论昵称被错误切割的问题 (By: @helloplhm-qwq, @Folltoshe)\n- 修复wy源热搜词失效的问题(@Folltoshe)\n- 修复mg歌单搜索歌单播放数量显示问题\n- 修复搜索提示功能失效的问题(@Folltoshe)\n- 修复潜在导致列表数据不同步的问题\n- 修复kg无评论时的加载处理问题\n- 修复顺序播放时播放完列表的最后一首歌播放按钮状态没有更新的问题(#300)\n\n变更\n- 随机模式下,通过点击与播放列表相同的列表切歌时,将不再清空已播放列表,即已播放的歌曲不再重新参与随机,若想恢复之前的行为可以去设置-播放设置启用清空已播放列表选项\n\n其他\n- 更新 React native 到 v0.72.4"},{"version":"1.0.6","desc":"修复\n- 修复wy歌单分类切换无效的问题"},{"version":"1.0.5","desc":"优化\n- 增加kg歌单歌曲flac24bit显示(@helloplhm-qwq)\n- 增加tx源热门评论图片显示(@Folltoshe)\n- 支持wy热门评论翻页\n- 微调排行榜列表宽度及字体大小\n\n修复\n- 修复wy我喜欢列表使用token的方式导入,现在移动端可以使用token的方式导入我喜欢列表的音乐了,这意味着从PC端同步过来的歌单也可以在移动端上更新\n- 修复在线列表的多选问题\n- 修复mg搜索不显示时长的问题(@Folltoshe)\n- 修复mg评论加载失败的问题(@Folltoshe)\n- 修复在Android 5.1下报错的问题\n- 修复对存在错误时间标签的歌词的解析\n- 修复聚合搜索时未显示源名称的问题\n- 修复更改音源的列表歌曲颜色的实时更新问题\n\n其他\n- 更新kg、tx、wy等平台排行榜列表\n- 更新react native到v0.71.7"},{"version":"1.0.4","desc":"新增\n- 隐藏黑色主题背景设置,默认关闭,可以去设置-主题设置更改\n\n优化\n- 添加歌单分类、排行榜激活指示器\n- 调整设置界面竖屏下的UI布局\n\n修复\n- 修复歌单排序列表滚动重置问题\n- 修复搜索提示列表的显示时机问题\n- 就放tx源歌词获取失败的问题\n- 修复将播放速率调整为0.6后,再次打开设置面板将会导致app崩溃的问题\n- 修复播放详情页设置面板当前音量显示格式问题\n\n其他\n- 升级 React Native 到 v0.71.5"},{"version":"1.0.3","desc":"修复\n- 修复歌单详情页内歌曲最多只加载30首的问题"},{"version":"1.0.2","desc":"优化\n- 竖屏下的首页允许滑动切换页面(恢复v0.x.x的切页操作)\n- 优化更新语言、主题设置时的流畅度\n\n其他\n- 启用新架构"},{"version":"1.0.1","desc":"修复\n- 修复在线列表翻页问题"},{"version":"1.0.0","desc":"从v1.0.0起,我们发布了一个独立版的[数据同步服务](https://github.com/lyswhut/lx-music-sync-server#readme),如果你有服务器,可以将其部署到服务器上作为私人多端同步服务使用,详情看该项目说明\n\n由于该版本涉及旧版数据迁移,建议更新前先到设置-备份与恢复备份歌单\n\n不兼容性变更说明\n- 同步功能,该功能不支持与PC端v2.2.0之前的版本使用\n\n新增\n- 新增聚合搜索,注:由于这个方式需要对各个源的结果进行排序,所以需要以“歌曲名 歌手”的顺序输入(例如:突然的自我 伍佰),否则排序后的结果可能不是你想要的\n- 新增歌单搜索功能\n- 新增热门搜索显示,默认关闭,需要到设置-搜索设置开启\n- 新增搜索历史记录,默认关闭,需要到设置-搜索设置开启\n- 启动软件时自动回到上次的界面,例如上次退出软件时在我的收藏,下次启动软件时会自动进入我的收藏\n- 新增PC端所拥有的内置皮肤\n- 新增界面字体大小设置\n- 新增播放器音量大小设置,可以去播放详情页-播放器设置-音量大小更改\n- 新增播放器播放速率设置,可以去播放详情页-播放器设置-播放速率更改\n- 新增播放详情页歌词对齐方式设置,可以去播放详情页-播放器设置-歌词对齐方式更改\n- 新增是否在左侧导航栏显示返回桌面按钮设置,默认关闭,可以去设置-基本设置-是否显示返回桌面按钮开启\n- 新增是否在左侧导航栏显示退出应用按钮设置,默认关闭,可以去设置-基本设置-是否显示退出应用按钮开启\n- 支持wy源flac hires歌曲类型的显示\n- 添加kg源评论图片展示(@helloplhm-qwq)\n- 支持kg源搜索列表、排行榜flac hires歌曲类型的显示(@helloplhm-qwq, @Folltoshe)\n\n优化(界面/交互/功能)\n- 调整了首页的界面布局\n- 优化大屏幕下的字体大小及界面布局显示\n- 支持wy源flac hires歌曲类型的显示\n- 优化列表数据导入导出的性能,现在进行这些操作应该可以一下子完成且不会再冻结UI了\n- 支持kg源搜索列表flac hires歌曲类型的显示(@helloplhm-qwq)\n\n优化(程序)\n- 优化程序启动性能,优化与程序交互的流畅度\n- 重构整个程序,重新梳理了程序逻辑,使其更容易扩展及维护,将大部分代码从JavaScript迁移到TypeScript\n- 重写配置管理、列表管理功能,使其与PC端同步,更容易复用PC端的代码\n\n修复\n- 修复使用酷狗码无法打开某些类型的歌单的问题\n- 修复tx源某些歌单无法打开的问题\n\n变更\n- 原来播放详情页的歌词字体大小设置改为播放器设置\n\n其他\n- 升级React Native到v0.71.4"},{"version":"0.15.5","desc":"修复\n- 修复导入PC端v2列表文件歌曲信息转换丢失的问题\n- 修复上面问题导致的tx源评论加载失败的问题"},{"version":"0.15.4","desc":"修复\n- 修复播放详情页歌词翻译、罗马音歌词匹配问题"},{"version":"0.15.3","desc":"修复\n- 修复鸿蒙系统下的崩溃问题"},{"version":"0.15.2","desc":"修复\n- 修复潜在的歌词解析导致应用崩溃问题"},{"version":"0.15.1","desc":"修复\n- 修复某些歌曲的桌面歌词翻译或罗马音没有显示的问题\n- 修复kg某些歌单链接无法打开的问题"},{"version":"0.15.0","desc":"新增\n- 支持导入PC端v2版本的列表数据\n- 添加kg源罗马音歌词的支持\n- 支持打开波点音乐歌单(需在酷我源打开)\n\n修复\n- 支持单行多时间标签歌词解析,修复某些歌词会出现时间标签的问题\n- 修复某些类型的kg歌单无法导入的问题\n- 修复异常歌单、歌曲数据导致的崩溃问题(#157)\n\n其他\n- 升级react-native到 v0.68.5"},{"version":"0.14.3","desc":"修复\n- 修复因音源的域名到期导致的音源失效的问题"},{"version":"0.14.2","desc":"优化\n- 为tx、kw源添加 Flac 24bit 音质显示,注:由于之前没有记录此音质,所以之前收藏的歌曲信息中不包含它\n\n修复\n- 修复排行榜在旋转屏幕后,选中的榜单被重置回第一个的问题\n- 修复企鹅音乐搜索失效的问题"},{"version":"0.14.1","desc":"优化\n- 添加“弹出键盘时自动隐藏播放栏”设置,默认启用(原来的行为),若在某些设备上播放栏无法显示时则可以关闭此设置\n- 优化切歌时桌面歌词的切换动画显示\n- 暂停播放时自动隐藏桌面歌词\n- 在我的列表-列表名左侧添加了一个图标,以表示此处可以点击切换列表\n\n修复\n- 修复tx源搜索失效的问题"},{"version":"0.14.0","desc":"新增\n- 新增设置-桌面歌词-单行歌词设置,默认关闭,启用后只显示一行歌词,超出窗口宽度自动滚动到末尾\n- 新增设置-桌面歌词-显示歌词切换动画,默认启用,如果你觉得切换动画影响视觉可以将其关闭\n- 新增设置-基本设置-启动后自动播放音乐,默认关闭\n\n优化\n- 支持mg源的歌词翻译(之前添加的歌曲需要去设置清空缓存才会刷新歌词)\n- 添加歌曲列表更新操作的二次确认\n- 添加导入文件错误时的指引提示\n\n修复\n- 修复桌面歌词转繁体设置不立即生效的问题\n- 修复搜索、歌单、排行榜列表可能在切换新内容后出现上次列表内容的残留问题(#118)\n- 修复在某些系统上播放音乐会导致应用崩溃的问题(#129)\n- 修复停止播放后的播放器状态清理问题\n\n文档\n移动版文档已迁移到:"},{"version":"0.13.0","desc":"从这个版本起,你可以将桌面歌词拖动到状态栏上,然后将歌词字体调小后配合新增的歌词窗口宽度、行数设置,模拟出类似状态栏歌词的效果。\n\n如果你的设备装有Xposed框架,可以使用状态栏版(详情看GitHub置顶issue),它通过调用第三方Xposed模块【墨•状态栏歌词】的API支持来状态栏歌词(感谢@ftevxk)。\n但考虑到要依赖第三方应用,并且是Xposed模块,预计用的人会比较少,所以暂不考虑将此特性包含在正式版中。\n\n新增\n- 新增设置-播放设置-显示歌词罗马音,默认关闭,注:目前只有网易源能获取到罗马音歌词(得益于 Binaryify/NeteaseCloudMusicApi/pull/1523),如果你知道其他源的歌词罗马音获取方式,欢迎PR或开issue交流!\n- 新增黑、白桌面歌词主题\n- 桌面歌词新增窗口宽度百分比、最大歌词行数调整设置,允许将歌词拖动到刘海屏状态栏上。提示:有了这组功能你就可以模拟状态栏歌词了\n- 新增设置-播放设置-将播放的歌词转繁体功能(#114)\n\n优化\n- 允许桌面歌词拖动到状态栏上(感谢@ftevxk)\n- 允许选择更新日志弹窗里的文本内容\n- 桌面歌词的最大字体大小允许调整到500(#107)\n\n修复\n- 修复潜在的桌面歌词导致应用崩溃问题\n\n文档\n- 将歌曲添加“稍后播放”后,它们会被放在一个优先级最高的特殊队列中,点击“下一曲”时会消耗该队列中的歌曲,并且无法通过“上一曲”功能播放该队列的上一首歌曲\n- 在切歌时若不是通过“上一曲”、“下一曲”功能切歌(例如直接点击“排行榜列表”、“我的列表”中的歌曲切歌),“稍后播放”队列将会被清空\n\n其他\n- 升级React native到v0.68.2"},{"version":"0.12.0","desc":"新增\n- 为搜索、歌单、排行榜的歌曲菜单添加分享“分享歌曲”按钮\n- 新增设置-基本设置-分享设置,它用于控制歌曲菜单的分享行为,默认使用系统分享\n- 新增是否在通知栏显示歌曲图片设置,默认开启(原来的行为)\n- 新增黑色皮肤“黑灯瞎火”\n- 新增设置-基本设置-主题颜色-跟随系统亮、暗模式切换主题设置,注:此设置需要android 10或ios 13及以上的版本才支持\n\n优化\n- 现在即使切歌模式处于单曲循环、顺序播放、禁用时,手动切歌将会按照列表循环的规则处理(#69)\n- 添加定时退出计时结束后的提示\n\n修复\n- 修复wy源搜索某些歌曲时第一页之后的歌曲无法加载的问题\n- 每次启动时过滤无效的歌曲\n- 修复换源失败时的处理问题\n- 修复非循环模式下播放结束后的状态显示问题及无法重新播放的问题(#104)\n- 修复定时退出可能导致崩溃的问题\n- 修复播放详情页歌词界面在把应用切到后台再切回来会导致屏幕常亮失效的问题\n\n变更\n- 歌曲菜单的“复制歌曲名”改为“分享歌曲”,点击后可以选择第三方应用分享歌曲详情页链接\n- 已存在目录列表的歌曲再次添加时将不会变成移除\n\n其他\n- 升级react-native到 v0.68.1"},{"version":"0.11.1","desc":"修复\n- 修复播放栏在某些设备不显示的问题"},{"version":"0.11.0","desc":"新增\n- 新增“点击列表里的歌曲时自动切换到当前列表播放”设置,此功能仅对歌单、排行榜有效,默认关闭\n- 添加试听接口,这是测试接口、临时接口都不可用时最后的选择...\n\n优化\n- 过滤tx源某些不支持播放的歌曲,解决播放此类内容会导致意外的问题\n- 备份与恢复兼容单个列表文件的导入\n- 添加通知权限的检查提醒,点击“不再提示”后,将会在设置-清空缓存后才会恢复提示\n\n修复\n- 修复Android 12下的桌面歌词锁定后还是无法在应用外点击歌词后面下面的内容的问题\n\n其他\n- 升级React native到v0.67.4"},{"version":"0.10.3","desc":"优化\n- 优化kw源英文与翻译歌词的匹配\n\n修复\n- 修复桌面歌词播放器会导致应用崩溃的问题"},{"version":"0.10.2","desc":"修复\n- 修复某些系统下的虚拟导航栏会导致播放栏隐藏的问题(react-native v0.67.x导致的)\n\n其他\n- 降级react-native到 v0.66.4"},{"version":"0.10.1","desc":"优化\n- 优化通知栏的更新机制,尝试修复魅族的通知栏图片不显示的问题\n- 我的列表-列表名的右击菜单更新已收藏的在线列表时,将始终重新加载,不再使用缓存,解决在原平台更新歌单后,在LX点击更新可能看到的还是在原平台更新前的歌单的问题\n\n修复\n- 修复tx源无搜索结果的问题\n- 修复小米等设备下面的手势提示线背景颜色为黑色的问题\n\n其他\n- 升级React native到v0.67.1"},{"version":"0.10.0","desc":"新增\n- 同步功能新增对列表位置调整的支持(需v1.15.3以上的PC端版本才支持)\n- 新增播放详情页歌词字体大小调整设置,可在详情页右上角的按钮进行调整\n- 新增同步服务地址历史列表功能\n- 横屏播放详情页新增评论入口\n- 我的列表歌曲三个点的菜单新增复制歌曲名\n\n优化\n- 修改对播放模块的调用,杜绝应用显示正在播放的歌曲与实际播放歌曲不一致的问题(这是播放模块歌曲队列与应用内歌曲队列在某些情况下出现不一致时导致的)\n- 支持PC端同步功能添加对列表顺序调整的控制,确保手动调整位置后的列表与不同的电脑同步时,列表位置不会被还原\n- 调整横屏下的导航栏、播放详情页布局,提高屏幕空间利用率并使其更易操作\n- 调整歌单类别、我的列表弹出层界面\n- 播放栏移除上一曲按钮,将多出来的空间加给播放、下一曲按钮\n- 现在点击、长按播放栏歌曲标题也可以进入详情页、定位当前播放歌曲了\n\n修复\n- 修复kw源某些歌曲的歌词提取异常的问题\n\n其他\n- 升级react-native到v0.66.4"},{"version":"0.9.2","desc":"优化\n- 添加应用初始化出错时的错误捕获输出\n- 优化歌词自动换源机制\n\n修复\n- 修复因kw源歌词接口停用导致该源歌词获取失败的问题\n\n其他\n- 更新react-native到v0.66.3\n- 更新Exoplayer到v2.16.0"},{"version":"0.9.1","desc":"修复\n- 修复删除列表时会导致应用崩溃的问题\n- 修复原生代码导致的错误日志记录"},{"version":"0.9.0","desc":"新增\n- 新增歌曲评论显示,可在播放详情页进入。(与PC端一样,目前仅支持显示部分评论)\n- 新增播放、收藏整个排行榜功能,可长按排行榜名字后在弹出的菜单中操作\n- 新增单个列表导入/导出功能,可以方便分享歌曲列表,可在点击“我的列表”里的列表名右侧的按钮后弹出的菜单中使用\n- 新增删除列表前的确认弹窗,防止误删列表\n\n优化\n- 添加更多同步功能的日志记录\n\n修复\n- 修复kg源的歌单链接无法打开的问题\n- 修复同一首歌的URL、歌词等同时需要换源时的处理问题\n- 修复在排行榜页面无法时无法通过点击我的列表图标切换到我的列表的问题\n\n其他\n- 更新react-native到v0.66.1"},{"version":"0.8.3","desc":"修复\n- 修复我的列表搜索无法搜索小括号、中括号等字符,并会导致应用崩溃的问题\n- 修复使用同步功能同步完成后,列表没有被保存,导致下次再连接同步时被同步新增的歌曲被移除的问题(此问题由v0.8.2的存储切片改造引入的)\n\n其他\n- 更新React native到v0.66.0"},{"version":"0.8.2","desc":"优化\n- 缓冲进度条颜色\n- 优化数据存储,若需要存储的数据过大时会将数据切片后存储,现在存储大列表不会导致列表丢失了\n\n修复\n- 修复随机播放模式下在同列表切其他歌曲不会清空已播放列表的问题\n- 修复歌曲播放出错时的URL刷新问题"},{"version":"0.8.1","desc":"优化\n- 添加更多错误信息的记录\n\n修复\n- 修复潜在的获取缓存大小报错问题\n- 修复mg排行榜无法加载的问题\n- 修复列表导出失败时的提示信息缺失翻译的问题\n- 修复 Android 11 导入列表时,不显示备份文件的问题\n- 修复其他应用播放声音时,软件临时暂停播放后通知栏的状态仍显示正在播放的问题"},{"version":"0.8.0","desc":"新增\n- 添加对通知栏歌曲进度条的支持\n\n修复\n- 修复某些情况下桌面歌词会导致APP崩溃的问题\n- 修复从电脑浏览器复制的企鹅歌单链接无法打开的问题\n\n其他\n- 升级React native到v0.65.1\n- 升级播放模块`react-native-track-player`到v2版本,优化通知栏歌曲信息显示逻辑"},{"version":"0.7.1","desc":"修复\n- 修复无法从歌单界面打开网易歌单详情的问题"},{"version":"0.7.0","desc":"如果你喜欢并经常使用洛雪音乐,并想要第一时间尝鲜洛雪的新功能,可以加入测试企鹅群768786588,\n注意:测试版的功可能会不稳定,打算潜水的勿加。\n\n新增\n- 新增横屏状态下的播放详情页\n- 新增橙、粉、灰主题色\n- 新增桌面歌词的字体大小、透明度设置\n- 新增我的列表内歌曲搜索定位功能\n\n调整\n- 为了与搜索、歌单操作栏位置统一,现将我的列表-收藏的列表操作栏由底部挪到顶部\n\n修复\n- 修复tx源的歌词无法显示的问题\n- 修复随机播放模式下使用稍后播放功能会导致歌曲单曲循环的问题\n- 修复某些情况下桌面歌词会导致APP崩溃的问题"},{"version":"0.6.2","desc":"优化\n- 优化设置界面的输入框输入机制,现在只要键盘收起即可自动保存输入的内容\n- 添加在启用桌面歌词时对悬浮层权限的检查,这应该可以修复某些设备上点击启用桌面歌词时不显示无权限弹窗也不显示桌面歌词的情况\n\n变更\n- 不再自动聚焦定时退出、调整位置弹窗内的输入框,这应该可以修复某些设备无法在这两个地方弹出键盘的问题\n\n修复\n- 修复启用桌面歌词时的权限提示弹窗会导致应用报错的问题\n- 修复我的列表无法更新从收藏的排行榜的问题"},{"version":"0.6.1","desc":"修复\n- 修复随机播放下无法切歌的问题"},{"version":"0.6.0","desc":"新增\n- 新增局域网同步功能(实验性,首次使用前建议先备份一次列表),此功能需要配合PC端使用,移动端与PC端处在同一个局域网(路由器的网络)下时,可以多端实时同步歌曲列表,使用问题请看\"常见问题\"。\n- 新增桌面歌词\n\n优化\n- 优化退出应用的机制,现在在需要退出应用的场景将会完全退出应用\n\n修复\n- 修复某些情况下出现恢复播放信息失败的问题\n- 修复删除列表中正在播放的歌曲时会自动跳到第一首的问题\n- 修复因其他应用需要播放声音而暂停播放音乐时歌词不会暂停播放导致恢复播放后歌词与播放进度不一致的问题"},{"version":"0.5.3","desc":"修复\n- 修复歌曲缓存失效的问题"},{"version":"0.5.2","desc":"优化\n- 优化mg源打开歌单的链接兼容\n\n修复\n- 修复单曲循环播放时循环次数为偶数时歌词不重新播放的问题\n- 添加针对进入歌词界面时某些情况下会弹出`scrollToIndex out of range: requested index ...`崩溃错误弹窗的处理\n- 修复导入kg歌单最多只能加载100、500首歌曲的问题。注:现在可以加载1000+首歌曲的歌单,但出于未知原因会导致部分歌曲无法加载(可能是无版权导致的),目前酷狗码仍然最多只能加载500首歌"},{"version":"0.5.1","desc":"优化\n- 添加切换播放模式时的文字提示\n- 优化单首歌曲的添加弹窗操作,当选择当前歌曲已存在目标列表时(列表名灰色显示),会将当前歌曲从目标列表移除,否则将当前歌曲添加到目标列表,添加在弹窗内对歌曲的添加、移动、删除操作时的文字提示\n\n修复\n- 修复mg源搜索失效的问题\n\n移除\n- 因wy源的歌单列表已没有“最新”排序的选项,所以现跟随移除wy源歌单列表按“最新”排序的按钮"},{"version":"0.5.0","desc":"新增\n- 新增“其他应用播放声音时,自动暂停播放”设置,默认开启\n- 新增“添加歌曲到列表时的位置”设置,可选项为列表的“顶部”与“底部”\n- 新增“显示歌词翻译设置”,默认关闭\n\n变更\n- 添加歌曲到列表时从原来的底部改为顶部,若想要恢复原来的行为则可以去更改“添加歌曲到列表时的位置”设置项"},{"version":"0.4.2","desc":"优化\n- 优化wy源歌单导入匹配,现在存在链接外的其他字符也可以打开歌单了\n\n修复\n- 修复定时播放开启歌曲播放完毕再停止时,若倒计时已结束会导致无法播放歌曲的问题\n- 修复打开歌单失败时会导致应用崩溃的问题\n- 修复打开kw歌单失败时会无限重试的问题\n- 尝试修复弹出菜单、列表位置不正确的问题\n- 修复打开kg源歌单链接失败的问题\n- 尝试修复有时候进入播放详情歌词界面时会导致应用UI被冻结的问题\n- 修复有时候进入播放详情页时歌曲封面大小显示不正确的问题"},{"version":"0.4.1","desc":"修复\n- 修复定时播放开启歌曲播放完毕再停止时,若倒计时已结束会导致无法播放歌曲的问题"},{"version":"0.4.0","desc":"新增\n- 新增我的列表中已收藏的在线列表的更新功能。注意:这将会覆盖本地的目标列表,歌曲将被替换成最新的在线列表(与PC端的同步一样)\n- 歌曲添加、移动弹窗新增创建新列表功能\n- 新增定时退出播放\n\n优化\n- 优化应用布局对手机系统字体大小的适配\n- 调整歌单详情页,现在在歌单详情页按手机上的返回键将会返回歌单列表,而不是直接退出APP\n- 优化进入播放详情页、歌单详情页的动画效果\n\n修复\n- 尝试修复某些情况下进播放详情歌词界面时报错的问题"},{"version":"0.3.3","desc":"修复\n- 尝试修复软件启动时恢复上一次播放的歌曲可能导致软件崩溃的问题\n- 尝试修复播放详情页歌词导致UI冻结的问题\n- 修复企鹅音乐搜索歌曲没有结果的问题\n\n其他\n- 整合日志记录\n- 更新 exoPlayer 到 2.14.0"},{"version":"0.3.2","desc":"修复\n- 修复手机分享的wy歌单、某些tx、kg歌单无法打开的问题\n- 修复打开空的歌单时,点击播放全部会导致应用崩溃的问题\n- 修复企鹅音乐搜索歌曲没有结果的问题"},{"version":"0.3.1","desc":"修复\n- 修复进入播放详情歌词界面后的屏幕常亮不会被取消的问题"},{"version":"0.3.0","desc":"新增\n- 新增通过歌单链接打开歌单的功能\n\n优化\n- 切换到播放详情歌词界面时将阻止屏幕息屏\n\n修复\n- 修复一个导致崩溃日志写入文件前会导致APP崩溃的莫名其妙问题"},{"version":"0.2.0","desc":"新增\n- 新增竖屏下的播放详情页"},{"version":"0.1.7","desc":"优化\n- 修改歌单导入流程,添加对歌单导入错误的捕获\n\n修复\n- 修复在系统暗主题下,应用内文字输入框的字体会变成白色的问题"},{"version":"0.1.6","desc":"优化\n- 改进软件错误处理,添加对软件崩溃的错误日志记录,可在设置-其他查看错误日志历史。注:清理缓存时日志也将会被清理\n\n修复\n- 修复显示版本更新弹窗会导致应用崩溃的问题"},{"version":"0.1.5","desc":"修复\n- 修复修复协议弹窗可以被绕过的问题\n- 修复从在线列表使用稍后播放功能播放歌曲时,歌曲封面不显示的问题\n- 修复正在播放“稍后播放”的歌曲时,对“稍后播放”前播放的列表进行添加、删除操作会导致切歌的问题"},{"version":"0.1.4","desc":"修复\n- 修复获取在线列表时快速切换会导致APP闪退的问题"},{"version":"0.1.3","desc":"优化\n- 添加导入提示,兼容从PC端“全部数据”类型的备份文件中导入歌单\n- 添加全局异常错误捕获,现在一般情况下APP崩溃前会弹窗提示错误信息。"},{"version":"0.1.2","desc":"优化\n- 在搜索、歌单、排行榜列表多选音乐后点菜单中的播放将会把已选的歌曲添加到试听列表播放\n\n修复\n- 修复播放模块没拉取最新代码导致播放器存在无法从通知栏停止等问题"},{"version":"0.1.1","desc":"lx-music移动端v0.1.1版本发布 🎊 🎉"}]} +{"version":"1.4.2","desc":"我们发布了关于 LX Music Mod 项目发展调整与新项目计划的说明,\n详情看: https://github.com/lyswhut/lx-music-desktop/issues/1912\n\n修复\n- 修复数据存储管理在移除数据时可能出现移除失败的问题","history":[{"version":"1.4.1","desc":"我们发布了关于 LX Music Mod 项目发展调整与新项目计划的说明,\n详情看: https://github.com/lyswhut/lx-music-desktop/issues/1912\n\n修复\n- 修复播放详情页歌词滚动问题(#518)"},{"version":"1.4.0","desc":"我们发布了关于 LX Music Mod 项目发展调整与新项目计划的说明,\n详情看: https://github.com/lyswhut/lx-music-desktop/issues/1912\n\n新增\n- 新增 设置-基本设置-启动后打开播放详情界面 设置,默认关闭(#502 @mingcc7)\n\n修复\n- 修复重复的数据初始化调用\n- 修复导入歌单时可能会导致歌单数据存储异常的问题(#500)\n\n变更\n- 设置-播放设置-优先播放320k音质选项改为“优先播放的音质”,允许选择更高优先播放的音质,如果歌曲及音源支持的话(#487)\n\n其他\n- 更新 React native 到 v0.73.8"},{"version":"1.3.0","desc":"新增\n- 新增棕色主题“泥牛入海”\n- 新增设置-基本设置-总是保留状态栏高度设置,如果在你的设备上出现软件可交互内容与状态栏内容显示重叠的情况,可以启用该设置以始终为系统状态栏保留空间\n- 新增在线自定义源导入功能,允许通过http/https链接导入自定义源\n\n优化\n- 不再丢弃kg源逐行歌词(@helloplhm-qwq)\n- 支持kw源排行榜显示大小(revert @Folltoshe #1460)\n- 优化本地歌曲换源匹配机制\n\n修复\n- 修复mg歌词在某些情况下获取失败的问题\n- 修复mg歌单搜索(@helloplhm-qwq)\n- 修复kg最新评论无法获取的问题(@helloplhm-qwq)\n\n其他\n- 更新 React native 到 v0.73.6"},{"version":"1.2.0","desc":"提前祝大家新年快乐!\n\n新增\n- 新增自定义源(实验性功能),调用方式与PC端一致,但需要注意的是,移动端自定义源的环境与PC端不同,某些环境API不可用,详情看自定义说明文档\n- 新增长按收藏列表名自动跳转列表顶部的功能\n- 新增实验性的添加本地歌曲到我的收藏支持,与PC端类似,在我的收藏的列表菜单中选择歌曲目录,将添加所选目录下的所有歌曲,目前支持mp3/flac/ogg/wav等格式\n- 新增歌曲标签编辑功能,允许编辑本地源且文件存在的歌曲标签信息\n- 新增动态背景,启用后将使用当前播放歌曲封面做APP背景,默认关闭,可到设置-主题设置启用\n- 新增APP全局字体阴影,默认关闭,可到设置-主题设置启用\n- 新增启用竖屏首页横向滚动设置,默认开启(原来的行为),如果你不想要竖屏的首页左右滑动则可以关闭此设置(#397)\n- 新增“使用系统文件选择器”设置,默认启用,启用该选项后,导入备份文件、自定义源等操作将不需要申请存储权限,但可能在某些系统上不可用\n- 播放详情页新增桌面歌词显示/隐藏切换按钮,长按可切换歌词锁定状态\n- 我的列表菜单列表新增“新建列表”菜单\n- 我的列表菜单列表新增“排序歌曲”菜单,可以排序所选列表内的歌曲,排序功能与PC一致\n- 添加 墨·状态栏特别版(版本号包含`sl`)的 release 构建\n\n优化\n- 添加是否忽略电池优化检查,用于提醒用户添加白名单,确保APP后台播放稳定性\n- 在设置界面返回时,不再直接返回桌面,将回到进入设置界面前的界面,在非设置界面返回时才会返回桌面\n- 更新播放栏进度条样式,进度条允许拖动调整进度\n- 优化播放详情页歌曲封面、控制按钮对各尺寸屏幕的适配,修改横屏下的控制栏按钮布局\n- 优化横竖屏界面的展示判断,现在趋于方屏的屏幕按竖屏的方式显示,横屏下的播放栏添加上一曲切歌按钮\n- 添加对wy源某些歌曲有问题的歌词进行修复(#370)\n- 文件选择器允许选择外置存储设备上的路径,添加SD卡、USB存储等外置存储设备的读写支持\n- 图片显示改用第三方的图片组件,支持gif类型的图片显示,尝试解决某些设备上图片过多导致的应用崩溃问题\n- 歌曲评论内容过长时自动折叠,需手动展开\n- 改进本地音乐在线信息的匹配机制\n- 移除播放服务唤醒锁,解决APP在空闲时仍然处于唤醒状态的问题\n- 添加创建同名列表时的二次确认\n\n修复\n- 修复主题背景覆盖不全的问题\n- 修复清理缓存后查看日志时会导致APP崩溃的问题\n- 修复临时列表变更会意外触发同步的问题\n\n变更\n- 在更低版本的安卓上启用跟随系统亮暗主题功能(#317)\n- 由于歌曲评论的图片太大占用较多资源,评论图片不再直接加载,需要点击图片区域后再加载\n- 导入文件(歌单备份、自定义源文件等)默认不再需要设备存储权限,但如果这导致在你的设备上无法选择文件,则可以关闭基本设置的“使用系统文件选择器”设置,回退到原来的文件选择方式\n\n其他\n- 移除所有内置源,由于收到腾讯投诉要求停止提供软件内置的连接到他们平台的在线播放及下载服务,所以从即日(2023年10月18日)起LX本身不再提供上述服务\n- 更新许可协议的排版,使其看起来更加清晰明了,更新数据来源原理说明\n- 更新 React native 到 v0.73.3\n- 核心播放器从 ExoPlayer 迁移到 media3 v1.2.1"},{"version":"1.1.1","desc":"落雪提前祝大家中秋快乐~🥮😘!\n\n优化\n- 通过歌曲菜单添加不喜欢歌曲时需要二次确认防止手抖\n- 减慢歌词详情页歌词滚动速度\n- 更改应用窗口大小获取方式,尝试解决在某些设备上的背景、弹出菜单显示问题\n- 优化同步功能错误消息提示,因同步服务版本不匹配导致的连接失败现在将区分提示\n\n修复\n- 修复横屏状态下的歌词滚动位置计算问题\n- 修复切歌时歌词激活行的重置问题\n- 修复更新翻译歌词、罗马音歌词设置后需重启应用才生效的问题,现在更新设置后会立即生效\n\n其他\n- 更新 React native 到 v0.72.5"},{"version":"1.1.0","desc":"目前本项目的原始发布地址只有 **GitHub** 及 **蓝奏网盘** (在设置-关于有说明),其他渠道均为第三方转载发布,可信度请自行鉴别。\n\n本项目无微信公众号之类的官方账号,也未在小米、华为、vivo等应用商店发布应用,商店内的“LX Music Mod”、“洛雪音乐”相关的应用全部属于假冒应用,谨防被骗。\n\n本软件完全无广告且无引流(如需要加群、关注公众号之类才能使用或者升级)的行为,若你使用过程中遇到广告或者引流的信息,则表明你当前运行的软件是第三方修改版。\n\n若在升级新版本时提示签名不一致,则表明你手机上的旧版本或者将要安装的新版本中有一方是第三方修改版。\n\n若在升级新版本时提示无法降级安装,则表明你使用的是universal(通用)版安装包(安装包大小20M+),尝试使用arm64-v8a版安装包或者到GitHub下载其他版本安装包。\n\n该版本针对一加、OPPO、Pixel无法播放歌曲(提示音频加载出错,5 秒后切换下一首)或者无法完整播放歌曲的问题做了处理,但如果你使用该版本后问题依然存在,临时的解决方案是去设置-播放设置关闭“音频卸载”选项后完全重启应用\n\n不兼容性变更\n该版本修改了同步协议逻辑,同步功能至少需要PC端v2.4.0或移动端v1.1.0或同步服务v2.0.0版本才能连接使用\n\n新增\n- 新增列表设置-是否显示歌曲专辑名,默认关闭\n- 新增列表设置-是否显示歌曲时长,默认开启\n- 新增是否允许通过歌词调整播放进度功能,默认关闭,可到播放详情页右上角设置开启\n- 新增“不喜欢歌曲”功能,可以在我的列表或者在线列表内歌曲的右击菜单使用,还可以去“设置-其他”手动编辑不喜欢规则,注:“上一曲”、“下一曲”功能将跳过符合“不喜欢歌曲”规则的歌曲,但你仍可以手动播放这些歌曲\n- 新增同步功能对“不喜欢歌曲”列表的同步\n- 新增设置-播放设置-是否启用音频卸载,该设置之前默认是启用的,现在添加开关允许将其关闭,若出现播放器问题可尝试将其关闭\n- 新增设置-播放设置-自动清空已播放列表选项,默认关闭\n\n优化\n- 优化歌单列表歌单封面大小计算方式\n- 调整竖屏下的排行榜布局\n- 调整歌曲列表信息布局\n- 调整横屏下的歌曲列表为两列\n- 调整桌面歌词主题配色,增强歌词字体阴影(#276)\n- 优化数据传输逻辑,列表同步指令使用队列机制,保证列表同步操作的顺序\n- 暂停播放时播放详情歌词页不要自动滚动歌词回播放位置\n- 播放详情页歌词添加延迟滚动及着色动画\n- 优化息屏下的逻辑处理,尽量减少电量消耗\n\n修复\n- 修复wy歌单分类切换无效的问题\n- 修复因插入数字类型的ID导致其意外在末尾追加 .0 导致列表数据异常的问题,同时也可能导致同步数据丢失的问题(此问题会影响PC端,要完全修复这个问题还需要同时将PC端、同步服务更新到最新版本)\n- 修复在线列表、我的列表内的歌曲批量操作后,没有自动取消选择的问题\n- 修复tx热门评论昵称被错误切割的问题 (By: @helloplhm-qwq, @Folltoshe)\n- 修复wy源热搜词失效的问题(@Folltoshe)\n- 修复mg歌单搜索歌单播放数量显示问题\n- 修复搜索提示功能失效的问题(@Folltoshe)\n- 修复潜在导致列表数据不同步的问题\n- 修复kg无评论时的加载处理问题\n- 修复顺序播放时播放完列表的最后一首歌播放按钮状态没有更新的问题(#300)\n\n变更\n- 随机模式下,通过点击与播放列表相同的列表切歌时,将不再清空已播放列表,即已播放的歌曲不再重新参与随机,若想恢复之前的行为可以去设置-播放设置启用清空已播放列表选项\n\n其他\n- 更新 React native 到 v0.72.4"},{"version":"1.0.6","desc":"修复\n- 修复wy歌单分类切换无效的问题"},{"version":"1.0.5","desc":"优化\n- 增加kg歌单歌曲flac24bit显示(@helloplhm-qwq)\n- 增加tx源热门评论图片显示(@Folltoshe)\n- 支持wy热门评论翻页\n- 微调排行榜列表宽度及字体大小\n\n修复\n- 修复wy我喜欢列表使用token的方式导入,现在移动端可以使用token的方式导入我喜欢列表的音乐了,这意味着从PC端同步过来的歌单也可以在移动端上更新\n- 修复在线列表的多选问题\n- 修复mg搜索不显示时长的问题(@Folltoshe)\n- 修复mg评论加载失败的问题(@Folltoshe)\n- 修复在Android 5.1下报错的问题\n- 修复对存在错误时间标签的歌词的解析\n- 修复聚合搜索时未显示源名称的问题\n- 修复更改音源的列表歌曲颜色的实时更新问题\n\n其他\n- 更新kg、tx、wy等平台排行榜列表\n- 更新react native到v0.71.7"},{"version":"1.0.4","desc":"新增\n- 隐藏黑色主题背景设置,默认关闭,可以去设置-主题设置更改\n\n优化\n- 添加歌单分类、排行榜激活指示器\n- 调整设置界面竖屏下的UI布局\n\n修复\n- 修复歌单排序列表滚动重置问题\n- 修复搜索提示列表的显示时机问题\n- 就放tx源歌词获取失败的问题\n- 修复将播放速率调整为0.6后,再次打开设置面板将会导致app崩溃的问题\n- 修复播放详情页设置面板当前音量显示格式问题\n\n其他\n- 升级 React Native 到 v0.71.5"},{"version":"1.0.3","desc":"修复\n- 修复歌单详情页内歌曲最多只加载30首的问题"},{"version":"1.0.2","desc":"优化\n- 竖屏下的首页允许滑动切换页面(恢复v0.x.x的切页操作)\n- 优化更新语言、主题设置时的流畅度\n\n其他\n- 启用新架构"},{"version":"1.0.1","desc":"修复\n- 修复在线列表翻页问题"},{"version":"1.0.0","desc":"从v1.0.0起,我们发布了一个独立版的[数据同步服务](https://github.com/lyswhut/lx-music-sync-server#readme),如果你有服务器,可以将其部署到服务器上作为私人多端同步服务使用,详情看该项目说明\n\n由于该版本涉及旧版数据迁移,建议更新前先到设置-备份与恢复备份歌单\n\n不兼容性变更说明\n- 同步功能,该功能不支持与PC端v2.2.0之前的版本使用\n\n新增\n- 新增聚合搜索,注:由于这个方式需要对各个源的结果进行排序,所以需要以“歌曲名 歌手”的顺序输入(例如:突然的自我 伍佰),否则排序后的结果可能不是你想要的\n- 新增歌单搜索功能\n- 新增热门搜索显示,默认关闭,需要到设置-搜索设置开启\n- 新增搜索历史记录,默认关闭,需要到设置-搜索设置开启\n- 启动软件时自动回到上次的界面,例如上次退出软件时在我的收藏,下次启动软件时会自动进入我的收藏\n- 新增PC端所拥有的内置皮肤\n- 新增界面字体大小设置\n- 新增播放器音量大小设置,可以去播放详情页-播放器设置-音量大小更改\n- 新增播放器播放速率设置,可以去播放详情页-播放器设置-播放速率更改\n- 新增播放详情页歌词对齐方式设置,可以去播放详情页-播放器设置-歌词对齐方式更改\n- 新增是否在左侧导航栏显示返回桌面按钮设置,默认关闭,可以去设置-基本设置-是否显示返回桌面按钮开启\n- 新增是否在左侧导航栏显示退出应用按钮设置,默认关闭,可以去设置-基本设置-是否显示退出应用按钮开启\n- 支持wy源flac hires歌曲类型的显示\n- 添加kg源评论图片展示(@helloplhm-qwq)\n- 支持kg源搜索列表、排行榜flac hires歌曲类型的显示(@helloplhm-qwq, @Folltoshe)\n\n优化(界面/交互/功能)\n- 调整了首页的界面布局\n- 优化大屏幕下的字体大小及界面布局显示\n- 支持wy源flac hires歌曲类型的显示\n- 优化列表数据导入导出的性能,现在进行这些操作应该可以一下子完成且不会再冻结UI了\n- 支持kg源搜索列表flac hires歌曲类型的显示(@helloplhm-qwq)\n\n优化(程序)\n- 优化程序启动性能,优化与程序交互的流畅度\n- 重构整个程序,重新梳理了程序逻辑,使其更容易扩展及维护,将大部分代码从JavaScript迁移到TypeScript\n- 重写配置管理、列表管理功能,使其与PC端同步,更容易复用PC端的代码\n\n修复\n- 修复使用酷狗码无法打开某些类型的歌单的问题\n- 修复tx源某些歌单无法打开的问题\n\n变更\n- 原来播放详情页的歌词字体大小设置改为播放器设置\n\n其他\n- 升级React Native到v0.71.4"},{"version":"0.15.5","desc":"修复\n- 修复导入PC端v2列表文件歌曲信息转换丢失的问题\n- 修复上面问题导致的tx源评论加载失败的问题"},{"version":"0.15.4","desc":"修复\n- 修复播放详情页歌词翻译、罗马音歌词匹配问题"},{"version":"0.15.3","desc":"修复\n- 修复鸿蒙系统下的崩溃问题"},{"version":"0.15.2","desc":"修复\n- 修复潜在的歌词解析导致应用崩溃问题"},{"version":"0.15.1","desc":"修复\n- 修复某些歌曲的桌面歌词翻译或罗马音没有显示的问题\n- 修复kg某些歌单链接无法打开的问题"},{"version":"0.15.0","desc":"新增\n- 支持导入PC端v2版本的列表数据\n- 添加kg源罗马音歌词的支持\n- 支持打开波点音乐歌单(需在酷我源打开)\n\n修复\n- 支持单行多时间标签歌词解析,修复某些歌词会出现时间标签的问题\n- 修复某些类型的kg歌单无法导入的问题\n- 修复异常歌单、歌曲数据导致的崩溃问题(#157)\n\n其他\n- 升级react-native到 v0.68.5"},{"version":"0.14.3","desc":"修复\n- 修复因音源的域名到期导致的音源失效的问题"},{"version":"0.14.2","desc":"优化\n- 为tx、kw源添加 Flac 24bit 音质显示,注:由于之前没有记录此音质,所以之前收藏的歌曲信息中不包含它\n\n修复\n- 修复排行榜在旋转屏幕后,选中的榜单被重置回第一个的问题\n- 修复企鹅音乐搜索失效的问题"},{"version":"0.14.1","desc":"优化\n- 添加“弹出键盘时自动隐藏播放栏”设置,默认启用(原来的行为),若在某些设备上播放栏无法显示时则可以关闭此设置\n- 优化切歌时桌面歌词的切换动画显示\n- 暂停播放时自动隐藏桌面歌词\n- 在我的列表-列表名左侧添加了一个图标,以表示此处可以点击切换列表\n\n修复\n- 修复tx源搜索失效的问题"},{"version":"0.14.0","desc":"新增\n- 新增设置-桌面歌词-单行歌词设置,默认关闭,启用后只显示一行歌词,超出窗口宽度自动滚动到末尾\n- 新增设置-桌面歌词-显示歌词切换动画,默认启用,如果你觉得切换动画影响视觉可以将其关闭\n- 新增设置-基本设置-启动后自动播放音乐,默认关闭\n\n优化\n- 支持mg源的歌词翻译(之前添加的歌曲需要去设置清空缓存才会刷新歌词)\n- 添加歌曲列表更新操作的二次确认\n- 添加导入文件错误时的指引提示\n\n修复\n- 修复桌面歌词转繁体设置不立即生效的问题\n- 修复搜索、歌单、排行榜列表可能在切换新内容后出现上次列表内容的残留问题(#118)\n- 修复在某些系统上播放音乐会导致应用崩溃的问题(#129)\n- 修复停止播放后的播放器状态清理问题\n\n文档\n移动版文档已迁移到:"},{"version":"0.13.0","desc":"从这个版本起,你可以将桌面歌词拖动到状态栏上,然后将歌词字体调小后配合新增的歌词窗口宽度、行数设置,模拟出类似状态栏歌词的效果。\n\n如果你的设备装有Xposed框架,可以使用状态栏版(详情看GitHub置顶issue),它通过调用第三方Xposed模块【墨•状态栏歌词】的API支持来状态栏歌词(感谢@ftevxk)。\n但考虑到要依赖第三方应用,并且是Xposed模块,预计用的人会比较少,所以暂不考虑将此特性包含在正式版中。\n\n新增\n- 新增设置-播放设置-显示歌词罗马音,默认关闭,注:目前只有网易源能获取到罗马音歌词(得益于 Binaryify/NeteaseCloudMusicApi/pull/1523),如果你知道其他源的歌词罗马音获取方式,欢迎PR或开issue交流!\n- 新增黑、白桌面歌词主题\n- 桌面歌词新增窗口宽度百分比、最大歌词行数调整设置,允许将歌词拖动到刘海屏状态栏上。提示:有了这组功能你就可以模拟状态栏歌词了\n- 新增设置-播放设置-将播放的歌词转繁体功能(#114)\n\n优化\n- 允许桌面歌词拖动到状态栏上(感谢@ftevxk)\n- 允许选择更新日志弹窗里的文本内容\n- 桌面歌词的最大字体大小允许调整到500(#107)\n\n修复\n- 修复潜在的桌面歌词导致应用崩溃问题\n\n文档\n- 将歌曲添加“稍后播放”后,它们会被放在一个优先级最高的特殊队列中,点击“下一曲”时会消耗该队列中的歌曲,并且无法通过“上一曲”功能播放该队列的上一首歌曲\n- 在切歌时若不是通过“上一曲”、“下一曲”功能切歌(例如直接点击“排行榜列表”、“我的列表”中的歌曲切歌),“稍后播放”队列将会被清空\n\n其他\n- 升级React native到v0.68.2"},{"version":"0.12.0","desc":"新增\n- 为搜索、歌单、排行榜的歌曲菜单添加分享“分享歌曲”按钮\n- 新增设置-基本设置-分享设置,它用于控制歌曲菜单的分享行为,默认使用系统分享\n- 新增是否在通知栏显示歌曲图片设置,默认开启(原来的行为)\n- 新增黑色皮肤“黑灯瞎火”\n- 新增设置-基本设置-主题颜色-跟随系统亮、暗模式切换主题设置,注:此设置需要android 10或ios 13及以上的版本才支持\n\n优化\n- 现在即使切歌模式处于单曲循环、顺序播放、禁用时,手动切歌将会按照列表循环的规则处理(#69)\n- 添加定时退出计时结束后的提示\n\n修复\n- 修复wy源搜索某些歌曲时第一页之后的歌曲无法加载的问题\n- 每次启动时过滤无效的歌曲\n- 修复换源失败时的处理问题\n- 修复非循环模式下播放结束后的状态显示问题及无法重新播放的问题(#104)\n- 修复定时退出可能导致崩溃的问题\n- 修复播放详情页歌词界面在把应用切到后台再切回来会导致屏幕常亮失效的问题\n\n变更\n- 歌曲菜单的“复制歌曲名”改为“分享歌曲”,点击后可以选择第三方应用分享歌曲详情页链接\n- 已存在目录列表的歌曲再次添加时将不会变成移除\n\n其他\n- 升级react-native到 v0.68.1"},{"version":"0.11.1","desc":"修复\n- 修复播放栏在某些设备不显示的问题"},{"version":"0.11.0","desc":"新增\n- 新增“点击列表里的歌曲时自动切换到当前列表播放”设置,此功能仅对歌单、排行榜有效,默认关闭\n- 添加试听接口,这是测试接口、临时接口都不可用时最后的选择...\n\n优化\n- 过滤tx源某些不支持播放的歌曲,解决播放此类内容会导致意外的问题\n- 备份与恢复兼容单个列表文件的导入\n- 添加通知权限的检查提醒,点击“不再提示”后,将会在设置-清空缓存后才会恢复提示\n\n修复\n- 修复Android 12下的桌面歌词锁定后还是无法在应用外点击歌词后面下面的内容的问题\n\n其他\n- 升级React native到v0.67.4"},{"version":"0.10.3","desc":"优化\n- 优化kw源英文与翻译歌词的匹配\n\n修复\n- 修复桌面歌词播放器会导致应用崩溃的问题"},{"version":"0.10.2","desc":"修复\n- 修复某些系统下的虚拟导航栏会导致播放栏隐藏的问题(react-native v0.67.x导致的)\n\n其他\n- 降级react-native到 v0.66.4"},{"version":"0.10.1","desc":"优化\n- 优化通知栏的更新机制,尝试修复魅族的通知栏图片不显示的问题\n- 我的列表-列表名的右击菜单更新已收藏的在线列表时,将始终重新加载,不再使用缓存,解决在原平台更新歌单后,在LX点击更新可能看到的还是在原平台更新前的歌单的问题\n\n修复\n- 修复tx源无搜索结果的问题\n- 修复小米等设备下面的手势提示线背景颜色为黑色的问题\n\n其他\n- 升级React native到v0.67.1"},{"version":"0.10.0","desc":"新增\n- 同步功能新增对列表位置调整的支持(需v1.15.3以上的PC端版本才支持)\n- 新增播放详情页歌词字体大小调整设置,可在详情页右上角的按钮进行调整\n- 新增同步服务地址历史列表功能\n- 横屏播放详情页新增评论入口\n- 我的列表歌曲三个点的菜单新增复制歌曲名\n\n优化\n- 修改对播放模块的调用,杜绝应用显示正在播放的歌曲与实际播放歌曲不一致的问题(这是播放模块歌曲队列与应用内歌曲队列在某些情况下出现不一致时导致的)\n- 支持PC端同步功能添加对列表顺序调整的控制,确保手动调整位置后的列表与不同的电脑同步时,列表位置不会被还原\n- 调整横屏下的导航栏、播放详情页布局,提高屏幕空间利用率并使其更易操作\n- 调整歌单类别、我的列表弹出层界面\n- 播放栏移除上一曲按钮,将多出来的空间加给播放、下一曲按钮\n- 现在点击、长按播放栏歌曲标题也可以进入详情页、定位当前播放歌曲了\n\n修复\n- 修复kw源某些歌曲的歌词提取异常的问题\n\n其他\n- 升级react-native到v0.66.4"},{"version":"0.9.2","desc":"优化\n- 添加应用初始化出错时的错误捕获输出\n- 优化歌词自动换源机制\n\n修复\n- 修复因kw源歌词接口停用导致该源歌词获取失败的问题\n\n其他\n- 更新react-native到v0.66.3\n- 更新Exoplayer到v2.16.0"},{"version":"0.9.1","desc":"修复\n- 修复删除列表时会导致应用崩溃的问题\n- 修复原生代码导致的错误日志记录"},{"version":"0.9.0","desc":"新增\n- 新增歌曲评论显示,可在播放详情页进入。(与PC端一样,目前仅支持显示部分评论)\n- 新增播放、收藏整个排行榜功能,可长按排行榜名字后在弹出的菜单中操作\n- 新增单个列表导入/导出功能,可以方便分享歌曲列表,可在点击“我的列表”里的列表名右侧的按钮后弹出的菜单中使用\n- 新增删除列表前的确认弹窗,防止误删列表\n\n优化\n- 添加更多同步功能的日志记录\n\n修复\n- 修复kg源的歌单链接无法打开的问题\n- 修复同一首歌的URL、歌词等同时需要换源时的处理问题\n- 修复在排行榜页面无法时无法通过点击我的列表图标切换到我的列表的问题\n\n其他\n- 更新react-native到v0.66.1"},{"version":"0.8.3","desc":"修复\n- 修复我的列表搜索无法搜索小括号、中括号等字符,并会导致应用崩溃的问题\n- 修复使用同步功能同步完成后,列表没有被保存,导致下次再连接同步时被同步新增的歌曲被移除的问题(此问题由v0.8.2的存储切片改造引入的)\n\n其他\n- 更新React native到v0.66.0"},{"version":"0.8.2","desc":"优化\n- 缓冲进度条颜色\n- 优化数据存储,若需要存储的数据过大时会将数据切片后存储,现在存储大列表不会导致列表丢失了\n\n修复\n- 修复随机播放模式下在同列表切其他歌曲不会清空已播放列表的问题\n- 修复歌曲播放出错时的URL刷新问题"},{"version":"0.8.1","desc":"优化\n- 添加更多错误信息的记录\n\n修复\n- 修复潜在的获取缓存大小报错问题\n- 修复mg排行榜无法加载的问题\n- 修复列表导出失败时的提示信息缺失翻译的问题\n- 修复 Android 11 导入列表时,不显示备份文件的问题\n- 修复其他应用播放声音时,软件临时暂停播放后通知栏的状态仍显示正在播放的问题"},{"version":"0.8.0","desc":"新增\n- 添加对通知栏歌曲进度条的支持\n\n修复\n- 修复某些情况下桌面歌词会导致APP崩溃的问题\n- 修复从电脑浏览器复制的企鹅歌单链接无法打开的问题\n\n其他\n- 升级React native到v0.65.1\n- 升级播放模块`react-native-track-player`到v2版本,优化通知栏歌曲信息显示逻辑"},{"version":"0.7.1","desc":"修复\n- 修复无法从歌单界面打开网易歌单详情的问题"},{"version":"0.7.0","desc":"如果你喜欢并经常使用洛雪音乐,并想要第一时间尝鲜洛雪的新功能,可以加入测试企鹅群768786588,\n注意:测试版的功可能会不稳定,打算潜水的勿加。\n\n新增\n- 新增横屏状态下的播放详情页\n- 新增橙、粉、灰主题色\n- 新增桌面歌词的字体大小、透明度设置\n- 新增我的列表内歌曲搜索定位功能\n\n调整\n- 为了与搜索、歌单操作栏位置统一,现将我的列表-收藏的列表操作栏由底部挪到顶部\n\n修复\n- 修复tx源的歌词无法显示的问题\n- 修复随机播放模式下使用稍后播放功能会导致歌曲单曲循环的问题\n- 修复某些情况下桌面歌词会导致APP崩溃的问题"},{"version":"0.6.2","desc":"优化\n- 优化设置界面的输入框输入机制,现在只要键盘收起即可自动保存输入的内容\n- 添加在启用桌面歌词时对悬浮层权限的检查,这应该可以修复某些设备上点击启用桌面歌词时不显示无权限弹窗也不显示桌面歌词的情况\n\n变更\n- 不再自动聚焦定时退出、调整位置弹窗内的输入框,这应该可以修复某些设备无法在这两个地方弹出键盘的问题\n\n修复\n- 修复启用桌面歌词时的权限提示弹窗会导致应用报错的问题\n- 修复我的列表无法更新从收藏的排行榜的问题"},{"version":"0.6.1","desc":"修复\n- 修复随机播放下无法切歌的问题"},{"version":"0.6.0","desc":"新增\n- 新增局域网同步功能(实验性,首次使用前建议先备份一次列表),此功能需要配合PC端使用,移动端与PC端处在同一个局域网(路由器的网络)下时,可以多端实时同步歌曲列表,使用问题请看\"常见问题\"。\n- 新增桌面歌词\n\n优化\n- 优化退出应用的机制,现在在需要退出应用的场景将会完全退出应用\n\n修复\n- 修复某些情况下出现恢复播放信息失败的问题\n- 修复删除列表中正在播放的歌曲时会自动跳到第一首的问题\n- 修复因其他应用需要播放声音而暂停播放音乐时歌词不会暂停播放导致恢复播放后歌词与播放进度不一致的问题"},{"version":"0.5.3","desc":"修复\n- 修复歌曲缓存失效的问题"},{"version":"0.5.2","desc":"优化\n- 优化mg源打开歌单的链接兼容\n\n修复\n- 修复单曲循环播放时循环次数为偶数时歌词不重新播放的问题\n- 添加针对进入歌词界面时某些情况下会弹出`scrollToIndex out of range: requested index ...`崩溃错误弹窗的处理\n- 修复导入kg歌单最多只能加载100、500首歌曲的问题。注:现在可以加载1000+首歌曲的歌单,但出于未知原因会导致部分歌曲无法加载(可能是无版权导致的),目前酷狗码仍然最多只能加载500首歌"},{"version":"0.5.1","desc":"优化\n- 添加切换播放模式时的文字提示\n- 优化单首歌曲的添加弹窗操作,当选择当前歌曲已存在目标列表时(列表名灰色显示),会将当前歌曲从目标列表移除,否则将当前歌曲添加到目标列表,添加在弹窗内对歌曲的添加、移动、删除操作时的文字提示\n\n修复\n- 修复mg源搜索失效的问题\n\n移除\n- 因wy源的歌单列表已没有“最新”排序的选项,所以现跟随移除wy源歌单列表按“最新”排序的按钮"},{"version":"0.5.0","desc":"新增\n- 新增“其他应用播放声音时,自动暂停播放”设置,默认开启\n- 新增“添加歌曲到列表时的位置”设置,可选项为列表的“顶部”与“底部”\n- 新增“显示歌词翻译设置”,默认关闭\n\n变更\n- 添加歌曲到列表时从原来的底部改为顶部,若想要恢复原来的行为则可以去更改“添加歌曲到列表时的位置”设置项"},{"version":"0.4.2","desc":"优化\n- 优化wy源歌单导入匹配,现在存在链接外的其他字符也可以打开歌单了\n\n修复\n- 修复定时播放开启歌曲播放完毕再停止时,若倒计时已结束会导致无法播放歌曲的问题\n- 修复打开歌单失败时会导致应用崩溃的问题\n- 修复打开kw歌单失败时会无限重试的问题\n- 尝试修复弹出菜单、列表位置不正确的问题\n- 修复打开kg源歌单链接失败的问题\n- 尝试修复有时候进入播放详情歌词界面时会导致应用UI被冻结的问题\n- 修复有时候进入播放详情页时歌曲封面大小显示不正确的问题"},{"version":"0.4.1","desc":"修复\n- 修复定时播放开启歌曲播放完毕再停止时,若倒计时已结束会导致无法播放歌曲的问题"},{"version":"0.4.0","desc":"新增\n- 新增我的列表中已收藏的在线列表的更新功能。注意:这将会覆盖本地的目标列表,歌曲将被替换成最新的在线列表(与PC端的同步一样)\n- 歌曲添加、移动弹窗新增创建新列表功能\n- 新增定时退出播放\n\n优化\n- 优化应用布局对手机系统字体大小的适配\n- 调整歌单详情页,现在在歌单详情页按手机上的返回键将会返回歌单列表,而不是直接退出APP\n- 优化进入播放详情页、歌单详情页的动画效果\n\n修复\n- 尝试修复某些情况下进播放详情歌词界面时报错的问题"},{"version":"0.3.3","desc":"修复\n- 尝试修复软件启动时恢复上一次播放的歌曲可能导致软件崩溃的问题\n- 尝试修复播放详情页歌词导致UI冻结的问题\n- 修复企鹅音乐搜索歌曲没有结果的问题\n\n其他\n- 整合日志记录\n- 更新 exoPlayer 到 2.14.0"},{"version":"0.3.2","desc":"修复\n- 修复手机分享的wy歌单、某些tx、kg歌单无法打开的问题\n- 修复打开空的歌单时,点击播放全部会导致应用崩溃的问题\n- 修复企鹅音乐搜索歌曲没有结果的问题"},{"version":"0.3.1","desc":"修复\n- 修复进入播放详情歌词界面后的屏幕常亮不会被取消的问题"},{"version":"0.3.0","desc":"新增\n- 新增通过歌单链接打开歌单的功能\n\n优化\n- 切换到播放详情歌词界面时将阻止屏幕息屏\n\n修复\n- 修复一个导致崩溃日志写入文件前会导致APP崩溃的莫名其妙问题"},{"version":"0.2.0","desc":"新增\n- 新增竖屏下的播放详情页"},{"version":"0.1.7","desc":"优化\n- 修改歌单导入流程,添加对歌单导入错误的捕获\n\n修复\n- 修复在系统暗主题下,应用内文字输入框的字体会变成白色的问题"},{"version":"0.1.6","desc":"优化\n- 改进软件错误处理,添加对软件崩溃的错误日志记录,可在设置-其他查看错误日志历史。注:清理缓存时日志也将会被清理\n\n修复\n- 修复显示版本更新弹窗会导致应用崩溃的问题"},{"version":"0.1.5","desc":"修复\n- 修复修复协议弹窗可以被绕过的问题\n- 修复从在线列表使用稍后播放功能播放歌曲时,歌曲封面不显示的问题\n- 修复正在播放“稍后播放”的歌曲时,对“稍后播放”前播放的列表进行添加、删除操作会导致切歌的问题"},{"version":"0.1.4","desc":"修复\n- 修复获取在线列表时快速切换会导致APP闪退的问题"},{"version":"0.1.3","desc":"优化\n- 添加导入提示,兼容从PC端“全部数据”类型的备份文件中导入歌单\n- 添加全局异常错误捕获,现在一般情况下APP崩溃前会弹窗提示错误信息。"},{"version":"0.1.2","desc":"优化\n- 在搜索、歌单、排行榜列表多选音乐后点菜单中的播放将会把已选的歌曲添加到试听列表播放\n\n修复\n- 修复播放模块没拉取最新代码导致播放器存在无法从通知栏停止等问题"},{"version":"0.1.1","desc":"lx-music移动端v0.1.1版本发布 🎊 🎉"}]} diff --git a/src/config/constant.ts b/src/config/constant.ts index 284274a..61905e6 100644 --- a/src/config/constant.ts +++ b/src/config/constant.ts @@ -94,7 +94,7 @@ export const storageDataPrefixOld = { notificationTipEnable: '@notification_tip_enable', } as const -export const APP_PROVIDER_NAME = 'cn.toside.music.mobile.provider' +export const APP_PROVIDER_NAME = 'com.ikunshare.music.mobile.provider' export const NAV_MENUS = [ diff --git a/src/lang/en_us.json b/src/lang/en_us.json index 77096d7..e9a206a 100644 --- a/src/lang/en_us.json +++ b/src/lang/en_us.json @@ -45,7 +45,7 @@ "duplicate_list_tip": "You have previously favorited the list [{name}], do you want to update the songs?", "edit_metadata": "Edit tag", "exit_app_tip": "Are you sure you want to quit the app?", - "ignoring_battery_optimization_check_tip": "LX Music is not on the list of ignored battery optimization, which may cause the problem of being suspended by the system when playing music in the background. Do you want to add LX Music to the whitelist?", + "ignoring_battery_optimization_check_tip": "LX Music Mod is not on the list of ignored battery optimization, which may cause the problem of being suspended by the system when playing music in the background. Do you want to add LX Music Mod to the whitelist?", "ignoring_battery_optimization_check_title": "Background running permission setting reminder", "input_error": "Don't input indiscriminately 😡", "list_add_btn_title": "Add the song(s) to {name}", @@ -159,7 +159,7 @@ "nav_top": "Leaderboard", "never_show": "Never show again", "no_item": "The list is empty...", - "notifications_check_tip": "You have not allowed LX Music to display notifications, or the Music Service in the LX Music notification settings has been disabled, which will prevent you from using the notification bar to pause, switch songs, etc. Do you want to enable it?", + "notifications_check_tip": "You have not allowed LX Music Mod to display notifications, or the Music Service in the LX Music Mod notification settings has been disabled, which will prevent you from using the notification bar to pause, switch songs, etc. Do you want to enable it?", "notifications_check_title": "Notification permission reminder", "ok": "OK", "open_storage_error_tip": "The entered path is illegal", @@ -218,7 +218,7 @@ "setting__other_other_source_clear_btn": "Clear the source song cache", "setting__other_other_source_label": "Change source song information quantity:", "setting__other_resource_cache": "Resource Cache Management", - "setting_about": "About LX Music", + "setting_about": "About LX Music Mod", "setting_backup": "Backup and Recovery", "setting_backup_all": "All data (list data and setting data)", "setting_backup_all_export": "Export", @@ -256,7 +256,7 @@ "setting_basic_font_size_130": "Very big", "setting_basic_font_size_80": "smaller", "setting_basic_font_size_90": "Small", - "setting_basic_font_size_preview": "LX Music Font Size Preview", + "setting_basic_font_size_preview": "LX Music Mod Font Size Preview", "setting_basic_home_page_scroll": "Enable horizontal scrolling on the vertical home page", "setting_basic_lang": "Language", "setting_basic_share_type": "Share", @@ -297,7 +297,7 @@ "setting_list_click_action": "When you click a song in the list, it will automatically switch to the current list for playback (only valid for playlists and leaderboards)", "setting_list_show interval": "Show song duration", "setting_list_show_album_name": "Show song album name", - "setting_lyric_dektop_permission_tip": "The desktop lyrics function needs to be granted the permission of LX Music to display the floating window in the system permission setting before it can be used. Do you go to the relevant interface to grant this permission?", + "setting_lyric_dektop_permission_tip": "The desktop lyrics function needs to be granted the permission of LX Music Mod to display the floating window in the system permission setting before it can be used. Do you go to the relevant interface to grant this permission?", "setting_lyric_desktop": "Desktop lyrics", "setting_lyric_desktop_enable": "Show desktop lyrics", "setting_lyric_desktop_lock": "Lock lyrics", diff --git a/src/lang/zh_cn.json b/src/lang/zh_cn.json index 446551c..4551bee 100644 --- a/src/lang/zh_cn.json +++ b/src/lang/zh_cn.json @@ -45,7 +45,7 @@ "duplicate_list_tip": "你之前已收藏过该列表 [{name}],是否需要更新里面的歌曲?", "edit_metadata": "编辑标签", "exit_app_tip": "确定要退出应用吗?", - "ignoring_battery_optimization_check_tip": "LX Music没有在忽略电池优化的名单中,这可能会导致在后台播放音乐时被系统暂停的问题,是否将LX Music加入该白名单中?", + "ignoring_battery_optimization_check_tip": "LX Music Mod没有在忽略电池优化的名单中,这可能会导致在后台播放音乐时被系统暂停的问题,是否将LX Music Mod加入该白名单中?", "ignoring_battery_optimization_check_title": "后台运行权限设置提醒", "input_error": "不要乱输好吧😡", "list_add_btn_title": "把该歌曲添加到 {name}", @@ -159,7 +159,7 @@ "nav_top": "排行榜", "never_show": "不再提醒", "no_item": "列表竟然是空的...", - "notifications_check_tip": "你没有允许LX Music显示通知,或LX Music通知设置里的Music Service通知被禁用,这将无法使用通知栏进行暂停、切歌等操作,是否去开启?", + "notifications_check_tip": "你没有允许LX Music Mod显示通知,或LX Music Mod通知设置里的Music Service通知被禁用,这将无法使用通知栏进行暂停、切歌等操作,是否去开启?", "notifications_check_title": "通知权限提醒", "ok": "我知道了", "open_storage_error_tip": "输入的路径不合法", @@ -256,7 +256,7 @@ "setting_basic_font_size_130": "非常大", "setting_basic_font_size_80": "较小", "setting_basic_font_size_90": "小", - "setting_basic_font_size_preview": "LX Music 字体大小预览", + "setting_basic_font_size_preview": "LX Music Mod 字体大小预览", "setting_basic_home_page_scroll": "启用竖屏首页横向滚动", "setting_basic_lang": "语言", "setting_basic_share_type": "分享方式", @@ -270,8 +270,7 @@ "setting_basic_source_status_failed": "初始化失败", "setting_basic_source_status_initing": "初始化中", "setting_basic_source_status_success": "初始化成功", - "setting_basic_source_temp": "临时接口(软件的某些功能不可用,建议测试接口不可用再使用本接口)", - "setting_basic_source_test": "测试接口(几乎软件的所有功能都可用)", + "setting_basic_source_ikun": "ikun公益音源(几乎软件的所有功能都可用)", "setting_basic_source_title": "选择音乐来源", "setting_basic_source_user_api_btn": "自定义源管理", "setting_basic_sourcename": "音源名字", @@ -297,7 +296,7 @@ "setting_list_click_action": "点击列表里的歌曲时自动切换到当前列表播放(仅对歌单、排行榜有效)", "setting_list_show interval": "显示歌曲时长", "setting_list_show_album_name": "显示歌曲专辑名", - "setting_lyric_dektop_permission_tip": "桌面歌词功能需要在系统权限设置中授予LX Music显示悬浮窗口的权限才能使用,是否去相关界面授予此权限?", + "setting_lyric_dektop_permission_tip": "桌面歌词功能需要在系统权限设置中授予LX Music Mod显示悬浮窗口的权限才能使用,是否去相关界面授予此权限?", "setting_lyric_desktop": "桌面歌词", "setting_lyric_desktop_enable": "显示桌面歌词", "setting_lyric_desktop_lock": "锁定歌词", diff --git a/src/navigation/components/PactModal.tsx b/src/navigation/components/PactModal.tsx index 3998165..44ae348 100644 --- a/src/navigation/components/PactModal.tsx +++ b/src/navigation/components/PactModal.tsx @@ -16,7 +16,7 @@ const Content = () => { const theme = useTheme() const openHomePage = () => { - void openUrl('https://github.com/lyswhut/lx-music-mobile#readme') + void openUrl('https://github.com/ikunshare/lx-music-mobile#readme') } const openLicensePage = () => { void openUrl('http://www.apache.org/licenses/LICENSE-2.0') @@ -33,6 +33,8 @@ const Content = () => { 许可协议 + ** 此版本非洛雪音乐助手LX Music官方发布,请勿在官方的Github Issue询问问题 ** + 本项目(软件)基于 Apache License 2.0 许可证发行,在使用本软件前,你(使用者)需签署本协议才可继续使用,以下协议是对于 Apache License 2.0 的补充,如有冲突,以以下协议为准。{'\n'} 词语约定:本协议中的“本软件”指洛雪音乐移动版项目;“使用者”指签署本协议的使用者;“官方音乐平台”指对本软件内置的包括酷我、酷狗、咪咕等音乐源的官方平台统称;“版权数据”指包括但不限于图像、音频、名字等在内的他人拥有所属版权的数据。{'\n'} 一、数据来源 diff --git a/src/screens/Home/Horizontal/Aside.tsx b/src/screens/Home/Horizontal/Aside.tsx index beecfc1..f043282 100644 --- a/src/screens/Home/Horizontal/Aside.tsx +++ b/src/screens/Home/Horizontal/Aside.tsx @@ -70,7 +70,7 @@ const Header = () => { - {/* LX Music */} + {/* LX Music Mod */} ) diff --git a/src/screens/Home/Vertical/DrawerNav.tsx b/src/screens/Home/Vertical/DrawerNav.tsx index 0c1a2aa..d370ce4 100644 --- a/src/screens/Home/Vertical/DrawerNav.tsx +++ b/src/screens/Home/Vertical/DrawerNav.tsx @@ -64,7 +64,7 @@ const Header = () => { - LX Music + LX Music Mod ) diff --git a/src/screens/Home/Views/Setting/settings/About.tsx b/src/screens/Home/Views/Setting/settings/About.tsx index 98798af..b560fcc 100644 --- a/src/screens/Home/Views/Setting/settings/About.tsx +++ b/src/screens/Home/Views/Setting/settings/About.tsx @@ -11,43 +11,28 @@ import { useI18n } from '@/lang' import Text from '@/components/common/Text' import { showPactModal } from '@/core/common' -const qqGroupUrl = 'mqqopensdkapi://bizAgent/qm/qr?url=http%3A%2F%2Fqm.qq.com%2Fcgi-bin%2Fqm%2Fqr%3Ffrom%3Dapp%26p%3Dandroid%26jump_from%3Dwebapi%26k%3Du1zyxek8roQAwic44nOkBXtG9CfbAxFw' -// const qqGroupUrl2 = 'mqqopensdkapi://bizAgent/qm/qr?url=http%3A%2F%2Fqm.qq.com%2Fcgi-bin%2Fqm%2Fqr%3Ffrom%3Dapp%26p%3Dandroid%26jump_from%3Dwebapi%26k%3D-l4kNZ2bPQAuvfCQFFhl1UoibvF5wcrQ' -const qqGroupWebUrl = 'https://qm.qq.com/cgi-bin/qm/qr?k=jRZkyFSZ4FmUuTHA3P_RAXbbUO_Rrn5e&jump_from=webapi' -// const qqGroupWebUrl2 = 'https://qm.qq.com/cgi-bin/qm/qr?k=HPNJEfrZpBZ9T8szYWbe2d5JrAAeOt_l&jump_from=webapi' +const qqGroupUrl = 'mqqopensdkapi://bizAgent/qm/qr?url=http%3A%2F%2Fqm.qq.com%2Fcgi-bin%2Fqm%2Fqr%3Ffrom%3Dapp%26p%3Dandroid%26jump_from%3Dwebapi%26k%3D14NOEp349EcTVThmPTk-Eo5VyCU0aWK9' + +const qqGroupWebUrl = 'https://qm.qq.com/q/5D1prW18n6' export default memo(() => { const theme = useTheme() const t = useI18n() const openHomePage = () => { - void openUrl('https://github.com/lyswhut/lx-music-mobile#readme') + void openUrl('https://github.com/ikunshare/lx-music-mobile-mod#readme') } const openNetdiskPage = () => { - void openUrl('https://www.lanzoui.com/b0bf2cfa/') + void openUrl('https://www.lanzoui.com/s/LXMusic') } const openFAQPage = () => { void openUrl('https://lyswhut.github.io/lx-music-doc/mobile/faq') } - // const openIssuesPage = () => { - // openUrl('https://github.com/lyswhut/lx-music-mobile/issues') - // } - const openPactModal = () => { - showPactModal() - } - const openPartPage = () => { - void openUrl('https://github.com/lyswhut/lx-music-mobile#%E9%A1%B9%E7%9B%AE%E5%8D%8F%E8%AE%AE') - } const goToQQGroup = () => { openUrl(qqGroupUrl).catch(() => { void openUrl(qqGroupWebUrl) }) } - // const goToQQGroup2 = () => { - // openUrl(qqGroupUrl2).catch(() => { - // void openUrl(qqGroupWebUrl2) - // }) - // } const textLinkStyle = { ...styles.text, @@ -62,13 +47,13 @@ export default memo(() => { 本软件完全免费,代码已开源,开源地址: - https://github.com/lyswhut/lx-music-mobile + https://github.com/ikunshare/lx-music-mobile-mod 最新版网盘下载地址: - 网盘地址(密码:glqw) + 网盘地址(密码:LXMusicMod) @@ -80,9 +65,9 @@ export default memo(() => { 本软件没有客服,但我们整理了一些常见的使用问题,仔细 仔细 仔细 地阅读常见问题后, 仍有问题可加企鹅群 - 830125506 + 690309707 反馈。 - 注意:为免满人,无事勿加,入群先看群公告 + 注意:为了群主+管理的寿命,入群先看群公告 目前本项目的原始发布地址只有GitHub蓝奏网盘,其他渠道均为第三方转载发布,可信度请自行鉴别。 @@ -93,16 +78,6 @@ export default memo(() => { 由于软件开发的初衷仅是为了对新技术的学习与研究,因此软件直至停止维护都将会一直保持纯净。 - - 你已签署本软件的 - 许可协议 - ,协议的在线版本在 - 这里 - - - By: - 落雪无痕 - ) }) diff --git a/src/utils/musicSdk/api-source-info.ts b/src/utils/musicSdk/api-source-info.ts index e75e352..cc8bb2a 100644 --- a/src/utils/musicSdk/api-source-info.ts +++ b/src/utils/musicSdk/api-source-info.ts @@ -6,6 +6,18 @@ const sources: Array<{ disabled: boolean supportQualitys: Partial> }> = [ + { + id: 'ikun', + name: 'ikun公益音源', + disabled: false, + supportQualitys: { + kw: ['128k', '320k', 'flac', 'flac24bit'], + kg: ['128k', '320k', 'flac', 'flac24bit'], + tx: ['128k', '320k', 'flac', 'flac24bit'], + wy: ['128k', '320k', 'flac', 'flac24bit'], + mg: ['128k', '320k', 'flac', 'flac24bit'], + }, + }, ] -export default sources +export default sources \ No newline at end of file diff --git a/src/utils/musicSdk/api-source.js b/src/utils/musicSdk/api-source.js index 64f8b4a..cc64c6d 100644 --- a/src/utils/musicSdk/api-source.js +++ b/src/utils/musicSdk/api-source.js @@ -1,47 +1,23 @@ import apiSourceInfo from './api-source-info' - -// import temp_api_kw from './kw/api-temp' -// import test_api_kg from './kg/api-test' -// import test_api_kw from './kw/api-test' -// import test_api_tx from './tx/api-test' -// import test_api_wy from './wy/api-test' -// import test_api_mg from './mg/api-test' - -// import direct_api_kg from './kg/api-direct' -// import direct_api_kw from './kw/api-direct' -// import direct_api_tx from './tx/api-direct' -// import direct_api_wy from './wy/api-direct' -// import direct_api_mg from './mg/api-direct' - +import ikun_api_kg from './kg/api-ikun' +import ikun_api_kw from './kw/api-ikun' +import ikun_api_tx from './tx/api-ikun' +import ikun_api_wy from './wy/api-ikun' +import ikun_api_mg from './mg/api-ikun' import settingState from '@/store/setting/state' const apiList = { - // temp_api_kw, - // // test_api_bd: require('./bd/api-test'), - // test_api_kg, - // test_api_kw, - // test_api_tx, - // test_api_wy, - // test_api_mg, - // direct_api_kg, - // direct_api_kw, - // direct_api_tx, - // direct_api_wy, - // direct_api_mg, - // test_api_tx: require('./tx/api-test'), - // test_api_wy: require('./wy/api-test'), - // test_api_xm: require('./xm/api-test'), + ikun_api_kg, + ikun_api_kw, + ikun_api_tx, + ikun_api_wy, + ikun_api_mg, } const supportQuality = {} for (const api of apiSourceInfo) { supportQuality[api.id] = api.supportQualitys - // for (const source of Object.keys(api.supportQualitys)) { - // const path = `./${source}/api-${api.id}` - // console.log(path) - // apiList[`${api.id}_api_${source}`] = path - // } } const getAPI = source => apiList[`${settingState.setting['common.apiSource']}_api_${source}`] diff --git a/src/utils/musicSdk/bd/hotSearch.js b/src/utils/musicSdk/bd/hotSearch.js deleted file mode 100644 index 5a9cbf2..0000000 --- a/src/utils/musicSdk/bd/hotSearch.js +++ /dev/null @@ -1,23 +0,0 @@ -import { httpFetch } from '../../request' - -export default { - _requestObj: null, - async getList(retryNum = 0) { - if (this._requestObj) this._requestObj.cancelHttp() - if (retryNum > 2) return Promise.reject(new Error('try max num')) - - const _requestObj = httpFetch('http://musicapi.qianqian.com/v1/restserver/ting?from=android&version=7.0.2.0&channel=ppzs&operator=0&method=baidu.ting.search.hot', { - method: 'get', - headers: { - 'User-Agent': 'android_7.0.2.0;baiduyinyue', - }, - }) - const { body, statusCode } = await _requestObj.promise - if (statusCode != 200 || body.error_code !== 22000) throw new Error('获取热搜词失败') - // console.log(body, statusCode) - return { source: 'bd', list: this.filterList(body.result) } - }, - filterList(rawList) { - return rawList.map(item => item.word) - }, -} diff --git a/src/utils/musicSdk/bd/index.js b/src/utils/musicSdk/bd/index.js deleted file mode 100644 index adc4d62..0000000 --- a/src/utils/musicSdk/bd/index.js +++ /dev/null @@ -1,40 +0,0 @@ -import leaderboard from './leaderboard' -import { apis } from '../api-source' -import musicInfo from './musicInfo' -import songList from './songList' -import { httpFetch } from '../../request' -import musicSearch from './musicSearch' -import hotSearch from './hotSearch' - -const bd = { - leaderboard, - songList, - musicSearch, - hotSearch, - getMusicUrl(songInfo, type) { - return apis('bd').getMusicUrl(songInfo, type) - }, - getPic(songInfo) { - const requestObj = this.getMusicInfo(songInfo) - return requestObj.promise.then(info => info.pic_premium) - }, - getLyric(songInfo) { - const requestObj = this.getMusicInfo(songInfo) - requestObj.promise = requestObj.promise.then(info => httpFetch(info.lrclink).promise.then(resp => ({ lyric: resp.body, tlyric: '' }))) - return requestObj - }, - // getLyric(songInfo) { - // return apis('bd').getLyric(songInfo) - // }, - // getPic(songInfo) { - // return apis('bd').getPic(songInfo) - // }, - getMusicInfo(songInfo) { - return musicInfo.getMusicInfo(songInfo.songmid) - }, - getMusicDetailPageUrl(songInfo) { - return `http://music.taihe.com/song/${songInfo.songmid}` - }, -} - -export default bd diff --git a/src/utils/musicSdk/bd/leaderboard.js b/src/utils/musicSdk/bd/leaderboard.js deleted file mode 100644 index 21f2c64..0000000 --- a/src/utils/musicSdk/bd/leaderboard.js +++ /dev/null @@ -1,153 +0,0 @@ -import { httpFetch } from '../../request' -// import { formatPlayTime } from '../../index' - - -const boardList = [ - // { id: 'bd__601', name: '歌单榜', bangid: '601' }, - { id: 'bd__2', name: '热歌榜', bangid: '2' }, - { id: 'bd__20', name: '华语金曲榜', bangid: '20' }, - { id: 'bd__25', name: '网络歌曲榜', bangid: '25' }, - { id: 'bd__1', name: '新歌榜', bangid: '1' }, - { id: 'bd__21', name: '欧美金曲榜', bangid: '21' }, - { id: 'bd__200', name: '原创音乐榜', bangid: '200' }, - { id: 'bd__22', name: '经典老歌榜', bangid: '22' }, - { id: 'bd__24', name: '影视金曲榜', bangid: '24' }, - { id: 'bd__23', name: '情歌对唱榜', bangid: '23' }, - { id: 'bd__11', name: '摇滚榜', bangid: '11' }, - { id: 'bd__105', name: '好童星榜', bangid: '105' }, - { id: 'bd__106', name: '雅克•藏羌彝原创音乐榜', bangid: '106' }, -] - -export default { - limit: 20, - list: [ - { - id: 'bdrgb', - name: '热歌榜', - bangid: '2', - }, - { - id: 'bdxgb', - name: '新歌榜', - bangid: '1', - }, - { - id: 'bdycb', - name: '原创榜', - bangid: '200', - }, - { - id: 'bdhyjqb', - name: '华语榜', - bangid: '20', - }, - { - id: 'bdomjqb', - name: '欧美榜', - bangid: '21', - }, - { - id: 'bdwugqb', - name: '网络榜', - bangid: '25', - }, - { - id: 'bdjdlgb', - name: '老歌榜', - bangid: '22', - }, - { - id: 'bdysjqb', - name: '影视金曲榜', - bangid: '24', - }, - { - id: 'bdqgdcb', - name: '情歌对唱榜', - bangid: '23', - }, - { - id: 'bdygb', - name: '摇滚榜', - bangid: '11', - }, - ], - getUrl(id, p) { - return `http://musicmini.qianqian.com/2018/static/bangdan/bangdanList_${id}_${p}.html` - }, - regExps: { - item: /data-song="({.+?})"/g, - info: /{total[\s:]+"(\d+)", size[\s:]+"(\d+)", page[\s:]+"(\d+)"}/, - }, - getData(url) { - const requestObj = httpFetch(url) - return requestObj.promise - }, - filterData(rawList) { - // console.log(rawList) - return rawList.map(item => { - const types = [] - const _types = {} - let size = null - types.push({ type: '128k', size }) - _types['128k'] = { - size, - } - if (item.biaoshi) { - types.push({ type: '320k', size }) - _types['320k'] = { - size, - } - types.push({ type: 'flac', size }) - _types.flac = { - size, - } - } - // types.reverse() - - return { - singer: item.song_artist.replace(',', '、'), - name: item.song_title, - albumName: item.album_title, - albumId: item.album_id, - source: 'bd', - interval: '', - songmid: item.song_id, - img: null, - lrc: null, - types, - _types, - typeUrl: {}, - } - }) - }, - parseData(rawData) { - // return rawData.map(item => JSON.parse(item.replace(this.regExps.item, '$1').replace(/"/g, '"').replace(/\\\//g, '/').replace(/(@s_1,w_)\d+(,h_)\d+/, '$1500$2500'))) - return rawData.map(item => JSON.parse(item.replace(this.regExps.item, '$1').replace(/"/g, '"').replace(/\\\//g, '/'))) - }, - async getBoards(retryNum = 0) { - this.list = boardList - return { - list: boardList, - source: 'bd', - } - }, - getList(bangid, page, retryNum = 0) { - if (++retryNum > 3) return Promise.reject(new Error('try max num')) - return this.getData(this.getUrl(bangid, page)).then(({ body }) => { - let result = body.match(this.regExps.item) - if (!result) return this.getList(bangid, page, retryNum) - let info = body.match(this.regExps.info) - if (!info) return this.getList(bangid, page, retryNum) - const list = this.filterData(this.parseData(result)) - this.limit = parseInt(info[2]) - return { - total: parseInt(info[1]), - list, - limit: this.limit, - page: parseInt(info[3]), - source: 'bd', - } - }) - }, -} diff --git a/src/utils/musicSdk/bd/musicInfo.js b/src/utils/musicSdk/bd/musicInfo.js deleted file mode 100644 index 7c6c0b0..0000000 --- a/src/utils/musicSdk/bd/musicInfo.js +++ /dev/null @@ -1,20 +0,0 @@ -import { httpFetch } from '../../request' - -export default { - cache: {}, - getMusicInfo(songmid) { - if (this.cache[songmid]) { - return { promise: Promise.resolve(this.cache[songmid]) } - } - const requestObj = httpFetch(`https://musicapi.qianqian.com/v1/restserver/ting?method=baidu.ting.song.getSongLink&format=json&from=bmpc&version=1.0.0&version_d=11.1.6.0&songid=${songmid}&type=1&res=1&s_protocol=1&aac=2&project=tpass`) - requestObj.promise = requestObj.promise.then(({ body }) => { - // console.log(body) - if (body.error_code == 22000) { - this.cache[songmid] = body.result.songinfo - return body.result.songinfo - } - return Promise.reject(new Error('获取音乐信息失败')) - }) - return requestObj - }, -} diff --git a/src/utils/musicSdk/bd/musicSearch.js b/src/utils/musicSdk/bd/musicSearch.js deleted file mode 100644 index 5ec2589..0000000 --- a/src/utils/musicSdk/bd/musicSearch.js +++ /dev/null @@ -1,88 +0,0 @@ -// import '../../polyfill/array.find' - -import { httpFetch } from '../../request' -import { formatPlayTime } from '../../index' -// import { debug } from '../../utils/env' -// import { formatSinger } from './util' - -export default { - limit: 30, - total: 0, - page: 0, - allPage: 1, - musicSearch(str, page, limit) { - const searchRequest = httpFetch(`http://tingapi.ting.baidu.com/v1/restserver/ting?from=android&version=5.6.5.6&method=baidu.ting.search.merge&format=json&query=${encodeURIComponent(str)}&page_no=${page}&page_size=${limit}&type=0&data_source=0&use_cluster=1`) - return searchRequest.promise.then(({ body }) => body) - }, - handleResult(rawData) { - let ids = new Set() - const list = [] - if (!rawData) return list - rawData.forEach(item => { - if (ids.has(item.song_id)) return - ids.add(item.song_id) - const types = [] - const _types = {} - let size = null - let itemTypes = item.all_rate.split(',') - if (itemTypes.includes('128')) { - types.push({ type: '128k', size }) - _types['128k'] = { - size, - } - } - if (itemTypes.includes('320')) { - types.push({ type: '320k', size }) - _types['320k'] = { - size, - } - } - if (itemTypes.includes('flac')) { - types.push({ type: 'flac', size }) - _types.flac = { - size, - } - } - // types.reverse() - - list.push({ - singer: item.author.replace(',', '、'), - name: item.title, - albumName: item.album_title, - albumId: item.album_id, - source: 'bd', - interval: formatPlayTime(parseInt(item.file_duration)), - songmid: item.song_id, - img: null, - lrc: null, - types, - _types, - typeUrl: {}, - }) - }) - return list - }, - search(str, page = 1, limit, retryNum = 0) { - if (++retryNum > 3) return Promise.reject(new Error('try max num')) - if (limit == null) limit = this.limit - - return this.musicSearch(str, page, limit).then(result => { - if (!result || result.error_code !== 22000) return this.search(str, page, limit, retryNum) - let list = this.handleResult(result.result.song_info.song_list) - - if (list == null) return this.search(str, page, limit, retryNum) - - this.total = result.result.song_info.total - this.page = page - this.allPage = Math.ceil(this.total / limit) - - return Promise.resolve({ - list, - allPage: this.allPage, - limit, - total: this.total, - source: 'bd', - }) - }) - }, -} diff --git a/src/utils/musicSdk/bd/songList.js b/src/utils/musicSdk/bd/songList.js deleted file mode 100644 index 0309f27..0000000 --- a/src/utils/musicSdk/bd/songList.js +++ /dev/null @@ -1,264 +0,0 @@ -import { httpFetch } from '../../request' -import { formatPlayTime, toMD5 } from '../../index' -import CryptoJS from 'crypto-js' - -export default { - _requestObj_tags: null, - _requestObj_list: null, - _requestObj_listRecommend: null, - limit_list: 30, - limit_song: 10000, - successCode: 22000, - sortList: [ - { - name: '最热', - tid: 'hot', - id: '1', - }, - { - name: '最新', - tid: 'new', - id: '0', - }, - ], - regExps: { - // http://music.taihe.com/songlist/566347741 - listDetailLink: /^.+\/songlist\/(\d+)(?:\?.*|&.*$|#.*$|$)/, - }, - aesPassEncod(jsonData) { - let timestamp = Math.floor(Date.now() / 1000) - let privateKey = toMD5('baidu_taihe_music_secret_key' + timestamp).substr(8, 16) - let key = CryptoJS.enc.Utf8.parse(privateKey) - let iv = CryptoJS.enc.Utf8.parse(privateKey) - let arrData = [] - let strData = '' - for (let key in jsonData) arrData.push(key) - arrData.sort() - for (let i = 0; i < arrData.length; i++) { - let key = arrData[i] - strData += - (i === 0 ? '' : '&') + key + '=' + encodeURIComponent(jsonData[key]) - } - let JsonFormatter = { - stringify(cipherParams) { - let jsonObj = { - ct: cipherParams.ciphertext.toString(CryptoJS.enc.Base64), - } - if (cipherParams.iv) { - jsonObj.iv = cipherParams.iv.toString() - } - if (cipherParams.salt) { - jsonObj.s = cipherParams.salt.toString() - } - return jsonObj - }, - parse(jsonStr) { - let jsonObj = JSON.parse(jsonStr) - let cipherParams = CryptoJS.lib.CipherParams.create({ - ciphertext: CryptoJS.enc.Base64.parse(jsonObj.ct), - }) - if (jsonObj.iv) { - cipherParams.iv = CryptoJS.enc.Hex.parse(jsonObj.iv) - } - if (jsonObj.s) { - cipherParams.salt = CryptoJS.enc.Hex.parse(jsonObj.s) - } - return cipherParams - }, - } - let encrypted = CryptoJS.AES.encrypt(strData, key, { - iv, - blockSize: 16, - mode: CryptoJS.mode.CBC, - format: JsonFormatter, - }) - let ciphertext = encrypted.toString().ct - let sign = toMD5('baidu_taihe_music' + ciphertext + timestamp) - let jsonRet = { - timestamp, - param: ciphertext, - sign, - } - return jsonRet - }, - createUrl(param, method) { - let data = this.aesPassEncod(param) - return `http://musicmini.qianqian.com/v1/restserver/ting?method=${method}&time=${Date.now()}×tamp=${data.timestamp}¶m=${data.param}&sign=${data.sign}` - }, - getTagsUrl() { - return this.createUrl({ - from: 'qianqianmini', - type: 'diy', - version: '10.1.8', - }, 'baidu.ting.ugcdiy.getChannels') - }, - getListUrl(sortType, tagName, page) { - return this.createUrl({ - channelname: tagName || '全部', - from: 'qianqianmini', - offset: (page - 1) * this.limit_list, - order_type: sortType, - size: this.limit_list, - version: '10.1.8', - }, 'baidu.ting.ugcdiy.getChanneldiy') - }, - getListDetailUrl(list_id, page) { - return this.createUrl({ - list_id, - offset: (page - 1) * this.limit_song, - size: this.limit_song, - withcount: '1', - withsong: '1', - }, 'baidu.ting.ugcdiy.getBaseInfo') - }, - - // 获取标签 - getTags(tryNum = 0) { - if (this._requestObj_tags) this._requestObj_tags.cancelHttp() - if (tryNum > 2) return Promise.reject(new Error('try max num')) - this._requestObj_tags = httpFetch(this.getTagsUrl()) - return this._requestObj_tags.promise.then(({ body }) => { - if (body.error_code !== this.successCode) return this.getTags(++tryNum) - return { - hotTag: this.filterInfoHotTag(body.result.hot), - tags: this.filterTagInfo(body.result.tags), - source: 'bd', - } - }) - }, - filterInfoHotTag(rawList) { - return rawList.map(item => ({ - name: item, - id: item, - source: 'bd', - })) - }, - filterTagInfo(rawList) { - return rawList.map(type => ({ - name: type.first, - list: type.second.map(item => ({ - parent_id: type.first, - parent_name: type.first, - id: item, - name: item, - source: 'bd', - })), - })) - }, - - // 获取列表数据 - getList(sortId, tagId, page, tryNum = 0) { - if (this._requestObj_list) this._requestObj_list.cancelHttp() - if (tryNum > 2) return Promise.reject(new Error('try max num')) - this._requestObj_list = httpFetch(this.getListUrl(sortId, tagId, page)) - return this._requestObj_list.promise.then(({ body }) => { - if (body.error_code !== this.successCode) return this.getList(sortId, tagId, page, ++tryNum) - return { - list: this.filterList(body.diyInfo), - total: body.nums, - page, - limit: this.limit_list, - source: 'bd', - } - }) - }, - - - /** - * 格式化播放数量 - * @param {*} num - */ - formatPlayCount(num) { - if (num > 100000000) return parseInt(num / 10000000) / 10 + '亿' - if (num > 10000) return parseInt(num / 1000) / 10 + '万' - return num - }, - filterList(rawData) { - return rawData.map(item => ({ - play_count: this.formatPlayCount(item.listen_num), - id: String(item.list_id), - author: item.username, - name: item.title, - // time: item.publish_time, - img: item.list_pic_large || item.list_pic, - grade: item.grade, - desc: item.desc || item.tag, - source: 'bd', - })) - }, - - // 获取歌曲列表内的音乐 - getListDetail(id, page, tryNum = 0) { - if (tryNum > 2) return Promise.reject(new Error('try max num')) - - if ((/[?&:/]/.test(id))) id = id.replace(this.regExps.listDetailLink, '$1') - - const requestObj_listDetail = httpFetch(this.getListDetailUrl(id, page)) - return requestObj_listDetail.promise.then(({ body }) => { - if (body.error_code !== this.successCode) return this.getListDetail(id, page, ++tryNum) - let listData = this.filterData(body.result.songlist) - return { - list: listData, - page, - limit: this.limit_song, - total: body.result.song_num, - source: 'bd', - info: { - name: body.result.info.list_title, - img: body.result.info.list_pic, - desc: body.result.info.list_desc, - author: body.result.info.userinfo.username, - play_count: this.formatPlayCount(body.result.listen_num), - }, - } - }) - }, - filterData(rawList) { - // console.log(rawList) - return rawList.map(item => { - const types = [] - const _types = {} - let size = null - let itemTypes = item.all_rate.split(',') - if (itemTypes.includes('128')) { - types.push({ type: '128k', size }) - _types['128k'] = { - size, - } - } - if (itemTypes.includes('320')) { - types.push({ type: '320k', size }) - _types['320k'] = { - size, - } - } - if (itemTypes.includes('flac')) { - types.push({ type: 'flac', size }) - _types.flac = { - size, - } - } - // types.reverse() - - return { - singer: item.author.replace(',', '、'), - name: item.title, - albumName: item.album_title, - albumId: item.album_id, - source: 'bd', - interval: formatPlayTime(parseInt(item.file_duration)), - songmid: item.song_id, - img: item.pic_s500, - lrc: null, - types, - _types, - typeUrl: {}, - } - }) - }, - -} - -// getList -// getTags -// getListDetail diff --git a/src/utils/musicSdk/index.js b/src/utils/musicSdk/index.js index 6444ce8..7fdb03f 100644 --- a/src/utils/musicSdk/index.js +++ b/src/utils/musicSdk/index.js @@ -3,8 +3,6 @@ import kg from './kg' import tx from './tx' import wy from './wy' import mg from './mg' -// import bd from './bd' -import xm from './xm' import { supportQuality } from './api-source' @@ -30,18 +28,12 @@ const sources = { name: '咪咕音乐', id: 'mg', }, - // { - // name: '百度音乐', - // id: 'bd', - // }, ], kw, kg, tx, wy, mg, - // bd, - xm, } export default { ...sources, diff --git a/src/utils/musicSdk/kg/api-ikun.js b/src/utils/musicSdk/kg/api-ikun.js new file mode 100644 index 0000000..c39f036 --- /dev/null +++ b/src/utils/musicSdk/kg/api-ikun.js @@ -0,0 +1,24 @@ +import { httpFetch } from '../../request' +import { requestMsg } from '../../message' +import { headers, timeout } from '../options' + +const api_ikun = { + getMusicUrl(songInfo, type) { + const requestObj = httpFetch(`http://110.42.36.53:1314/url/kg/${songInfo._types[type].hash}/${type}`, { + method: 'get', + timeout, + headers, + family: 4, + }) + requestObj.promise = requestObj.promise.then(({ statusCode, body }) => { + if (statusCode == 429) return Promise.reject(new Error(requestMsg.tooManyRequests)) + switch (body.code) { + case 0: return Promise.resolve({ type, url: body.data }) + default: return Promise.reject(new Error(requestMsg.fail)) + } + }) + return requestObj + }, +} + +export default api_ikun \ No newline at end of file diff --git a/src/utils/musicSdk/kw/api-ikun.js b/src/utils/musicSdk/kw/api-ikun.js new file mode 100644 index 0000000..8162b9a --- /dev/null +++ b/src/utils/musicSdk/kw/api-ikun.js @@ -0,0 +1,24 @@ +import { httpFetch } from '../../request' +import { requestMsg } from '../../message' +import { headers, timeout } from '../options' + +const api_ikun = { + getMusicUrl(songInfo, type) { + const requestObj = httpFetch(`http://110.42.36.53:1314/url/kw/${songInfo.songmid}/${type}`, { + method: 'get', + timeout, + headers, + family: 4, + }) + requestObj.promise = requestObj.promise.then(({ statusCode, body }) => { + if (statusCode == 429) return Promise.reject(new Error(requestMsg.tooManyRequests)) + switch (body.code) { + case 0: return Promise.resolve({ type, url: body.data }) + default: return Promise.reject(new Error(requestMsg.fail)) + } + }) + return requestObj + }, +} + +export default api_ikun \ No newline at end of file diff --git a/src/utils/musicSdk/mg/api-ikun.js b/src/utils/musicSdk/mg/api-ikun.js new file mode 100644 index 0000000..895eee8 --- /dev/null +++ b/src/utils/musicSdk/mg/api-ikun.js @@ -0,0 +1,24 @@ +import { httpFetch } from '../../request' +import { requestMsg } from '../../message' +import { headers, timeout } from '../options' + +const api_ikun = { + getMusicUrl(songInfo, type) { + const requestObj = httpFetch(`http://110.42.36.53:1314/url/mg/${songInfo.copyrightId}/${type}`, { + method: 'get', + timeout, + headers, + family: 4, + }) + requestObj.promise = requestObj.promise.then(({ statusCode, body }) => { + if (statusCode == 429) return Promise.reject(new Error(requestMsg.tooManyRequests)) + switch (body.code) { + case 0: return Promise.resolve({ type, url: body.data }) + default: return Promise.reject(new Error(requestMsg.fail)) + } + }) + return requestObj + }, +} + +export default api_ikun \ No newline at end of file diff --git a/src/utils/musicSdk/tx/api-ikun.js b/src/utils/musicSdk/tx/api-ikun.js new file mode 100644 index 0000000..2ae62c3 --- /dev/null +++ b/src/utils/musicSdk/tx/api-ikun.js @@ -0,0 +1,27 @@ +import { httpFetch } from '../../request' +import { requestMsg } from '../../message' +import { headers, timeout } from '../options' + +const api_ikun = { + getMusicUrl(songInfo, type) { + const requestObj = httpFetch(`http://110.42.36.53:1314/url/tx/${songInfo.songmid}/${type}`, { + method: 'get', + timeout, + headers, + family: 4, + }) + requestObj.promise = requestObj.promise.then(({ statusCode, body }) => { + if (statusCode == 429) return Promise.reject(new Error(requestMsg.tooManyRequests)) + switch (body.code) { + case 0: return Promise.resolve({ type, url: body.data }) + default: return Promise.reject(new Error(requestMsg.fail)) + } + }) + return requestObj + }, + getPic(songInfo) { + return Promise.resolve(`https://y.gtimg.cn/music/photo_new/T002R500x500M000${songInfo.albumId}.jpg`) + }, +} + +export default api_ikun \ No newline at end of file diff --git a/src/utils/musicSdk/wy/api-ikun.js b/src/utils/musicSdk/wy/api-ikun.js new file mode 100644 index 0000000..fe015a0 --- /dev/null +++ b/src/utils/musicSdk/wy/api-ikun.js @@ -0,0 +1,24 @@ +import { httpFetch } from '../../request' +import { requestMsg } from '../../message' +import { headers, timeout } from '../options' + +const api_ikun = { + getMusicUrl(songInfo, type) { + const requestObj = httpFetch(`http://110.42.36.53:1314/url/wy/${songInfo.songmid}/${type}`, { + method: 'get', + timeout, + headers, + family: 4, + }) + requestObj.promise = requestObj.promise.then(({ statusCode, body }) => { + if (statusCode == 429) return Promise.reject(new Error(requestMsg.tooManyRequests)) + switch (body.code) { + case 0: return Promise.resolve({ type, url: body.data }) + default: return Promise.reject(new Error(requestMsg.fail)) + } + }) + return requestObj + }, +} + +export default api_ikun \ No newline at end of file diff --git a/src/utils/musicSdk/xm.js b/src/utils/musicSdk/xm.js deleted file mode 100644 index a11b126..0000000 --- a/src/utils/musicSdk/xm.js +++ /dev/null @@ -1,55 +0,0 @@ -// import { apis } from '../api-source' -// import leaderboard from './leaderboard' -// import songList from './songList' -// import musicSearch from './musicSearch' -// import pic from './pic' -// import lyric from './lyric' -// import hotSearch from './hotSearch' -// import comment from './comment' -// import musicInfo from './musicInfo' -// import { closeVerifyModal } from './util' - -const xm = { - // songList, - // musicSearch, - // leaderboard, - // hotSearch, - // closeVerifyModal, - comment: { - getComment() { - return Promise.reject(new Error('fail')) - }, - getHotComment() { - return Promise.reject(new Error('fail')) - }, - }, - getMusicUrl(songInfo, type) { - return { - promise: Promise.reject(new Error('fail')), - } - // return apis('xm').getMusicUrl(songInfo, type) - }, - getLyric(songInfo) { - return { - promise: Promise.reject(new Error('fail')), - } - // return lyric.getLyric(songInfo) - }, - getPic(songInfo) { - return Promise.reject(new Error('fail')) - // return pic.getPic(songInfo) - }, - // getMusicDetailPageUrl(songInfo) { - // if (songInfo.songStringId) return `https://www.xiami.com/song/${songInfo.songStringId}` - - // musicInfo.getMusicInfo(songInfo).then(({ data }) => { - // songInfo.songStringId = data.songStringId - // }) - // return `https://www.xiami.com/song/${songInfo.songmid}` - // }, - // init() { - // getToken() - // }, -} - -export default xm diff --git a/src/utils/tools.ts b/src/utils/tools.ts index 8313f52..1528490 100644 --- a/src/utils/tools.ts +++ b/src/utils/tools.ts @@ -546,7 +546,7 @@ export const cheatTip = async() => { return tipDialog({ title: '谨防被骗提示', - message: `1. 本项目无微信公众号之类的官方账号,也未在小米、华为、vivo等应用商店发布应用,商店内的“LX Music”、“洛雪音乐”相关的应用全部属于假冒应用,谨防被骗。 + message: `1. 本项目无微信公众号之类的官方账号,也未在小米、华为、vivo等应用商店发布应用,商店内的“LX Music Mod”、“洛雪音乐”相关的应用全部属于假冒应用,谨防被骗。 2. 本软件完全无广告且无引流(如需要加群、关注公众号之类才能使用或者升级)的行为,若你使用过程中遇到广告或者引流的信息,则表明你当前运行的软件是第三方修改版。 3. 目前本项目的原始发布地址只有 GitHub 及 蓝奏网盘 (在设置-关于有说明),其他渠道均为第三方转载发布,可信度请自行鉴别。`, btnText: '我知道了 (Close)',