@@ -262,9 +262,9 @@ func doScanPath(sp *model.MediaScanPath, p *ScanProgress) error {
262262// doScanMusicByAlbum 音乐扫描
263263// 存储规则:
264264// - 普通文件(is_folder=false):
265- // folder_path=文件所在目录 ,file_name=音乐文件名,episodes=空
265+ // folder_path=文件所在真实目录 ,file_name=音乐文件名,episodes=空
266266// - 合并文件夹(is_folder=true):
267- // folder_path=扫描根路径(sp.Path) ,file_name=文件夹名,
267+ // folder_path=文件夹所在真实父目录 ,file_name=文件夹名,
268268// episodes=文件夹内所有音乐文件列表,封面/标签取第一首
269269func doScanMusicByAlbum (ctx context.Context , targets []string , sp * model.MediaScanPath , p * ScanProgress ) error {
270270 for _ , target := range targets {
@@ -375,8 +375,8 @@ func doScanMusicByAlbum(ctx context.Context, targets []string, sp *model.MediaSc
375375 item := & model.MediaItem {
376376 MediaType : sp .MediaType ,
377377 ScanPathID : sp .ID ,
378- FileName : name , // 文件夹名
379- FolderPath : sp . Path , // 扫描根路径
378+ FileName : name , // 文件夹名
379+ FolderPath : stdpath . Dir ( target ) , // 文件夹所在的真实父目录
380380 IsFolder : true ,
381381 AlbumName : albumName ,
382382 AlbumArtist : albumArtist ,
@@ -578,7 +578,7 @@ func walkVFS(ctx context.Context, dirPath string, mediaType model.MediaType, tar
578578
579579// buildMediaItemFromVFS 根据 VFS 路径构建 MediaItem(非音乐类型使用)
580580// 存储规则:
581- // - folder_path:恒定为扫描根路径 sp.Path
581+ // - folder_path:文件/文件夹所在的真实父目录(VFS 父路径),用于前端按 folder_path + file_name 反查真实文件
582582// - file_name:文件夹就是文件夹名,文件就是文件名
583583// - episodes:文件夹时存里面每个文件的信息,文件时为空
584584func buildMediaItemFromVFS (ctx context.Context , vfsPath string , sp * model.MediaScanPath ) (* model.MediaItem , error ) {
@@ -593,8 +593,8 @@ func buildMediaItemFromVFS(ctx context.Context, vfsPath string, sp *model.MediaS
593593 item := & model.MediaItem {
594594 MediaType : sp .MediaType ,
595595 ScanPathID : sp .ID ,
596- FileName : name , // 文件夹名 或 文件名
597- FolderPath : sp . Path , // 恒定为扫描根路径
596+ FileName : name , // 文件夹名 或 文件名
597+ FolderPath : stdpath . Dir ( vfsPath ), // 真实父目录
598598 IsFolder : obj .IsDir (),
599599 ScrapedName : strings .TrimSuffix (name , stdpath .Ext (name )), // 去掉扩展名作为默认名称
600600 }
0 commit comments