音乐数据导入导出

This commit is contained in:
mtvpls
2026-02-02 14:27:25 +08:00
parent 68b1332df1
commit a447a41920
3 changed files with 72 additions and 0 deletions

View File

@@ -94,6 +94,17 @@ export async function POST(req: NextRequest) {
continue;
}
// 获取用户的所有歌单
const playlists = await db.getUserMusicPlaylists(username);
const playlistsWithSongs = [];
for (const playlist of playlists) {
const songs = await db.getPlaylistSongs(playlist.id);
playlistsWithSongs.push({
...playlist,
songs
});
}
const userData = {
// 播放记录
playRecords: await db.getAllPlayRecords(username),
@@ -103,6 +114,10 @@ export async function POST(req: NextRequest) {
searchHistory: await db.getSearchHistory(username),
// 跳过片头片尾配置
skipConfigs: await db.getAllSkipConfigs(username),
// 音乐播放记录
musicPlayRecords: await db.getAllMusicPlayRecords(username),
// 音乐歌单(包含歌曲)
musicPlaylists: playlistsWithSongs,
// V2用户的加密密码
passwordV2: finalPasswordV2
};

View File

@@ -225,6 +225,44 @@ export async function POST(req: NextRequest) {
}
}
}
// 导入音乐播放记录
if (user.musicPlayRecords) {
for (const [key, record] of Object.entries(user.musicPlayRecords)) {
const [platform, id] = key.split('+');
if (platform && id) {
await db.saveMusicPlayRecord(username, platform, id, record as any);
}
}
}
// 导入音乐歌单
if (user.musicPlaylists && Array.isArray(user.musicPlaylists)) {
for (const playlist of user.musicPlaylists) {
// 创建歌单
await db.createMusicPlaylist(username, {
id: playlist.id,
name: playlist.name,
description: playlist.description,
cover: playlist.cover,
});
// 导入歌单中的歌曲
if (playlist.songs && Array.isArray(playlist.songs)) {
for (const song of playlist.songs) {
await db.addSongToPlaylist(playlist.id, {
platform: song.platform,
id: song.id,
name: song.name,
artist: song.artist,
album: song.album,
pic: song.pic,
duration: song.duration || 0,
});
}
}
}
}
}
console.log(`成功导入 ${importedCount} 个用户的user:info`);