mirror of
https://github.com/imsyy/SPlayer.git
synced 2025-11-25 03:14:57 +08:00
Compare commits
6 Commits
ce3d469547
...
207f84fcd7
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
207f84fcd7 | ||
|
|
2985aa5977 | ||
|
|
ffd7aeff49 | ||
|
|
7f4a88daa1 | ||
|
|
91171465b2 | ||
|
|
1744a5a678 |
@@ -244,6 +244,24 @@
|
||||
</div>
|
||||
<n-switch v-model:value="settingStore.lyricsBlur" class="set" :round="false" />
|
||||
</n-card>
|
||||
</div>
|
||||
<div class="set-list">
|
||||
<n-h3 prefix="bar">
|
||||
歌词内容
|
||||
</n-h3>
|
||||
<n-card class="set-item">
|
||||
<div class="label">
|
||||
<n-text class="name">
|
||||
启用在线 TTML 歌词
|
||||
<n-tag type="warning" size="small" round style="display: inline; vertical-align: middle;">Beta</n-tag>
|
||||
</n-text>
|
||||
<n-text class="tip" :depth="3">
|
||||
是否从 AMLL TTML DB 获取歌词(如有),TTML
|
||||
歌词支持逐字、翻译、音译等功能,将会在下一首歌生效
|
||||
</n-text>
|
||||
</div>
|
||||
<n-switch v-model:value="settingStore.enableTTMLLyric" class="set" :round="false" />
|
||||
</n-card>
|
||||
<n-card class="set-item">
|
||||
<div class="label">
|
||||
<n-text class="name">启用歌词排除</n-text>
|
||||
@@ -307,17 +325,12 @@
|
||||
是否使用物理弹簧算法实现歌词动画效果,需要高性能设备
|
||||
</n-text>
|
||||
</div>
|
||||
<n-switch v-model:value="settingStore.useAMSpring" class="set" :round="false" />
|
||||
</n-card>
|
||||
<n-card class="set-item">
|
||||
<div class="label">
|
||||
<n-text class="name">启用在线 TTML 歌词</n-text>
|
||||
<n-text class="tip" :depth="3">
|
||||
是否从 AMLL TTML DB 获取歌词(如有),TTML
|
||||
歌词支持逐字、翻译、音译等功能,将会在下一首歌生效
|
||||
</n-text>
|
||||
</div>
|
||||
<n-switch v-model:value="settingStore.enableTTMLLyric" class="set" :round="false" />
|
||||
<n-switch
|
||||
v-model:value="settingStore.useAMSpring"
|
||||
class="set"
|
||||
:round="false"
|
||||
:disabled="!settingStore.useAMLyrics"
|
||||
/>
|
||||
</n-card>
|
||||
</div>
|
||||
<div v-if="isElectron" class="set-list">
|
||||
|
||||
@@ -423,8 +423,8 @@ export const parseTTMLToAMLL = (
|
||||
return null;
|
||||
}
|
||||
|
||||
const startTime = words[0].startTime;
|
||||
const endTime = words[words.length - 1].endTime;
|
||||
const startTime = line.startTime || words[0].startTime;
|
||||
const endTime = line.endTime || words[words.length - 1].endTime;
|
||||
|
||||
return {
|
||||
words,
|
||||
|
||||
@@ -84,22 +84,24 @@ export const getUnlockSongUrl = async (songData: SongType): Promise<string | nul
|
||||
const artist = Array.isArray(songData.artists) ? songData.artists[0].name : songData.artists;
|
||||
const keyWord = songData.name + "-" + artist;
|
||||
if (!songId || !keyWord) return null;
|
||||
|
||||
const servers: any[] = [
|
||||
"bodian",
|
||||
"netease",
|
||||
];
|
||||
|
||||
// 尝试解锁
|
||||
const results = await Promise.allSettled([
|
||||
unlockSongUrl(songId, keyWord, "bodian"),
|
||||
unlockSongUrl(songId, keyWord, "netease"),
|
||||
]);
|
||||
const promises = servers.map(server => unlockSongUrl(songId, keyWord, server));
|
||||
const results = await Promise.allSettled(promises);
|
||||
// 解析结果
|
||||
const [neteaseRes, kuwoRes] = results;
|
||||
if (
|
||||
neteaseRes.status === "fulfilled" &&
|
||||
neteaseRes.value.code === 200 &&
|
||||
neteaseRes.value.url
|
||||
) {
|
||||
return neteaseRes.value.url;
|
||||
}
|
||||
if (kuwoRes.status === "fulfilled" && kuwoRes.value.code === 200 && kuwoRes.value.url) {
|
||||
return kuwoRes.value.url;
|
||||
for (const result of results) {
|
||||
if (
|
||||
result.status === "fulfilled" &&
|
||||
result.value.code === 200 &&
|
||||
result.value.url
|
||||
) {
|
||||
return result.value.url;
|
||||
}
|
||||
}
|
||||
return null;
|
||||
} catch (error) {
|
||||
|
||||
Reference in New Issue
Block a user