fix
2
.github/ISSUE_TEMPLATE/bug.yml
vendored
@ -10,7 +10,7 @@ body:
|
|||||||
options:
|
options:
|
||||||
- label: 我已阅读 [常见问题](https://lyswhut.github.io/lx-music-doc/mobile/faq),但没有找到解决方案。
|
- label: 我已阅读 [常见问题](https://lyswhut.github.io/lx-music-doc/mobile/faq),但没有找到解决方案。
|
||||||
required: true
|
required: true
|
||||||
- label: 我已搜索 [Issue 列表](https://github.com/lyswhut/lx-music-mobile/issues?q=is%3Aissue+),但没有发现类似的问题。
|
- label: 我已搜索 [Issue 列表](https://github.com/ikunshare/ikun-music-mobile/issues?q=is%3Aissue+),但没有发现类似的问题。
|
||||||
required: true
|
required: true
|
||||||
- type: textarea
|
- type: textarea
|
||||||
id: expected-behavior
|
id: expected-behavior
|
||||||
|
2
.github/ISSUE_TEMPLATE/feature.yml
vendored
@ -10,7 +10,7 @@ body:
|
|||||||
options:
|
options:
|
||||||
- label: 我已阅读 [常见问题](https://lyswhut.github.io/lx-music-doc/mobile/faq),但没有找到解决方案。
|
- label: 我已阅读 [常见问题](https://lyswhut.github.io/lx-music-doc/mobile/faq),但没有找到解决方案。
|
||||||
required: true
|
required: true
|
||||||
- label: 我已搜索 [Issue 列表](https://github.com/lyswhut/lx-music-mobile/issues?q=is%3Aissue+),但没有发现类似的问题。
|
- label: 我已搜索 [Issue 列表](https://github.com/ikunshare/ikun-music-mobile/issues?q=is%3Aissue+),但没有发现类似的问题。
|
||||||
required: true
|
required: true
|
||||||
- type: textarea
|
- type: textarea
|
||||||
id: problem-description
|
id: problem-description
|
||||||
|
26
README.md
@ -1,15 +1,15 @@
|
|||||||
<p align="center"><a href="https://github.com/lyswhut/lx-music-mobile"><img width="200" src="https://github.com/lyswhut/lx-music-mobile/blob/master/doc/images/icon.png" alt="lx-music logo"></a></p>
|
<p align="center"><a href="https://github.com/ikunshare/ikun-music-mobile"><img width="200" src="https://github.com/ikunshare/ikun-music-mobile/blob/master/doc/images/icon.png" alt="lx-music logo"></a></p>
|
||||||
|
|
||||||
<h1 align="center">LX Music 移动版</h1>
|
<h1 align="center">LX Music 移动版</h1>
|
||||||
|
|
||||||
<p align="center">
|
<p align="center">
|
||||||
<a href="https://github.com/lyswhut/lx-music-mobile/releases"><img src="https://img.shields.io/github/release/lyswhut/lx-music-mobile" alt="Release version"></a>
|
<a href="https://github.com/ikunshare/ikun-music-mobile/releases"><img src="https://img.shields.io/github/release/ikunshare/ikun-music-mobile" alt="Release version"></a>
|
||||||
<a href="https://github.com/lyswhut/lx-music-mobile/actions/workflows/release.yml"><img src="https://github.com/lyswhut/lx-music-mobile/workflows/Build/badge.svg" alt="Build status"></a>
|
<a href="https://github.com/ikunshare/ikun-music-mobile/actions/workflows/release.yml"><img src="https://github.com/ikunshare/ikun-music-mobile/workflows/Build/badge.svg" alt="Build status"></a>
|
||||||
<a href="https://github.com/lyswhut/lx-music-mobile/actions/workflows/beta-pack.yml"><img src="https://github.com/lyswhut/lx-music-mobile/workflows/Build%20Beta/badge.svg" alt="Build status"></a>
|
<a href="https://github.com/ikunshare/ikun-music-mobile/actions/workflows/beta-pack.yml"><img src="https://github.com/ikunshare/ikun-music-mobile/workflows/Build%20Beta/badge.svg" alt="Build status"></a>
|
||||||
<a href="https://github.com/facebook/react-native"><img src="https://img.shields.io/github/package-json/dependency-version/lyswhut/lx-music-mobile/react-native/master" alt="React native version"></a>
|
<a href="https://github.com/facebook/react-native"><img src="https://img.shields.io/github/package-json/dependency-version/ikunshare/ikun-music-mobile/react-native/master" alt="React native version"></a>
|
||||||
<!-- <a href="https://github.com/lyswhut/lx-music-mobile/releases"><img src="https://img.shields.io/github/downloads/lyswhut/lx-music-mobile/latest/total" alt="Downloads"></a> -->
|
<!-- <a href="https://github.com/ikunshare/ikun-music-mobile/releases"><img src="https://img.shields.io/github/downloads/ikunshare/ikun-music-mobile/latest/total" alt="Downloads"></a> -->
|
||||||
<a href="https://github.com/lyswhut/lx-music-mobile/tree/dev"><img src="https://img.shields.io/github/package-json/v/lyswhut/lx-music-mobile/dev" alt="Dev branch version"></a>
|
<a href="https://github.com/ikunshare/ikun-music-mobile/tree/dev"><img src="https://img.shields.io/github/package-json/v/ikunshare/ikun-music-mobile/dev" alt="Dev branch version"></a>
|
||||||
<!-- <a href="https://github.com/lyswhut/lx-music-mobile/blob/master/LICENSE"><img src="https://img.shields.io/github/license/lyswhut/lx-music-mobile" alt="License"></a> -->
|
<!-- <a href="https://github.com/ikunshare/ikun-music-mobile/blob/master/LICENSE"><img src="https://img.shields.io/github/license/ikunshare/ikun-music-mobile" alt="License"></a> -->
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<p align="center">一个基于 React Native 开发的音乐软件</p>
|
<p align="center">一个基于 React Native 开发的音乐软件</p>
|
||||||
@ -23,13 +23,13 @@
|
|||||||
*注:由于没有相关开发环境及证书,所以 **没有计划支持 iOS**。*<br>
|
*注:由于没有相关开发环境及证书,所以 **没有计划支持 iOS**。*<br>
|
||||||
*桌面版项目地址:<https://github.com/lyswhut/lx-music-desktop>*
|
*桌面版项目地址:<https://github.com/lyswhut/lx-music-desktop>*
|
||||||
|
|
||||||
软件变化请查看 [更新日志](https://github.com/lyswhut/lx-music-mobile/blob/master/CHANGELOG.md)。
|
软件变化请查看 [更新日志](https://github.com/ikunshare/ikun-music-mobile/blob/master/CHANGELOG.md)。
|
||||||
|
|
||||||
软件下载请查看 [GitHub Releases](https://github.com/lyswhut/lx-music-mobile/releases)。
|
软件下载请查看 [GitHub Releases](https://github.com/ikunshare/ikun-music-mobile/releases)。
|
||||||
|
|
||||||
使用常见问题请参阅 [常见问题](https://lyswhut.github.io/lx-music-doc/mobile/faq)。
|
使用常见问题请参阅 [常见问题](https://lyswhut.github.io/lx-music-doc/mobile/faq)。
|
||||||
|
|
||||||
目前本项目的原始发布地址只有 [**GitHub Releases**](https://github.com/lyswhut/lx-music-mobile/releases),其他渠道均为第三方转载发布,与本项目无关!
|
目前本项目的原始发布地址只有 [**GitHub Releases**](https://github.com/ikunshare/ikun-music-mobile/releases),其他渠道均为第三方转载发布,与本项目无关!
|
||||||
|
|
||||||
为了提高使用门槛,本软件内的默认设置、UI 操作不以新手友好为目标,所以使用前建议先根据你的喜好浏览调整一遍软件设置,阅读一遍 [音乐播放列表机制](https://lyswhut.github.io/lx-music-doc/mobile/faq/playlist)。
|
为了提高使用门槛,本软件内的默认设置、UI 操作不以新手友好为目标,所以使用前建议先根据你的喜好浏览调整一遍软件设置,阅读一遍 [音乐播放列表机制](https://lyswhut.github.io/lx-music-doc/mobile/faq/playlist)。
|
||||||
|
|
||||||
@ -54,11 +54,11 @@
|
|||||||
<!--
|
<!--
|
||||||
## 用户界面
|
## 用户界面
|
||||||
|
|
||||||
<p><a href="https://github.com/lyswhut/lx-music-mobile"><img width="100%" src="https://github.com/lyswhut/lx-music-mobile/blob/master/doc/images/app.png" alt="lx-music mobile UI"></a></p> -->
|
<p><a href="https://github.com/ikunshare/ikun-music-mobile"><img width="100%" src="https://github.com/ikunshare/ikun-music-mobile/blob/master/doc/images/app.png" alt="lx-music mobile UI"></a></p> -->
|
||||||
|
|
||||||
## 项目协议
|
## 项目协议
|
||||||
|
|
||||||
本项目基于 [Apache License 2.0](https://github.com/lyswhut/lx-music-mobile/blob/master/LICENSE) 许可证发行,以下协议是对于 Apache License 2.0 的补充,如有冲突,以以下协议为准。
|
本项目基于 [Apache License 2.0](https://github.com/ikunshare/ikun-music-mobile/blob/master/LICENSE) 许可证发行,以下协议是对于 Apache License 2.0 的补充,如有冲突,以以下协议为准。
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
240610
index.android.bundle
Normal file
@ -64,9 +64,9 @@
|
|||||||
"react-native-pager-view": "6.6.1",
|
"react-native-pager-view": "6.6.1",
|
||||||
"react-native-quick-base64": "^2.1.2",
|
"react-native-quick-base64": "^2.1.2",
|
||||||
"react-native-quick-md5": "^3.0.6",
|
"react-native-quick-md5": "^3.0.6",
|
||||||
"rn-fetch-blob": "^0.12.0",
|
|
||||||
"react-native-track-player": "github:lyswhut/react-native-track-player#57eeeba57e28702fa931d4aeb753da225b6fcf6c",
|
"react-native-track-player": "github:lyswhut/react-native-track-player#57eeeba57e28702fa931d4aeb753da225b6fcf6c",
|
||||||
"react-native-vector-icons": "^10.2.0"
|
"react-native-vector-icons": "^10.2.0",
|
||||||
|
"rn-fetch-blob": "^0.12.0"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@babel/core": "^7.26.0",
|
"@babel/core": "^7.26.0",
|
||||||
|
After Width: | Height: | Size: 609 B |
After Width: | Height: | Size: 126 B |
After Width: | Height: | Size: 123 B |
After Width: | Height: | Size: 187 B |
After Width: | Height: | Size: 282 B |
BIN
res/drawable-mdpi/src_resources_images_defaultuser.jpg
Normal file
After Width: | Height: | Size: 4.3 KiB |
BIN
res/drawable-mdpi/src_resources_images_notificationxhdpi.png
Normal file
After Width: | Height: | Size: 839 B |
BIN
res/drawable-mdpi/src_theme_themes_images_china_ink.jpg
Normal file
After Width: | Height: | Size: 1.1 MiB |
BIN
res/drawable-mdpi/src_theme_themes_images_jqbg.jpg
Normal file
After Width: | Height: | Size: 266 KiB |
BIN
res/drawable-mdpi/src_theme_themes_images_landingmoon2.png
Normal file
After Width: | Height: | Size: 176 KiB |
BIN
res/drawable-mdpi/src_theme_themes_images_myzcbg.jpg
Normal file
After Width: | Height: | Size: 797 KiB |
BIN
res/drawable-mdpi/src_theme_themes_images_xnkl.png
Normal file
After Width: | Height: | Size: 613 KiB |
BIN
res/raw/src_resources_medias_silence02s.mp3
Normal file
@ -2,7 +2,7 @@ const defaultSetting: LX.AppSetting = {
|
|||||||
version: '2.0',
|
version: '2.0',
|
||||||
'common.isAutoTheme': false,
|
'common.isAutoTheme': false,
|
||||||
'common.langId': null,
|
'common.langId': null,
|
||||||
'common.apiSource': 'ikun_zj',
|
'common.apiSource': 'ikun',
|
||||||
'common.sourceNameType': 'alias',
|
'common.sourceNameType': 'alias',
|
||||||
'common.shareType': 'system',
|
'common.shareType': 'system',
|
||||||
'common.isAgreePact': false,
|
'common.isAgreePact': false,
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
import { memo } from 'react'
|
import React, { memo } from 'react'
|
||||||
import { View, TouchableOpacity } from 'react-native'
|
import { View, TouchableOpacity } from 'react-native'
|
||||||
|
|
||||||
import Section from '../components/Section'
|
import Section from '../components/Section'
|
||||||
@ -42,13 +42,14 @@ export default memo(() => {
|
|||||||
// fontSize: 14,
|
// fontSize: 14,
|
||||||
} as const
|
} as const
|
||||||
|
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<Section title={t('setting_about')}>
|
<Section title={t('setting_about')}>
|
||||||
<View style={styles.part}>
|
<View style={styles.part}>
|
||||||
<Text style={styles.text}>本软件完全免费,代码已开源。开源地址:</Text>
|
<Text style={styles.text}>本软件完全免费,代码已开源。开源地址:</Text>
|
||||||
<TouchableOpacity onPress={openHomePage}>
|
<TouchableOpacity onPress={openHomePage}>
|
||||||
<Text style={textLinkStyle}>https://github.com/ikunshare/ikun-music-mobile</Text>
|
<Text style={textLinkStyle}>
|
||||||
|
https://github.com/ikunshare/ikun-music-mobile
|
||||||
|
</Text>
|
||||||
</TouchableOpacity>
|
</TouchableOpacity>
|
||||||
</View>
|
</View>
|
||||||
<View style={styles.part}>
|
<View style={styles.part}>
|
||||||
@ -64,7 +65,12 @@ export default memo(() => {
|
|||||||
</TouchableOpacity>
|
</TouchableOpacity>
|
||||||
</View>
|
</View>
|
||||||
<View style={styles.part}>
|
<View style={styles.part}>
|
||||||
<Text style={styles.text}><Text style={styles.boldText}>本软件没有客服</Text>,但我们整理了一些常见的使用问题。<Text style={styles.boldText} >仔细、仔细、仔细</Text>地阅读常见问题后,</Text>
|
<Text style={styles.text}>
|
||||||
|
<Text style={styles.boldText}>本软件没有客服</Text>
|
||||||
|
,但我们整理了一些常见的使用问题。
|
||||||
|
<Text style={styles.boldText}>仔细、仔细、仔细</Text>
|
||||||
|
地阅读常见问题后,
|
||||||
|
</Text>
|
||||||
<Text style={styles.text}>仍有问题可到 GitHub 提交 </Text>
|
<Text style={styles.text}>仍有问题可到 GitHub 提交 </Text>
|
||||||
<TouchableOpacity onPress={openIssuePage}>
|
<TouchableOpacity onPress={openIssuePage}>
|
||||||
<Text style={textLinkStyle}>Issue</Text>
|
<Text style={textLinkStyle}>Issue</Text>
|
||||||
@ -72,30 +78,49 @@ export default memo(() => {
|
|||||||
<Text style={styles.text}>。</Text>
|
<Text style={styles.text}>。</Text>
|
||||||
</View>
|
</View>
|
||||||
<View style={styles.part}>
|
<View style={styles.part}>
|
||||||
<Text style={styles.text}>由于软件开发的初衷仅是为了对新技术的学习与研究,因此软件直至停止维护都将会一直保持纯净。</Text>
|
<Text style={styles.text}>
|
||||||
|
由于软件开发的初衷仅是为了对新技术的学习与研究,因此软件直至停止维护都将会一直保持纯净。
|
||||||
|
</Text>
|
||||||
</View>
|
</View>
|
||||||
<View style={styles.part}>
|
<View style={styles.part}>
|
||||||
<Text style={styles.text}>目前本项目的原始发布地址<Text style={styles.boldText}>只有 GitHub, Telegram</Text>,其他渠道均为第三方转载发布,可信度请自行鉴别。</Text>
|
<Text style={styles.text}>
|
||||||
|
目前本项目的原始发布地址<Text>只有 GitHub 和 </Text>
|
||||||
|
<TouchableOpacity onPress={goToTGGroup}>
|
||||||
|
<Text style={textLinkStyle}>Telegram</Text>
|
||||||
|
</TouchableOpacity>
|
||||||
|
,其他渠道均为第三方转载发布,可信度请自行鉴别。
|
||||||
|
</Text>
|
||||||
</View>
|
</View>
|
||||||
<View style={styles.part}>
|
<View style={styles.part}>
|
||||||
<Text style={styles.text}><Text style={styles.boldText}>本项目「没有」微信公众号之类的所谓「官方账号」,也未在小米、华为、vivo 等应用商店发布同名应用,谨防被骗!</Text></Text>
|
<Text style={styles.text}>
|
||||||
|
<Text style={styles.boldText}>
|
||||||
|
本项目「没有」微信公众号之类的所谓「官方账号」,也未在小米、华为、vivo
|
||||||
|
等应用商店发布同名应用,谨防被骗!
|
||||||
|
</Text>
|
||||||
|
</Text>
|
||||||
</View>
|
</View>
|
||||||
<View style={styles.part}>
|
<View style={styles.part}>
|
||||||
<Text style={styles.text}>若你使用过程中遇到<Text style={styles.boldText}>广告</Text>或者<Text style={styles.boldText}>引流</Text>(如需要加群、关注公众号之类才能使用或者升级)的信息,则表明你当前运行的软件是「第三方修改版」。</Text>
|
<Text style={styles.text}>
|
||||||
|
若你使用过程中遇到<Text style={styles.boldText}>广告</Text>或者
|
||||||
|
<Text style={styles.boldText}>引流</Text>
|
||||||
|
(如需要加群、关注公众号之类才能使用或者升级)的信息,则表明你当前运行的软件是「第三方修改版」。
|
||||||
|
</Text>
|
||||||
</View>
|
</View>
|
||||||
<View style={styles.part}>
|
<View style={styles.part}>
|
||||||
<Text style={styles.text}>若在升级新版本时提示「<Text style={styles.boldText}>签名不一致</Text>」,则表明你手机上的旧版本或者将要安装的新版本中<Text style={styles.boldText}>有一方</Text>是「<Text style={styles.boldText}>第三方修改版</Text>」。</Text>
|
<Text style={styles.text}>
|
||||||
|
若在升级新版本时提示「<Text style={styles.boldText}>签名不一致</Text>
|
||||||
|
」,则表明你手机上的旧版本或者将要安装的新版本中
|
||||||
|
<Text style={styles.boldText}>有一方</Text>是「
|
||||||
|
<Text style={styles.boldText}>第三方修改版</Text>」。
|
||||||
|
</Text>
|
||||||
</View>
|
</View>
|
||||||
<View style={styles.part}>
|
<View style={styles.part}>
|
||||||
<Text style={styles.text}>你已签署本软件的</Text>
|
<Text style={styles.text}>你已签署本软件的</Text>
|
||||||
<TouchableOpacity onPress={openPactModal}><Text style={styles.text} color={theme['c-primary-font']}>许可协议</Text></TouchableOpacity>
|
<TouchableOpacity onPress={showPactModal}>
|
||||||
<Text style={styles.text}>,协议的在线版本在</Text>
|
<Text style={styles.text} color={theme['c-primary-font']}>
|
||||||
<TouchableOpacity onPress={openPartPage}><Text style={textLinkStyle}>这里</Text></TouchableOpacity>
|
许可协议
|
||||||
<Text style={styles.text}>。</Text>
|
</Text>
|
||||||
</View>
|
</TouchableOpacity>
|
||||||
<View style={styles.part}>
|
|
||||||
<Text style={styles.text}>By: </Text>
|
|
||||||
<Text style={styles.text}>落雪无痕</Text>
|
|
||||||
</View>
|
</View>
|
||||||
</Section>
|
</Section>
|
||||||
)
|
)
|
||||||
|
@ -7,7 +7,7 @@ const sources: Array<{
|
|||||||
supportQualitys: Partial<Record<LX.OnlineSource, LX.Quality[]>>
|
supportQualitys: Partial<Record<LX.OnlineSource, LX.Quality[]>>
|
||||||
}> = [
|
}> = [
|
||||||
{
|
{
|
||||||
id: 'ikun_zj',
|
id: 'ikun',
|
||||||
name: 'ikun公益音源',
|
name: 'ikun公益音源',
|
||||||
disabled: false,
|
disabled: false,
|
||||||
supportQualitys: {
|
supportQualitys: {
|
||||||
@ -17,16 +17,6 @@ const sources: Array<{
|
|||||||
wy: ['128k', '320k', 'flac', 'flac24bit', 'master'],
|
wy: ['128k', '320k', 'flac', 'flac24bit', 'master'],
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
// {
|
|
||||||
// id: 'ikun_cf',
|
|
||||||
// name: 'ikun公益音源(美国Cloudflare节点)',
|
|
||||||
// disabled: false,
|
|
||||||
// supportQualitys: {
|
|
||||||
// kg: ['128k', '320k', 'flac', 'flac24bit', 'master'],
|
|
||||||
// tx: ['128k', '320k', 'flac', 'flac24bit', 'master'],
|
|
||||||
// wy: ['128k', '320k', 'flac', 'flac24bit', 'master'],
|
|
||||||
// },
|
|
||||||
// },
|
|
||||||
]
|
]
|
||||||
|
|
||||||
export default sources
|
export default sources
|
||||||
|
@ -1,24 +1,18 @@
|
|||||||
import apiSourceInfo from './api-source-info'
|
import apiSourceInfo from './api-source-info'
|
||||||
import ikun_zj_api_kg from './kg/api-ikun'
|
import ikun_api_kg from './kg/api-ikun'
|
||||||
import ikun_zj_api_kw from './kw/api-ikun'
|
import ikun_api_kw from './kw/api-ikun'
|
||||||
import ikun_zj_api_tx from './tx/api-ikun'
|
import ikun_api_tx from './tx/api-ikun'
|
||||||
import ikun_zj_api_wy from './wy/api-ikun'
|
import ikun_api_wy from './wy/api-ikun'
|
||||||
// import ikun_zj_api_mg from './mg/api-ikun'
|
import ikun_api_mg from './mg/api-ikun'
|
||||||
// import ikun_cf_api_kg from './kg/api-ikun_us'
|
|
||||||
// import ikun_cf_api_tx from './tx/api-ikun_us'
|
|
||||||
// import ikun_cf_api_wy from './wy/api-ikun_us'
|
|
||||||
import settingState from '@/store/setting/state'
|
import settingState from '@/store/setting/state'
|
||||||
|
|
||||||
|
|
||||||
const apiList = {
|
const apiList = {
|
||||||
ikun_zj_api_kg,
|
ikun_api_kg,
|
||||||
ikun_zj_api_kw,
|
ikun_api_kw,
|
||||||
ikun_zj_api_tx,
|
ikun_api_tx,
|
||||||
ikun_zj_api_wy,
|
ikun_api_wy,
|
||||||
// ikun_zj_api_mg,
|
ikun_api_mg,
|
||||||
// ikun_cf_api_tx,
|
|
||||||
// ikun_cf_api_wy,
|
|
||||||
// ikun_cf_api_kg,
|
|
||||||
}
|
}
|
||||||
const supportQuality = {}
|
const supportQuality = {}
|
||||||
|
|
||||||
|
@ -3,7 +3,7 @@ import { requestMsg } from '../../message'
|
|||||||
import { headers, timeout } from '../options'
|
import { headers, timeout } from '../options'
|
||||||
import { dnsLookup } from '../utils'
|
import { dnsLookup } from '../utils'
|
||||||
|
|
||||||
const api_ikun_zj = {
|
const api_ikun = {
|
||||||
getMusicUrl(songInfo, type) {
|
getMusicUrl(songInfo, type) {
|
||||||
const requestObj = httpFetch(`https://lxmusic.ikunshare.com/url/kg/${songInfo._types[type].hash}/${type}`, {
|
const requestObj = httpFetch(`https://lxmusic.ikunshare.com/url/kg/${songInfo._types[type].hash}/${type}`, {
|
||||||
method: 'get',
|
method: 'get',
|
||||||
@ -25,4 +25,4 @@ const api_ikun_zj = {
|
|||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
export default api_ikun_zj
|
export default api_ikun
|
||||||
|
@ -1,28 +0,0 @@
|
|||||||
import { httpFetch } from '../../request'
|
|
||||||
import { requestMsg } from '../../message'
|
|
||||||
import { headers, timeout } from '../options'
|
|
||||||
import { dnsLookup } from '../utils'
|
|
||||||
|
|
||||||
const api_ikun_cf = {
|
|
||||||
getMusicUrl(songInfo, type) {
|
|
||||||
const requestObj = httpFetch(`https://lxmusic.ikunshare.com/url/kg/${songInfo._types[type].hash}/${type}`, {
|
|
||||||
method: 'get',
|
|
||||||
timeout,
|
|
||||||
headers,
|
|
||||||
lookup: dnsLookup,
|
|
||||||
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 })
|
|
||||||
case 1: return Promise.reject(new Error(requestMsg.ipblock))
|
|
||||||
case 2: return Promise.reject(new Error(requestMsg.fail))
|
|
||||||
case 5: return Promise.reject(new Error(requestMsg.ohh))
|
|
||||||
}
|
|
||||||
})
|
|
||||||
return requestObj
|
|
||||||
},
|
|
||||||
}
|
|
||||||
|
|
||||||
export default api_ikun_cf
|
|
@ -3,7 +3,7 @@ import { requestMsg } from '../../message'
|
|||||||
import { headers, timeout } from '../options'
|
import { headers, timeout } from '../options'
|
||||||
import { dnsLookup } from '../utils'
|
import { dnsLookup } from '../utils'
|
||||||
|
|
||||||
const api_ikun_zj = {
|
const api_ikun = {
|
||||||
getMusicUrl(songInfo, type) {
|
getMusicUrl(songInfo, type) {
|
||||||
const requestObj = httpFetch(`https://lxmusic.ikunshare.com/url/kw/${songInfo.songmid}/${type}`, {
|
const requestObj = httpFetch(`https://lxmusic.ikunshare.com/url/kw/${songInfo.songmid}/${type}`, {
|
||||||
method: 'get',
|
method: 'get',
|
||||||
@ -25,4 +25,4 @@ const api_ikun_zj = {
|
|||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
export default api_ikun_zj
|
export default api_ikun
|
||||||
|
@ -3,7 +3,7 @@ import { requestMsg } from '../../message'
|
|||||||
import { headers, timeout } from '../options'
|
import { headers, timeout } from '../options'
|
||||||
import { dnsLookup } from '../utils'
|
import { dnsLookup } from '../utils'
|
||||||
|
|
||||||
const api_ikun_zj = {
|
const api_ikun = {
|
||||||
getMusicUrl(songInfo, type) {
|
getMusicUrl(songInfo, type) {
|
||||||
const requestObj = httpFetch(`https://lxmusic.ikunshare.com/url/mg/${songInfo.copyrightId}/${type}`, {
|
const requestObj = httpFetch(`https://lxmusic.ikunshare.com/url/mg/${songInfo.copyrightId}/${type}`, {
|
||||||
method: 'get',
|
method: 'get',
|
||||||
@ -25,4 +25,4 @@ const api_ikun_zj = {
|
|||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
export default api_ikun_zj
|
export default api_ikun
|
||||||
|
@ -3,7 +3,7 @@ import { requestMsg } from '../../message'
|
|||||||
import { headers, timeout } from '../options'
|
import { headers, timeout } from '../options'
|
||||||
import { dnsLookup } from '../utils'
|
import { dnsLookup } from '../utils'
|
||||||
|
|
||||||
const api_ikun_zj = {
|
const api_ikun = {
|
||||||
getMusicUrl(songInfo, type) {
|
getMusicUrl(songInfo, type) {
|
||||||
const requestObj = httpFetch(`https://lxmusic.ikunshare.com/url/tx/${songInfo.songmid}/${type}`, {
|
const requestObj = httpFetch(`https://lxmusic.ikunshare.com/url/tx/${songInfo.songmid}/${type}`, {
|
||||||
method: 'get',
|
method: 'get',
|
||||||
@ -28,4 +28,4 @@ const api_ikun_zj = {
|
|||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
export default api_ikun_zj
|
export default api_ikun
|
||||||
|
@ -1,31 +0,0 @@
|
|||||||
import { httpFetch } from '../../request'
|
|
||||||
import { requestMsg } from '../../message'
|
|
||||||
import { headers, timeout } from '../options'
|
|
||||||
import { dnsLookup } from '../utils'
|
|
||||||
|
|
||||||
const api_ikun_cf = {
|
|
||||||
getMusicUrl(songInfo, type) {
|
|
||||||
const requestObj = httpFetch(`https://lxmusic.ikunshare.com/url/tx/${songInfo.songmid}/${type}`, {
|
|
||||||
method: 'get',
|
|
||||||
timeout,
|
|
||||||
headers,
|
|
||||||
lookup: dnsLookup,
|
|
||||||
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 })
|
|
||||||
case 1: return Promise.reject(new Error(requestMsg.ipblock))
|
|
||||||
case 2: return Promise.reject(new Error(requestMsg.fail))
|
|
||||||
case 5: return Promise.reject(new Error(requestMsg.ohh))
|
|
||||||
}
|
|
||||||
})
|
|
||||||
return requestObj
|
|
||||||
},
|
|
||||||
getPic(songInfo) {
|
|
||||||
return Promise.resolve(`https://y.gtimg.cn/music/photo_new/T002R500x500M000${songInfo.albumId}.jpg`)
|
|
||||||
},
|
|
||||||
}
|
|
||||||
|
|
||||||
export default api_ikun_cf
|
|
@ -3,7 +3,7 @@ import { requestMsg } from '../../message'
|
|||||||
import { headers, timeout } from '../options'
|
import { headers, timeout } from '../options'
|
||||||
import { dnsLookup } from '../utils'
|
import { dnsLookup } from '../utils'
|
||||||
|
|
||||||
const api_ikun_zj = {
|
const api_ikun = {
|
||||||
getMusicUrl(songInfo, type) {
|
getMusicUrl(songInfo, type) {
|
||||||
const requestObj = httpFetch(`https://lxmusic.ikunshare.com/url/wy/${songInfo.songmid}/${type}`, {
|
const requestObj = httpFetch(`https://lxmusic.ikunshare.com/url/wy/${songInfo.songmid}/${type}`, {
|
||||||
method: 'get',
|
method: 'get',
|
||||||
@ -25,4 +25,4 @@ const api_ikun_zj = {
|
|||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
export default api_ikun_zj
|
export default api_ikun
|
||||||
|
@ -1,28 +0,0 @@
|
|||||||
import { httpFetch } from '../../request'
|
|
||||||
import { requestMsg } from '../../message'
|
|
||||||
import { headers, timeout } from '../options'
|
|
||||||
import { dnsLookup } from '../utils'
|
|
||||||
|
|
||||||
const api_ikun_cf = {
|
|
||||||
getMusicUrl(songInfo, type) {
|
|
||||||
const requestObj = httpFetch(`https://lxmusic.ikunshare.com/url/wy/${songInfo.songmid}/${type}`, {
|
|
||||||
method: 'get',
|
|
||||||
timeout,
|
|
||||||
headers,
|
|
||||||
lookup: dnsLookup,
|
|
||||||
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 })
|
|
||||||
case 1: return Promise.reject(new Error(requestMsg.ipblock))
|
|
||||||
case 2: return Promise.reject(new Error(requestMsg.fail))
|
|
||||||
case 5: return Promise.reject(new Error(requestMsg.ohh))
|
|
||||||
}
|
|
||||||
})
|
|
||||||
return requestObj
|
|
||||||
},
|
|
||||||
}
|
|
||||||
|
|
||||||
export default api_ikun_cf
|
|
@ -247,7 +247,7 @@ const parseTools = {
|
|||||||
// return requestObj
|
// return requestObj
|
||||||
// }
|
// }
|
||||||
|
|
||||||
// https://github.com/lyswhut/lx-music-mobile/issues/370
|
// https://github.com/ikunshare/ikun-music-mobile/issues/370
|
||||||
const fixTimeLabel = (lrc, tlrc, romalrc) => {
|
const fixTimeLabel = (lrc, tlrc, romalrc) => {
|
||||||
if (lrc) {
|
if (lrc) {
|
||||||
let newLrc = lrc.replace(/\[(\d{2}:\d{2}):(\d{2})]/g, '[$1.$2]')
|
let newLrc = lrc.replace(/\[(\d{2}:\d{2}):(\d{2})]/g, '[$1.$2]')
|
||||||
|