feat: 插件系统完全兼容PC/Android版格式
This commit is contained in:
@@ -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));
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user