feat: 插件系统完全兼容PC/Android版格式

This commit is contained in:
QZMusic
2026-06-04 15:13:15 +00:00
parent c36b98fb90
commit a4368eb232
8 changed files with 341 additions and 221 deletions

View File

@@ -1,5 +1,6 @@
import type { Song } from '../types/song';
/** 将毫秒转换为 MM:SS 格式 */
export function formatDuration(ms: number): string {
const totalSeconds = Math.floor(ms / 1000);
const minutes = Math.floor(totalSeconds / 60);
@@ -7,19 +8,39 @@ export function formatDuration(ms: number): string {
return `${minutes.toString().padStart(2, '0')}:${seconds.toString().padStart(2, '0')}`;
}
/**
* 将 PC 原版插件搜索结果转换为 Web 版 Song 格式
* 兼容 PC 版 songUtils.ts 的 transformSearchSong
*
* PC 原版搜索结果字段:
* - songmid: 歌曲 ID
* - name: 歌曲名
* - singer: 歌手名
* - img / m_img / s_img: 封面图
* - interval: 时长(毫秒)
* - source: 来源标识
* - albumId: 专辑 ID
* - albumName: 专辑名
* - types: 音质映射
*/
export function transformSearchSong(raw: any): Song {
return {
id: String(raw.songmid),
name: raw.name,
artist: raw.singer,
picUrl: raw.img || raw.m_img || raw.s_img,
url: '', // Empty initially
id: String(raw.songmid || raw.id || ''),
name: raw.name || '未知歌曲',
artist: raw.singer || raw.artist || '未知歌手',
picUrl: raw.img || raw.m_img || raw.s_img || raw.picUrl || '',
url: '',
duration: formatDuration(raw.interval ? Number(raw.interval) : 0),
source: raw.source,
source: raw.source || '',
albumId: raw.albumId ? String(raw.albumId) : null,
albumName: raw.albumName,
albumName: raw.albumName || null,
type: 'Remote',
quality: 'auto',
types: raw.types // Store raw types for quality selection later
types: raw.types || undefined,
};
}
/** 批量转换搜索结果 */
export function transformSearchResults(results: any[]): Song[] {
return results.map(item => transformSearchSong(item));
}