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);
    const seconds = totalSeconds % 60;
    return `${minutes.toString().padStart(2, '0')}:${seconds.toString().padStart(2, '0')}`;
}

/**
 * 将 PC/Android 原版插件搜索结果转换为 Web 版 Song 格式
 * 
 * PC 原版 v2 字段：
 * - songmid: 歌曲 ID
 * - name: 歌曲名
 * - singer: 歌手名
 * - img / m_img / s_img: 封面图
 * - interval: 时长（毫秒）
 * - source: 来源标识
 * - albumId: 专辑 ID
 * - albumName: 专辑名
 * - types: 音质映射
 * 
 * v3 插件字段：
 * - id: 歌曲 ID
 * - name: 歌曲名
 * - artists: 歌手名
 * - pic: 封面图
 * - interval: 时长（毫秒字符串）
 * - source: 来源标识
 * - albumName: 专辑名
 * - albumId: 专辑 ID
 * - qualities: 音质映射
 */
export function transformSearchSong(raw: any): Song {
    const id = String(raw.songmid || raw.id || raw.songId || '');
    const name = raw.name || '未知歌曲';
    const artist = raw.singer || raw.artist || raw.artists || '未知歌手';
    const picUrl = raw.img || raw.picUrl || raw.pic || raw.mPic || raw.sPic || raw.m_img || raw.s_img || '';
    const interval = raw.interval ? Number(raw.interval) : raw.duration ? Number(raw.duration) : 0;
    const albumName = raw.albumName || raw.album || null;
    const albumId = raw.albumId ? String(raw.albumId) : null;
    const types = raw.types || raw.qualities || undefined;

    return {
        id,
        name,
        artist,
        picUrl,
        url: '',
        duration: formatDuration(interval),
        source: raw.source || '',
        albumId,
        albumName,
        type: 'Remote',
        quality: 'auto',
        types,
    };
}

/** 批量转换搜索结果 */
export function transformSearchResults(results: any[]): Song[] {
    return results.map(item => transformSearchSong(item));
}
