mirror of
https://github.com/ikun0014/lx-music-mobile.git
synced 2025-05-23 22:37:41 +08:00
懒
This commit is contained in:
parent
e5165da461
commit
cd12c64ea1
40
.github/ISSUE_TEMPLATE/----.yml
vendored
40
.github/ISSUE_TEMPLATE/----.yml
vendored
@ -1,40 +0,0 @@
|
||||
name: ✨功能请求
|
||||
description: 为这个项目提出一个想法,请先查看常见问题及搜索issue列表中有无你要提的问题
|
||||
title: "[Feature]: "
|
||||
body:
|
||||
- type: checkboxes
|
||||
id: check-answer
|
||||
attributes:
|
||||
label: 解决方案检查
|
||||
description: 请确保你已完成以下所有操作
|
||||
options:
|
||||
- label: 我已阅读常见问题(<https://lyswhut.github.io/lx-music-doc/mobile/faq>),但没有找到解决方案
|
||||
required: true
|
||||
- label: 我已搜索issue列表(<https://github.com/lyswhut/lx-music-mobile/issues?utf8=✓&q=>),但没有发现类似的问题
|
||||
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: 如果你的问题需要进一步解释,或者想要表达其他内容,请在此处添加更多信息。(直接把图片、视频拖到编辑框即可添加图片或视频)
|
55
.github/ISSUE_TEMPLATE/--bug.yml
vendored
55
.github/ISSUE_TEMPLATE/--bug.yml
vendored
@ -1,55 +0,0 @@
|
||||
name: 🐞报告Bug
|
||||
description: 报告bug,请先查看常见问题及搜索issue列表中有无你要提的问题
|
||||
title: "[Bug]: "
|
||||
body:
|
||||
- type: checkboxes
|
||||
id: check-answer
|
||||
attributes:
|
||||
label: 解决方案检查
|
||||
description: 请确保你已完成以下所有操作
|
||||
options:
|
||||
- label: 我已阅读常见问题(<https://lyswhut.github.io/lx-music-doc/mobile/faq>),并没有找到解决方案
|
||||
required: true
|
||||
- label: 我已搜索issue列表(<https://github.com/lyswhut/lx-music-mobile/issues?utf8=✓&q=>),并没有发现类似的问题
|
||||
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: 如果你的问题需要进一步解释,或者你所遇到的问题不容易重现,请在此处添加更多信息。(直接把图片、视频拖到编辑框即可添加图片或视频)
|
10
.github/actions/upload-artifact/action.yml
vendored
10
.github/actions/upload-artifact/action.yml
vendored
@ -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
|
||||
|
114
.github/workflows/beta-pack-all.yml
vendored
114
.github/workflows/beta-pack-all.yml
vendored
@ -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 }}
|
39
.github/workflows/beta-pack.yml
vendored
39
.github/workflows/beta-pack.yml
vendored
@ -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 }}
|
28
.github/workflows/build-test.yml
vendored
28
.github/workflows/build-test.yml
vendored
@ -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
|
17
.github/workflows/publish-version-info.yml
vendored
17
.github/workflows/publish-version-info.yml
vendored
@ -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
|
111
.github/workflows/release.yml
vendored
111
.github/workflows/release.yml
vendored
@ -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 }}
|
||||
|
@ -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”、“洛雪音乐”相关的应用全部属于假冒应用,谨防被骗。
|
||||
|
||||
本软件完全无广告且无引流(如需要加群、关注公众号之类才能使用或者升级)的行为,若你使用过程中遇到广告或者引流的信息,则表明你当前运行的软件是第三方修改版。
|
||||
|
||||
|
115
FAQ.md
115
FAQ.md
@ -1,115 +0,0 @@
|
||||
# lx-music-mobile 常见问题
|
||||
|
||||
本文档已迁移到:<https://lyswhut.github.io/lx-music-doc/mobile/faq>
|
||||
|
||||
在阅读本常见问题后,仍然无法解决你的问题,请提交issue或者加企鹅群`830125506`反馈(无事勿加,入群先看群公告),反馈时请**注明**已阅读常见问题!
|
||||
|
||||
## LX Music中的音乐播放列表机制
|
||||
|
||||
1. 默认情况下,播放搜索列表、歌单列表、排行榜列表的歌曲时会自动将该歌曲添加到“我的列表”的试听列表后再播放,手动将歌曲添加到试听列表,再去试听列表找到这首歌点播放是等价的
|
||||
2. 如果你想要播放多首歌曲,需要使用多选功能(若不知道如何多选请看常见问题)多选后,将歌曲这些歌曲添加到“我的列表”播放,或使用稍后播放功能播放
|
||||
3. 第2条适用于搜索列表、歌单列表、排行榜列表、我的列表的歌曲
|
||||
4. 对于歌单详情列表,除了可以使用第2条的方式播放外,你可以点击详情页上面的播放按钮临时播放当前歌单,或点击收藏将当前歌单收藏到“我的列表”后再去播放
|
||||
5. 对于排行榜详情列表,除了可以使用第2条的方式播放外,你可以在长按排行榜名字后弹出的菜单中,播放或收藏整个排行榜,这与第四条的歌单中的播放、与收藏按钮功能一致
|
||||
6. v0.11.0及之后新增了“双击列表里的歌曲时自动切换到当前列表播放”设置,默认关闭,此功能仅对歌单、排行榜有效
|
||||
7. 将歌曲添加“稍后播放”后,它们会被放在一个优先级最高的特殊队列中,点击“下一曲”时会消耗该队列中的歌曲,并且无法通过“上一曲”功能播放该队列的上一首歌曲
|
||||
8. 在切歌时若不是通过“上一曲”、“下一曲”功能切歌(例如直接点击“排行榜列表”、“我的列表”中的歌曲切歌),“稍后播放”队列将会被清空
|
||||
|
||||
## 歌曲无法试听与下载
|
||||
|
||||
### 所有歌曲都提示 `请求异常😮,可以多试几次,若还是不行就换一首吧。。。`
|
||||
|
||||
尝试更换网络,如切换到移动网络,若移动网络还是不行则尝试开关下手机的飞行模式后再试,<br>
|
||||
若使用家庭网络的话,可尝试将光猫断电5分钟左右再通电联网后播放。
|
||||
|
||||
### 其他情况
|
||||
|
||||
尝试在在浏览器打开这个地址`http://ts.tempmusics.tk`,浏览器显示404是正常的,如果不是404那就证明所在网络无法访问接口服务器,对于此类情况请尝试切换其他网络。
|
||||
|
||||
### 通用解决方法
|
||||
|
||||
尝试按以下顺序解决:
|
||||
|
||||
1. 尝试更新到最新版本
|
||||
2. 尝试切换其他歌曲(或直接搜索该歌曲),若全部歌曲都无法试听与下载则进行下一步
|
||||
3. 尝试到 设置-音乐来源 切换到其他接口
|
||||
4. 尝试切换网络,比如用手机开热点(所有歌曲都提示请求异常时可通过此方法解决,或等一两天后再试)
|
||||
5. 若还不行请到这个链接查看详情:<https://github.com/lyswhut/lx-music-desktop/issues/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项,进入多选模式后,点击第一项,再点击第三项即可完成选择;
|
||||
- 例子三:想要选中当前列表的全部内容,进入多选模式后,点击全选即可完成选择(注:由于**在线列表**使用分页加载,全选只会选择目前已加载的内容,若要完整选择整个在线列表的内容则需要往下滑动将列表加载完毕再进行全选)。
|
||||
|
||||
注:选完后可用歌曲列表三个点的菜单操作已选的内容
|
||||
|
||||
## 无法打开外部歌单
|
||||
|
||||
不支持垮源打开歌单,请**确认**你需要打开的歌单平台是否与软件标签所写的**歌单源**对应(不一样的话请通过右上角切换歌单源);<br>
|
||||
对于分享出来的歌单,若打开失败,可尝试先在浏览器中打开后,再从浏览器地址栏复制URL地址到软件打开;<br>
|
||||
或者如果你知道歌单 id 也可以直接输入歌单 id 打开。<br>
|
||||
|
||||
注:网易源的“我喜欢”歌单无法在未登录的情况下打开,所以你需要手动创建一个歌单后将“我喜欢”里的歌曲移动到该歌单打开
|
||||
|
||||
## 播放整个歌单或排行榜
|
||||
|
||||
播放在线列表内的歌曲需要将它们都添加到我的列表才能播放,你可以全选列表内的歌曲然后添加到现有列表或者新创建的列表,然后去播放该列表内的歌曲。
|
||||
|
||||
## 桌面歌词启用后不显示
|
||||
|
||||
安卓6及更高的版本需要给予LX Music显示悬浮窗的权限才能使用桌面歌词功能,请确认是否授予此权限(不懂怎么授予的话请自行百度“开启悬浮窗权限”)。
|
||||
|
||||
## 下载功能
|
||||
|
||||
移动端暂不支持歌曲下载功能。
|
||||
|
||||
## 同步功能的使用(实验性,首次使用前建议先备份一次列表)
|
||||
|
||||
**注意:由于同步传输时的数据是明文传输,请在受信任的网络下使用此功能!**<br>
|
||||
此功能需要配合PC端使用,移动端与PC端处在同一个局域网(路由器的网络)下时,可以多端实时同步歌曲列表,使用方法:
|
||||
|
||||
1. 在PC端的设置-数据同步开启同步功能(这时如果出现安全软件、防火墙等提示网络连接弹窗时需要点击允许)
|
||||
2. 在移动端的设置-同步-同步服务器地址输入PC端显示的同步服务器地址(如果显示可以多个,则输入与**移动端上显示的本机地址**最相似的那个),端口号与PC端的同步端口一致(**输入完毕后需要按一下键盘上的回车键使输入的内容生效**)
|
||||
3. 输入完这两项后点击“启动同步”
|
||||
4. 若连接成功,对于首次同步时,若两边的设备的列表不为空,则PC端会弹出选择列表同步方式的弹窗,同步方式的说明弹窗下面有介绍
|
||||
|
||||
#### 关于同步弹窗的说明
|
||||
|
||||
对于首次同步时,若两边的设备的列表不为空,则PC端会弹出选择列表同步方式的弹窗,此弹窗内的同步方式仅针对**首次同步**,<br>
|
||||
第一次同步成功后,以后再同步时将会自动根据两边设备的列表内容合并同步,不信你可以在同步完成后断开两边的连接,然后在两边增删一些歌曲或列表后再同步试试看~😉
|
||||
|
||||
#### 连接同步服务失败的可能原因
|
||||
|
||||
- 此功能需要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)<br>
|
||||
尽管如此,但这不意味着软件是100%安全的,由于软件使用了第三方依赖,当这些依赖存在恶意行为时([供应链攻击](https://docs.microsoft.com/zh-cn/windows/security/threat-protection/intelligence/supply-chain-malware)),软件也将会受到牵连,所以我只能尽量选择使用较多人用、信任度较高的依赖。<br>
|
||||
当然,以上说明建立的前提是在你所用的安装包是从**本项目主页上写的链接**下载的,或者有相关能力者还可以下载源代码自己构建安装包。
|
||||
|
||||
最后,若出现杀毒软件报毒、存在恶意行为,请自行判断选择是否继续使用本软件!
|
@ -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
|
||||
|
@ -1,6 +1,6 @@
|
||||
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:tools="http://schemas.android.com/tools"
|
||||
package="cn.toside.music.mobile">
|
||||
package="com.ikunshare.music.mobile">
|
||||
|
||||
<!-- 获取读写外置存储权限 -->
|
||||
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
|
||||
|
@ -1,4 +1,4 @@
|
||||
package cn.toside.music.mobile;
|
||||
package com.ikunshare.music.mobile;
|
||||
|
||||
import com.reactnativenavigation.NavigationActivity;
|
||||
import com.facebook.react.ReactActivityDelegate;
|
||||
|
@ -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 {
|
||||
|
||||
|
@ -1,4 +1,4 @@
|
||||
package cn.toside.music.mobile.cache;
|
||||
package com.ikunshare.music.mobile.cache;
|
||||
|
||||
import android.os.AsyncTask;
|
||||
|
||||
|
@ -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 {
|
||||
|
@ -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;
|
||||
|
@ -1,4 +1,4 @@
|
||||
package cn.toside.music.mobile.cache;
|
||||
package com.ikunshare.music.mobile.cache;
|
||||
|
||||
import android.content.Context;
|
||||
|
||||
|
@ -1,4 +1,4 @@
|
||||
package cn.toside.music.mobile.crypto;
|
||||
package com.ikunshare.music.mobile.crypto;
|
||||
|
||||
import android.util.Base64;
|
||||
|
||||
|
@ -1,4 +1,4 @@
|
||||
package cn.toside.music.mobile.crypto;
|
||||
package com.ikunshare.music.mobile.crypto;
|
||||
|
||||
import android.util.Base64;
|
||||
|
||||
|
@ -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;
|
||||
|
@ -1,4 +1,4 @@
|
||||
package cn.toside.music.mobile.crypto;
|
||||
package com.ikunshare.music.mobile.crypto;
|
||||
|
||||
import android.util.Base64;
|
||||
|
||||
|
@ -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;
|
||||
|
@ -1,4 +1,4 @@
|
||||
package cn.toside.music.mobile.lyric;
|
||||
package com.ikunshare.music.mobile.lyric;
|
||||
|
||||
import android.util.Log;
|
||||
|
||||
|
@ -1,4 +1,4 @@
|
||||
package cn.toside.music.mobile.lyric;
|
||||
package com.ikunshare.music.mobile.lyric;
|
||||
|
||||
import android.content.Intent;
|
||||
import android.net.Uri;
|
||||
|
@ -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;
|
||||
|
@ -1,4 +1,4 @@
|
||||
package cn.toside.music.mobile.lyric;
|
||||
package com.ikunshare.music.mobile.lyric;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
|
@ -1,4 +1,4 @@
|
||||
package cn.toside.music.mobile.lyric;
|
||||
package com.ikunshare.music.mobile.lyric;
|
||||
|
||||
import android.annotation.SuppressLint;
|
||||
import android.content.Context;
|
||||
|
@ -1,4 +1,4 @@
|
||||
package cn.toside.music.mobile.lyric;
|
||||
package com.ikunshare.music.mobile.lyric;
|
||||
|
||||
import android.annotation.SuppressLint;
|
||||
import android.content.Context;
|
||||
|
@ -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<String> currentExtendedLyrics = new ArrayList<>();
|
||||
|
||||
private int mLastRotation;
|
||||
|
@ -1,4 +1,4 @@
|
||||
package cn.toside.music.mobile.lyric;
|
||||
package com.ikunshare.music.mobile.lyric;
|
||||
|
||||
import android.os.Handler;
|
||||
|
||||
|
@ -1,4 +1,4 @@
|
||||
package cn.toside.music.mobile.userApi;
|
||||
package com.ikunshare.music.mobile.userApi;
|
||||
|
||||
import android.os.Handler;
|
||||
import android.os.Message;
|
||||
|
@ -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;
|
||||
|
@ -1,4 +1,4 @@
|
||||
package cn.toside.music.mobile.userApi;
|
||||
package com.ikunshare.music.mobile.userApi;
|
||||
|
||||
import android.os.Bundle;
|
||||
import android.os.Handler;
|
||||
|
@ -1,4 +1,4 @@
|
||||
package cn.toside.music.mobile.userApi;
|
||||
package com.ikunshare.music.mobile.userApi;
|
||||
|
||||
import android.os.Handler;
|
||||
import android.os.Looper;
|
||||
|
@ -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;
|
||||
|
@ -1,4 +1,4 @@
|
||||
package cn.toside.music.mobile.userApi;
|
||||
package com.ikunshare.music.mobile.userApi;
|
||||
|
||||
import android.os.Bundle;
|
||||
import android.os.Handler;
|
||||
|
@ -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;
|
||||
|
@ -1,4 +1,4 @@
|
||||
package cn.toside.music.mobile.userApi;
|
||||
package com.ikunshare.music.mobile.userApi;
|
||||
|
||||
import android.util.Log;
|
||||
|
||||
|
@ -1,4 +1,4 @@
|
||||
package cn.toside.music.mobile.utils;
|
||||
package com.ikunshare.music.mobile.utils;
|
||||
|
||||
import android.os.Handler;
|
||||
import android.os.Looper;
|
||||
|
@ -1,4 +1,4 @@
|
||||
package cn.toside.music.mobile.utils;
|
||||
package com.ikunshare.music.mobile.utils;
|
||||
|
||||
import static android.content.Context.POWER_SERVICE;
|
||||
|
||||
|
@ -1,4 +1,4 @@
|
||||
package cn.toside.music.mobile.utils;
|
||||
package com.ikunshare.music.mobile.utils;
|
||||
|
||||
|
||||
import android.content.Context;
|
||||
|
@ -1,4 +1,4 @@
|
||||
package cn.toside.music.mobile.utils;
|
||||
package com.ikunshare.music.mobile.utils;
|
||||
|
||||
import android.util.Log;
|
||||
|
||||
|
@ -1,4 +1,4 @@
|
||||
package cn.toside.music.mobile.utils;
|
||||
package com.ikunshare.music.mobile.utils;
|
||||
|
||||
import android.annotation.SuppressLint;
|
||||
import android.app.Activity;
|
||||
|
@ -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;
|
||||
|
@ -1,3 +1,3 @@
|
||||
<resources>
|
||||
<string name="app_name">LX Music</string>
|
||||
<string name="app_name">LX Music Mod</string>
|
||||
</resources>
|
||||
|
@ -4,7 +4,7 @@
|
||||
* <p>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;
|
||||
|
@ -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')
|
||||
|
2
app.json
2
app.json
@ -1,4 +1,4 @@
|
||||
{
|
||||
"name": "LX Music",
|
||||
"name": "LX Music Mod",
|
||||
"displayName": "洛雪音乐助手"
|
||||
}
|
||||
|
Binary file not shown.
Before Width: | Height: | Size: 6.7 KiB |
@ -1,11 +0,0 @@
|
||||
# This `.xcode.env` file is versioned and is used to source the environment
|
||||
# used when running script phases inside Xcode.
|
||||
# To customize your local environment, you can create an `.xcode.env.local`
|
||||
# file that is not versioned.
|
||||
|
||||
# NODE_BINARY variable contains the PATH to the node executable.
|
||||
#
|
||||
# Customize the NODE_BINARY variable here.
|
||||
# For example, to use nvm with brew, add the following line
|
||||
# . "$(brew --prefix nvm)/nvm.sh" --no-use
|
||||
export NODE_BINARY=$(command -v node)
|
@ -1,684 +0,0 @@
|
||||
// !$*UTF8*$!
|
||||
{
|
||||
archiveVersion = 1;
|
||||
classes = {
|
||||
};
|
||||
objectVersion = 54;
|
||||
objects = {
|
||||
|
||||
/* Begin PBXBuildFile section */
|
||||
00E356F31AD99517003FC87E /* LxMusicMobileTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 00E356F21AD99517003FC87E /* LxMusicMobileTests.m */; };
|
||||
0C80B921A6F3F58F76C31292 /* libPods-LxMusicMobile.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 5DCACB8F33CDC322A6C60F78 /* libPods-LxMusicMobile.a */; };
|
||||
13B07FBC1A68108700A75B9A /* AppDelegate.mm in Sources */ = {isa = PBXBuildFile; fileRef = 13B07FB01A68108700A75B9A /* AppDelegate.mm */; };
|
||||
13B07FBF1A68108700A75B9A /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 13B07FB51A68108700A75B9A /* Images.xcassets */; };
|
||||
13B07FC11A68108700A75B9A /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 13B07FB71A68108700A75B9A /* main.m */; };
|
||||
7699B88040F8A987B510C191 /* libPods-LxMusicMobile-LxMusicMobileTests.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 19F6CBCC0A4E27FBF8BF4A61 /* libPods-LxMusicMobile-LxMusicMobileTests.a */; };
|
||||
81AB9BB82411601600AC10FF /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 81AB9BB72411601600AC10FF /* LaunchScreen.storyboard */; };
|
||||
/* End PBXBuildFile section */
|
||||
|
||||
/* Begin PBXContainerItemProxy section */
|
||||
00E356F41AD99517003FC87E /* PBXContainerItemProxy */ = {
|
||||
isa = PBXContainerItemProxy;
|
||||
containerPortal = 83CBB9F71A601CBA00E9B192 /* Project object */;
|
||||
proxyType = 1;
|
||||
remoteGlobalIDString = 13B07F861A680F5B00A75B9A;
|
||||
remoteInfo = LxMusicMobile;
|
||||
};
|
||||
/* End PBXContainerItemProxy section */
|
||||
|
||||
/* Begin PBXFileReference section */
|
||||
00E356EE1AD99517003FC87E /* LxMusicMobileTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = LxMusicMobileTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
00E356F11AD99517003FC87E /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
|
||||
00E356F21AD99517003FC87E /* LxMusicMobileTests.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = LxMusicMobileTests.m; sourceTree = "<group>"; };
|
||||
13B07F961A680F5B00A75B9A /* LxMusicMobile.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = LxMusicMobile.app; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
13B07FAF1A68108700A75B9A /* AppDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AppDelegate.h; path = LxMusicMobile/AppDelegate.h; sourceTree = "<group>"; };
|
||||
13B07FB01A68108700A75B9A /* AppDelegate.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = AppDelegate.mm; path = LxMusicMobile/AppDelegate.mm; sourceTree = "<group>"; };
|
||||
13B07FB51A68108700A75B9A /* Images.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; name = Images.xcassets; path = LxMusicMobile/Images.xcassets; sourceTree = "<group>"; };
|
||||
13B07FB61A68108700A75B9A /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = Info.plist; path = LxMusicMobile/Info.plist; sourceTree = "<group>"; };
|
||||
13B07FB71A68108700A75B9A /* main.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = main.m; path = LxMusicMobile/main.m; sourceTree = "<group>"; };
|
||||
19F6CBCC0A4E27FBF8BF4A61 /* libPods-LxMusicMobile-LxMusicMobileTests.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-LxMusicMobile-LxMusicMobileTests.a"; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
3B4392A12AC88292D35C810B /* Pods-LxMusicMobile.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-LxMusicMobile.debug.xcconfig"; path = "Target Support Files/Pods-LxMusicMobile/Pods-LxMusicMobile.debug.xcconfig"; sourceTree = "<group>"; };
|
||||
5709B34CF0A7D63546082F79 /* Pods-LxMusicMobile.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-LxMusicMobile.release.xcconfig"; path = "Target Support Files/Pods-LxMusicMobile/Pods-LxMusicMobile.release.xcconfig"; sourceTree = "<group>"; };
|
||||
5B7EB9410499542E8C5724F5 /* Pods-LxMusicMobile-LxMusicMobileTests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-LxMusicMobile-LxMusicMobileTests.debug.xcconfig"; path = "Target Support Files/Pods-LxMusicMobile-LxMusicMobileTests/Pods-LxMusicMobile-LxMusicMobileTests.debug.xcconfig"; sourceTree = "<group>"; };
|
||||
5DCACB8F33CDC322A6C60F78 /* libPods-LxMusicMobile.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-LxMusicMobile.a"; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
81AB9BB72411601600AC10FF /* LaunchScreen.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; name = LaunchScreen.storyboard; path = LxMusicMobile/LaunchScreen.storyboard; sourceTree = "<group>"; };
|
||||
89C6BE57DB24E9ADA2F236DE /* Pods-LxMusicMobile-LxMusicMobileTests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-LxMusicMobile-LxMusicMobileTests.release.xcconfig"; path = "Target Support Files/Pods-LxMusicMobile-LxMusicMobileTests/Pods-LxMusicMobile-LxMusicMobileTests.release.xcconfig"; sourceTree = "<group>"; };
|
||||
ED297162215061F000B7C4FE /* JavaScriptCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = JavaScriptCore.framework; path = System/Library/Frameworks/JavaScriptCore.framework; sourceTree = SDKROOT; };
|
||||
/* End PBXFileReference section */
|
||||
|
||||
/* Begin PBXFrameworksBuildPhase section */
|
||||
00E356EB1AD99517003FC87E /* Frameworks */ = {
|
||||
isa = PBXFrameworksBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
7699B88040F8A987B510C191 /* libPods-LxMusicMobile-LxMusicMobileTests.a in Frameworks */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
13B07F8C1A680F5B00A75B9A /* Frameworks */ = {
|
||||
isa = PBXFrameworksBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
0C80B921A6F3F58F76C31292 /* libPods-LxMusicMobile.a in Frameworks */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
/* End PBXFrameworksBuildPhase section */
|
||||
|
||||
/* Begin PBXGroup section */
|
||||
00E356EF1AD99517003FC87E /* LxMusicMobileTests */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
00E356F21AD99517003FC87E /* LxMusicMobileTests.m */,
|
||||
00E356F01AD99517003FC87E /* Supporting Files */,
|
||||
);
|
||||
path = LxMusicMobileTests;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
00E356F01AD99517003FC87E /* Supporting Files */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
00E356F11AD99517003FC87E /* Info.plist */,
|
||||
);
|
||||
name = "Supporting Files";
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
13B07FAE1A68108700A75B9A /* LxMusicMobile */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
13B07FAF1A68108700A75B9A /* AppDelegate.h */,
|
||||
13B07FB01A68108700A75B9A /* AppDelegate.mm */,
|
||||
13B07FB51A68108700A75B9A /* Images.xcassets */,
|
||||
13B07FB61A68108700A75B9A /* Info.plist */,
|
||||
81AB9BB72411601600AC10FF /* LaunchScreen.storyboard */,
|
||||
13B07FB71A68108700A75B9A /* main.m */,
|
||||
);
|
||||
name = LxMusicMobile;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
2D16E6871FA4F8E400B85C8A /* Frameworks */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
ED297162215061F000B7C4FE /* JavaScriptCore.framework */,
|
||||
5DCACB8F33CDC322A6C60F78 /* libPods-LxMusicMobile.a */,
|
||||
19F6CBCC0A4E27FBF8BF4A61 /* libPods-LxMusicMobile-LxMusicMobileTests.a */,
|
||||
);
|
||||
name = Frameworks;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
832341AE1AAA6A7D00B99B32 /* Libraries */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
);
|
||||
name = Libraries;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
83CBB9F61A601CBA00E9B192 = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
13B07FAE1A68108700A75B9A /* LxMusicMobile */,
|
||||
832341AE1AAA6A7D00B99B32 /* Libraries */,
|
||||
00E356EF1AD99517003FC87E /* LxMusicMobileTests */,
|
||||
83CBBA001A601CBA00E9B192 /* Products */,
|
||||
2D16E6871FA4F8E400B85C8A /* Frameworks */,
|
||||
BBD78D7AC51CEA395F1C20DB /* Pods */,
|
||||
);
|
||||
indentWidth = 2;
|
||||
sourceTree = "<group>";
|
||||
tabWidth = 2;
|
||||
usesTabs = 0;
|
||||
};
|
||||
83CBBA001A601CBA00E9B192 /* Products */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
13B07F961A680F5B00A75B9A /* LxMusicMobile.app */,
|
||||
00E356EE1AD99517003FC87E /* LxMusicMobileTests.xctest */,
|
||||
);
|
||||
name = Products;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
BBD78D7AC51CEA395F1C20DB /* Pods */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
3B4392A12AC88292D35C810B /* Pods-LxMusicMobile.debug.xcconfig */,
|
||||
5709B34CF0A7D63546082F79 /* Pods-LxMusicMobile.release.xcconfig */,
|
||||
5B7EB9410499542E8C5724F5 /* Pods-LxMusicMobile-LxMusicMobileTests.debug.xcconfig */,
|
||||
89C6BE57DB24E9ADA2F236DE /* Pods-LxMusicMobile-LxMusicMobileTests.release.xcconfig */,
|
||||
);
|
||||
path = Pods;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
/* End PBXGroup section */
|
||||
|
||||
/* Begin PBXNativeTarget section */
|
||||
00E356ED1AD99517003FC87E /* LxMusicMobileTests */ = {
|
||||
isa = PBXNativeTarget;
|
||||
buildConfigurationList = 00E357021AD99517003FC87E /* Build configuration list for PBXNativeTarget "LxMusicMobileTests" */;
|
||||
buildPhases = (
|
||||
A55EABD7B0C7F3A422A6CC61 /* [CP] Check Pods Manifest.lock */,
|
||||
00E356EA1AD99517003FC87E /* Sources */,
|
||||
00E356EB1AD99517003FC87E /* Frameworks */,
|
||||
00E356EC1AD99517003FC87E /* Resources */,
|
||||
C59DA0FBD6956966B86A3779 /* [CP] Embed Pods Frameworks */,
|
||||
F6A41C54EA430FDDC6A6ED99 /* [CP] Copy Pods Resources */,
|
||||
);
|
||||
buildRules = (
|
||||
);
|
||||
dependencies = (
|
||||
00E356F51AD99517003FC87E /* PBXTargetDependency */,
|
||||
);
|
||||
name = LxMusicMobileTests;
|
||||
productName = LxMusicMobileTests;
|
||||
productReference = 00E356EE1AD99517003FC87E /* LxMusicMobileTests.xctest */;
|
||||
productType = "com.apple.product-type.bundle.unit-test";
|
||||
};
|
||||
13B07F861A680F5B00A75B9A /* LxMusicMobile */ = {
|
||||
isa = PBXNativeTarget;
|
||||
buildConfigurationList = 13B07F931A680F5B00A75B9A /* Build configuration list for PBXNativeTarget "LxMusicMobile" */;
|
||||
buildPhases = (
|
||||
C38B50BA6285516D6DCD4F65 /* [CP] Check Pods Manifest.lock */,
|
||||
13B07F871A680F5B00A75B9A /* Sources */,
|
||||
13B07F8C1A680F5B00A75B9A /* Frameworks */,
|
||||
13B07F8E1A680F5B00A75B9A /* Resources */,
|
||||
00DD1BFF1BD5951E006B06BC /* Bundle React Native code and images */,
|
||||
00EEFC60759A1932668264C0 /* [CP] Embed Pods Frameworks */,
|
||||
E235C05ADACE081382539298 /* [CP] Copy Pods Resources */,
|
||||
);
|
||||
buildRules = (
|
||||
);
|
||||
dependencies = (
|
||||
);
|
||||
name = LxMusicMobile;
|
||||
productName = LxMusicMobile;
|
||||
productReference = 13B07F961A680F5B00A75B9A /* LxMusicMobile.app */;
|
||||
productType = "com.apple.product-type.application";
|
||||
};
|
||||
/* End PBXNativeTarget section */
|
||||
|
||||
/* Begin PBXProject section */
|
||||
83CBB9F71A601CBA00E9B192 /* Project object */ = {
|
||||
isa = PBXProject;
|
||||
attributes = {
|
||||
LastUpgradeCheck = 1210;
|
||||
TargetAttributes = {
|
||||
00E356ED1AD99517003FC87E = {
|
||||
CreatedOnToolsVersion = 6.2;
|
||||
TestTargetID = 13B07F861A680F5B00A75B9A;
|
||||
};
|
||||
13B07F861A680F5B00A75B9A = {
|
||||
LastSwiftMigration = 1120;
|
||||
};
|
||||
};
|
||||
};
|
||||
buildConfigurationList = 83CBB9FA1A601CBA00E9B192 /* Build configuration list for PBXProject "LxMusicMobile" */;
|
||||
compatibilityVersion = "Xcode 12.0";
|
||||
developmentRegion = en;
|
||||
hasScannedForEncodings = 0;
|
||||
knownRegions = (
|
||||
en,
|
||||
Base,
|
||||
);
|
||||
mainGroup = 83CBB9F61A601CBA00E9B192;
|
||||
productRefGroup = 83CBBA001A601CBA00E9B192 /* Products */;
|
||||
projectDirPath = "";
|
||||
projectRoot = "";
|
||||
targets = (
|
||||
13B07F861A680F5B00A75B9A /* LxMusicMobile */,
|
||||
00E356ED1AD99517003FC87E /* LxMusicMobileTests */,
|
||||
);
|
||||
};
|
||||
/* End PBXProject section */
|
||||
|
||||
/* Begin PBXResourcesBuildPhase section */
|
||||
00E356EC1AD99517003FC87E /* Resources */ = {
|
||||
isa = PBXResourcesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
13B07F8E1A680F5B00A75B9A /* Resources */ = {
|
||||
isa = PBXResourcesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
81AB9BB82411601600AC10FF /* LaunchScreen.storyboard in Resources */,
|
||||
13B07FBF1A68108700A75B9A /* Images.xcassets in Resources */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
/* End PBXResourcesBuildPhase section */
|
||||
|
||||
/* Begin PBXShellScriptBuildPhase section */
|
||||
00DD1BFF1BD5951E006B06BC /* Bundle React Native code and images */ = {
|
||||
isa = PBXShellScriptBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
);
|
||||
inputPaths = (
|
||||
"$(SRCROOT)/.xcode.env.local",
|
||||
"$(SRCROOT)/.xcode.env",
|
||||
);
|
||||
name = "Bundle React Native code and images";
|
||||
outputPaths = (
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
shellPath = /bin/sh;
|
||||
shellScript = "set -e\n\nWITH_ENVIRONMENT=\"../node_modules/react-native/scripts/xcode/with-environment.sh\"\nREACT_NATIVE_XCODE=\"../node_modules/react-native/scripts/react-native-xcode.sh\"\n\n/bin/sh -c \"$WITH_ENVIRONMENT $REACT_NATIVE_XCODE\"\n";
|
||||
};
|
||||
00EEFC60759A1932668264C0 /* [CP] Embed Pods Frameworks */ = {
|
||||
isa = PBXShellScriptBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
);
|
||||
inputFileListPaths = (
|
||||
"${PODS_ROOT}/Target Support Files/Pods-LxMusicMobile/Pods-LxMusicMobile-frameworks-${CONFIGURATION}-input-files.xcfilelist",
|
||||
);
|
||||
name = "[CP] Embed Pods Frameworks";
|
||||
outputFileListPaths = (
|
||||
"${PODS_ROOT}/Target Support Files/Pods-LxMusicMobile/Pods-LxMusicMobile-frameworks-${CONFIGURATION}-output-files.xcfilelist",
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
shellPath = /bin/sh;
|
||||
shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-LxMusicMobile/Pods-LxMusicMobile-frameworks.sh\"\n";
|
||||
showEnvVarsInLog = 0;
|
||||
};
|
||||
A55EABD7B0C7F3A422A6CC61 /* [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-LxMusicMobileTests-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;
|
||||
};
|
||||
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 */;
|
||||
}
|
@ -1,88 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<Scheme
|
||||
LastUpgradeVersion = "1210"
|
||||
version = "1.3">
|
||||
<BuildAction
|
||||
parallelizeBuildables = "YES"
|
||||
buildImplicitDependencies = "YES">
|
||||
<BuildActionEntries>
|
||||
<BuildActionEntry
|
||||
buildForTesting = "YES"
|
||||
buildForRunning = "YES"
|
||||
buildForProfiling = "YES"
|
||||
buildForArchiving = "YES"
|
||||
buildForAnalyzing = "YES">
|
||||
<BuildableReference
|
||||
BuildableIdentifier = "primary"
|
||||
BlueprintIdentifier = "13B07F861A680F5B00A75B9A"
|
||||
BuildableName = "LxMusicMobile.app"
|
||||
BlueprintName = "LxMusicMobile"
|
||||
ReferencedContainer = "container:LxMusicMobile.xcodeproj">
|
||||
</BuildableReference>
|
||||
</BuildActionEntry>
|
||||
</BuildActionEntries>
|
||||
</BuildAction>
|
||||
<TestAction
|
||||
buildConfiguration = "Debug"
|
||||
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
|
||||
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
|
||||
shouldUseLaunchSchemeArgsEnv = "YES">
|
||||
<Testables>
|
||||
<TestableReference
|
||||
skipped = "NO">
|
||||
<BuildableReference
|
||||
BuildableIdentifier = "primary"
|
||||
BlueprintIdentifier = "00E356ED1AD99517003FC87E"
|
||||
BuildableName = "LxMusicMobileTests.xctest"
|
||||
BlueprintName = "LxMusicMobileTests"
|
||||
ReferencedContainer = "container:LxMusicMobile.xcodeproj">
|
||||
</BuildableReference>
|
||||
</TestableReference>
|
||||
</Testables>
|
||||
</TestAction>
|
||||
<LaunchAction
|
||||
buildConfiguration = "Debug"
|
||||
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
|
||||
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
|
||||
launchStyle = "0"
|
||||
useCustomWorkingDirectory = "NO"
|
||||
ignoresPersistentStateOnLaunch = "NO"
|
||||
debugDocumentVersioning = "YES"
|
||||
debugServiceExtension = "internal"
|
||||
allowLocationSimulation = "YES">
|
||||
<BuildableProductRunnable
|
||||
runnableDebuggingMode = "0">
|
||||
<BuildableReference
|
||||
BuildableIdentifier = "primary"
|
||||
BlueprintIdentifier = "13B07F861A680F5B00A75B9A"
|
||||
BuildableName = "LxMusicMobile.app"
|
||||
BlueprintName = "LxMusicMobile"
|
||||
ReferencedContainer = "container:LxMusicMobile.xcodeproj">
|
||||
</BuildableReference>
|
||||
</BuildableProductRunnable>
|
||||
</LaunchAction>
|
||||
<ProfileAction
|
||||
buildConfiguration = "Release"
|
||||
shouldUseLaunchSchemeArgsEnv = "YES"
|
||||
savedToolIdentifier = ""
|
||||
useCustomWorkingDirectory = "NO"
|
||||
debugDocumentVersioning = "YES">
|
||||
<BuildableProductRunnable
|
||||
runnableDebuggingMode = "0">
|
||||
<BuildableReference
|
||||
BuildableIdentifier = "primary"
|
||||
BlueprintIdentifier = "13B07F861A680F5B00A75B9A"
|
||||
BuildableName = "LxMusicMobile.app"
|
||||
BlueprintName = "LxMusicMobile"
|
||||
ReferencedContainer = "container:LxMusicMobile.xcodeproj">
|
||||
</BuildableReference>
|
||||
</BuildableProductRunnable>
|
||||
</ProfileAction>
|
||||
<AnalyzeAction
|
||||
buildConfiguration = "Debug">
|
||||
</AnalyzeAction>
|
||||
<ArchiveAction
|
||||
buildConfiguration = "Release"
|
||||
revealArchiveInOrganizer = "YES">
|
||||
</ArchiveAction>
|
||||
</Scheme>
|
@ -1,6 +0,0 @@
|
||||
#import <RCTAppDelegate.h>
|
||||
#import <UIKit/UIKit.h>
|
||||
|
||||
@interface AppDelegate : RCTAppDelegate
|
||||
|
||||
@end
|
@ -1,36 +0,0 @@
|
||||
#import "AppDelegate.h"
|
||||
#import <ReactNativeNavigation/ReactNativeNavigation.h>
|
||||
|
||||
#import <React/RCTBundleURLProvider.h>
|
||||
|
||||
@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<id<RCTBridgeModule>> *)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
|
@ -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
|
||||
}
|
||||
}
|
@ -1,6 +0,0 @@
|
||||
{
|
||||
"info" : {
|
||||
"version" : 1,
|
||||
"author" : "xcode"
|
||||
}
|
||||
}
|
@ -1,52 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>CFBundleDevelopmentRegion</key>
|
||||
<string>en</string>
|
||||
<key>CFBundleDisplayName</key>
|
||||
<string>LxMusicMobile</string>
|
||||
<key>CFBundleExecutable</key>
|
||||
<string>$(EXECUTABLE_NAME)</string>
|
||||
<key>CFBundleIdentifier</key>
|
||||
<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
|
||||
<key>CFBundleInfoDictionaryVersion</key>
|
||||
<string>6.0</string>
|
||||
<key>CFBundleName</key>
|
||||
<string>$(PRODUCT_NAME)</string>
|
||||
<key>CFBundlePackageType</key>
|
||||
<string>APPL</string>
|
||||
<key>CFBundleShortVersionString</key>
|
||||
<string>$(MARKETING_VERSION)</string>
|
||||
<key>CFBundleSignature</key>
|
||||
<string>????</string>
|
||||
<key>CFBundleVersion</key>
|
||||
<string>$(CURRENT_PROJECT_VERSION)</string>
|
||||
<key>LSRequiresIPhoneOS</key>
|
||||
<true/>
|
||||
<key>NSAppTransportSecurity</key>
|
||||
<dict>
|
||||
<!-- Do not change NSAllowsArbitraryLoads to true, or you will risk app rejection! -->
|
||||
<key>NSAllowsArbitraryLoads</key>
|
||||
<false/>
|
||||
<key>NSAllowsLocalNetworking</key>
|
||||
<true/>
|
||||
</dict>
|
||||
<key>NSLocationWhenInUseUsageDescription</key>
|
||||
<string></string>
|
||||
<key>UILaunchStoryboardName</key>
|
||||
<string>LaunchScreen</string>
|
||||
<key>UIRequiredDeviceCapabilities</key>
|
||||
<array>
|
||||
<string>armv7</string>
|
||||
</array>
|
||||
<key>UISupportedInterfaceOrientations</key>
|
||||
<array>
|
||||
<string>UIInterfaceOrientationPortrait</string>
|
||||
<string>UIInterfaceOrientationLandscapeLeft</string>
|
||||
<string>UIInterfaceOrientationLandscapeRight</string>
|
||||
</array>
|
||||
<key>UIViewControllerBasedStatusBarAppearance</key>
|
||||
<true/>
|
||||
</dict>
|
||||
</plist>
|
@ -1,47 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="15702" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" launchScreen="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES" initialViewController="01J-lp-oVM">
|
||||
<device id="retina4_7" orientation="portrait" appearance="light"/>
|
||||
<dependencies>
|
||||
<deployment identifier="iOS"/>
|
||||
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="15704"/>
|
||||
<capability name="Safe area layout guides" minToolsVersion="9.0"/>
|
||||
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
|
||||
</dependencies>
|
||||
<scenes>
|
||||
<!--View Controller-->
|
||||
<scene sceneID="EHf-IW-A2E">
|
||||
<objects>
|
||||
<viewController id="01J-lp-oVM" sceneMemberID="viewController">
|
||||
<view key="view" contentMode="scaleToFill" id="Ze5-6b-2t3">
|
||||
<rect key="frame" x="0.0" y="0.0" width="375" height="667"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<subviews>
|
||||
<label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="LxMusicMobile" textAlignment="center" lineBreakMode="middleTruncation" baselineAdjustment="alignBaselines" minimumFontSize="18" translatesAutoresizingMaskIntoConstraints="NO" id="GJd-Yh-RWb">
|
||||
<rect key="frame" x="0.0" y="202" width="375" height="43"/>
|
||||
<fontDescription key="fontDescription" type="boldSystem" pointSize="36"/>
|
||||
<nil key="highlightedColor"/>
|
||||
</label>
|
||||
<label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Powered by React Native" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" minimumFontSize="9" translatesAutoresizingMaskIntoConstraints="NO" id="MN2-I3-ftu">
|
||||
<rect key="frame" x="0.0" y="626" width="375" height="21"/>
|
||||
<fontDescription key="fontDescription" type="system" pointSize="17"/>
|
||||
<nil key="highlightedColor"/>
|
||||
</label>
|
||||
</subviews>
|
||||
<color key="backgroundColor" systemColor="systemBackgroundColor" cocoaTouchSystemColor="whiteColor"/>
|
||||
<constraints>
|
||||
<constraint firstItem="Bcu-3y-fUS" firstAttribute="bottom" secondItem="MN2-I3-ftu" secondAttribute="bottom" constant="20" id="OZV-Vh-mqD"/>
|
||||
<constraint firstItem="Bcu-3y-fUS" firstAttribute="centerX" secondItem="GJd-Yh-RWb" secondAttribute="centerX" id="Q3B-4B-g5h"/>
|
||||
<constraint firstItem="MN2-I3-ftu" firstAttribute="centerX" secondItem="Bcu-3y-fUS" secondAttribute="centerX" id="akx-eg-2ui"/>
|
||||
<constraint firstItem="MN2-I3-ftu" firstAttribute="leading" secondItem="Bcu-3y-fUS" secondAttribute="leading" id="i1E-0Y-4RG"/>
|
||||
<constraint firstItem="GJd-Yh-RWb" firstAttribute="centerY" secondItem="Ze5-6b-2t3" secondAttribute="bottom" multiplier="1/3" constant="1" id="moa-c2-u7t"/>
|
||||
<constraint firstItem="GJd-Yh-RWb" firstAttribute="leading" secondItem="Bcu-3y-fUS" secondAttribute="leading" symbolic="YES" id="x7j-FC-K8j"/>
|
||||
</constraints>
|
||||
<viewLayoutGuide key="safeArea" id="Bcu-3y-fUS"/>
|
||||
</view>
|
||||
</viewController>
|
||||
<placeholder placeholderIdentifier="IBFirstResponder" id="iYj-Kq-Ea1" userLabel="First Responder" sceneMemberID="firstResponder"/>
|
||||
</objects>
|
||||
<point key="canvasLocation" x="52.173913043478265" y="375"/>
|
||||
</scene>
|
||||
</scenes>
|
||||
</document>
|
@ -1,10 +0,0 @@
|
||||
#import <UIKit/UIKit.h>
|
||||
|
||||
#import "AppDelegate.h"
|
||||
|
||||
int main(int argc, char *argv[])
|
||||
{
|
||||
@autoreleasepool {
|
||||
return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));
|
||||
}
|
||||
}
|
@ -1,24 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>CFBundleDevelopmentRegion</key>
|
||||
<string>en</string>
|
||||
<key>CFBundleExecutable</key>
|
||||
<string>$(EXECUTABLE_NAME)</string>
|
||||
<key>CFBundleIdentifier</key>
|
||||
<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
|
||||
<key>CFBundleInfoDictionaryVersion</key>
|
||||
<string>6.0</string>
|
||||
<key>CFBundleName</key>
|
||||
<string>$(PRODUCT_NAME)</string>
|
||||
<key>CFBundlePackageType</key>
|
||||
<string>BNDL</string>
|
||||
<key>CFBundleShortVersionString</key>
|
||||
<string>1.0</string>
|
||||
<key>CFBundleSignature</key>
|
||||
<string>????</string>
|
||||
<key>CFBundleVersion</key>
|
||||
<string>1</string>
|
||||
</dict>
|
||||
</plist>
|
@ -1,66 +0,0 @@
|
||||
#import <UIKit/UIKit.h>
|
||||
#import <XCTest/XCTest.h>
|
||||
|
||||
#import <React/RCTLog.h>
|
||||
#import <React/RCTRootView.h>
|
||||
|
||||
#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
|
55
ios/Podfile
55
ios/Podfile
@ -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
|
8
package-lock.json
generated
8
package-lock.json
generated
@ -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",
|
||||
|
12
package.json
12
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",
|
||||
|
@ -1,4 +1,4 @@
|
||||
我们发布了关于 LX Music 项目发展调整与新项目计划的说明,
|
||||
我们发布了关于 LX Music Mod 项目发展调整与新项目计划的说明,
|
||||
详情看: https://github.com/lyswhut/lx-music-desktop/issues/1912
|
||||
|
||||
### 新增
|
||||
|
File diff suppressed because one or more lines are too long
@ -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 = [
|
||||
|
@ -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",
|
||||
|
@ -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": "锁定歌词",
|
||||
|
@ -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 = () => {
|
||||
<View style={styles.main}>
|
||||
<Text style={styles.title} size={18} >许可协议</Text>
|
||||
<ScrollView style={styles.content} keyboardShouldPersistTaps={'always'}>
|
||||
<Text selectable style={styles.text} >** 此版本非洛雪音乐助手LX Music官方发布,请勿在官方的Github Issue询问问题 **</Text>
|
||||
|
||||
<Text selectable style={styles.text} >本项目(软件)基于 <Text onPress={openLicensePage} style={textLinkStyle}>Apache License 2.0</Text> 许可证发行,在使用本软件前,你(使用者)需签署本协议才可继续使用,以下协议是对于 Apache License 2.0 的补充,如有冲突,以以下协议为准。{'\n'}</Text>
|
||||
<Text selectable style={styles.text} >词语约定:本协议中的“本软件”指洛雪音乐移动版项目;“使用者”指签署本协议的使用者;“官方音乐平台”指对本软件内置的包括酷我、酷狗、咪咕等音乐源的官方平台统称;“版权数据”指包括但不限于图像、音频、名字等在内的他人拥有所属版权的数据。{'\n'}</Text>
|
||||
<Text selectable style={styles.bold} >一、数据来源</Text>
|
||||
|
@ -70,7 +70,7 @@ const Header = () => {
|
||||
<View style={{ paddingTop: statusBarHeight }}>
|
||||
<View style={styles.header}>
|
||||
<Icon name="logo" color={theme['c-primary-dark-100-alpha-300']} size={22} />
|
||||
{/* <Text style={styles.headerText} size={16} color={theme['c-primary-dark-100-alpha-300']}>LX Music</Text> */}
|
||||
{/* <Text style={styles.headerText} size={16} color={theme['c-primary-dark-100-alpha-300']}>LX Music Mod</Text> */}
|
||||
</View>
|
||||
</View>
|
||||
)
|
||||
|
@ -64,7 +64,7 @@ const Header = () => {
|
||||
<View style={{ paddingTop: statusBarHeight, backgroundColor: theme['c-primary-light-700-alpha-500'] }}>
|
||||
<View style={styles.header}>
|
||||
<Icon name="logo" color={theme['c-primary-dark-100-alpha-300']} size={28} />
|
||||
<Text style={styles.headerText} size={28} color={theme['c-primary-dark-100-alpha-300']}>LX Music</Text>
|
||||
<Text style={styles.headerText} size={28} color={theme['c-primary-dark-100-alpha-300']}>LX Music Mod</Text>
|
||||
</View>
|
||||
</View>
|
||||
)
|
||||
|
@ -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(() => {
|
||||
<View style={styles.part}>
|
||||
<Text style={styles.text} >本软件完全免费,代码已开源,开源地址:</Text>
|
||||
<TouchableOpacity onPress={openHomePage}>
|
||||
<Text style={textLinkStyle}>https://github.com/lyswhut/lx-music-mobile</Text>
|
||||
<Text style={textLinkStyle}>https://github.com/ikunshare/lx-music-mobile-mod</Text>
|
||||
</TouchableOpacity>
|
||||
</View>
|
||||
<View style={styles.part}>
|
||||
<Text style={styles.text} >最新版网盘下载地址:</Text>
|
||||
<TouchableOpacity onPress={openNetdiskPage}>
|
||||
<Text style={textLinkStyle}>网盘地址(密码:glqw)</Text>
|
||||
<Text style={textLinkStyle}>网盘地址(密码:LXMusicMod)</Text>
|
||||
</TouchableOpacity>
|
||||
</View>
|
||||
<View style={styles.part}>
|
||||
@ -80,9 +65,9 @@ export default memo(() => {
|
||||
<View style={styles.part}>
|
||||
<Text style={styles.text}><Text style={styles.boldText}>本软件没有客服</Text>,但我们整理了一些常见的使用问题,<Text style={styles.boldText} >仔细 仔细 仔细 </Text>地阅读常见问题后,</Text>
|
||||
<Text style={styles.text}>仍有问题可加企鹅群 </Text>
|
||||
<TouchableOpacity onPress={goToQQGroup}><Text style={textLinkStyle}>830125506</Text></TouchableOpacity>
|
||||
<TouchableOpacity onPress={goToQQGroup}><Text style={textLinkStyle}>690309707</Text></TouchableOpacity>
|
||||
<Text style={styles.text}> 反馈。</Text>
|
||||
<Text style={styles.text}>注意:<Text style={styles.boldText}>为免满人,无事勿加,入群先看群公告</Text></Text>
|
||||
<Text style={styles.text}>注意:<Text style={styles.boldText}>为了群主+管理的寿命,入群先看群公告</Text></Text>
|
||||
</View>
|
||||
<View style={styles.part}>
|
||||
<Text style={styles.text}>目前本项目的原始发布地址只有<Text style={styles.boldText}>GitHub</Text>及<Text style={styles.boldText}>蓝奏网盘</Text>,其他渠道均为第三方转载发布,可信度请自行鉴别。</Text>
|
||||
@ -93,16 +78,6 @@ export default memo(() => {
|
||||
<View style={styles.part}>
|
||||
<Text style={styles.text}>由于软件开发的初衷仅是为了对新技术的学习与研究,因此软件直至停止维护都将会一直保持纯净。</Text>
|
||||
</View>
|
||||
<View style={styles.part}>
|
||||
<Text style={styles.text}>你已签署本软件的</Text>
|
||||
<TouchableOpacity onPress={openPactModal}><Text style={styles.text} color={theme['c-primary-font']}>许可协议</Text></TouchableOpacity>
|
||||
<Text style={styles.text}>,协议的在线版本在</Text>
|
||||
<TouchableOpacity onPress={openPartPage}><Text style={textLinkStyle}>这里</Text></TouchableOpacity>
|
||||
</View>
|
||||
<View style={styles.part}>
|
||||
<Text style={styles.text}>By:</Text>
|
||||
<Text style={styles.text}>落雪无痕</Text>
|
||||
</View>
|
||||
</Section>
|
||||
)
|
||||
})
|
||||
|
@ -6,6 +6,18 @@ const sources: Array<{
|
||||
disabled: boolean
|
||||
supportQualitys: Partial<Record<LX.OnlineSource, LX.Quality[]>>
|
||||
}> = [
|
||||
{
|
||||
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
|
@ -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}`]
|
||||
|
@ -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)
|
||||
},
|
||||
}
|
@ -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
|
@ -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',
|
||||
}
|
||||
})
|
||||
},
|
||||
}
|
@ -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
|
||||
},
|
||||
}
|
@ -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',
|
||||
})
|
||||
})
|
||||
},
|
||||
}
|
@ -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
|
@ -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,
|
||||
|
24
src/utils/musicSdk/kg/api-ikun.js
Normal file
24
src/utils/musicSdk/kg/api-ikun.js
Normal file
@ -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
|
24
src/utils/musicSdk/kw/api-ikun.js
Normal file
24
src/utils/musicSdk/kw/api-ikun.js
Normal file
@ -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
|
24
src/utils/musicSdk/mg/api-ikun.js
Normal file
24
src/utils/musicSdk/mg/api-ikun.js
Normal file
@ -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
|
27
src/utils/musicSdk/tx/api-ikun.js
Normal file
27
src/utils/musicSdk/tx/api-ikun.js
Normal file
@ -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
|
24
src/utils/musicSdk/wy/api-ikun.js
Normal file
24
src/utils/musicSdk/wy/api-ikun.js
Normal file
@ -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
|
@ -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
|
@ -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)',
|
||||
|
Loading…
x
Reference in New Issue
Block a user