@@ -162,9 +162,9 @@ import { openJumpArtist } from "@/utils/modal";
162162import { toLikeSong } from " @/utils/auth" ;
163163import { isObject } from " lodash-es" ;
164164import { formatTimestamp , msToTime } from " @/utils/time" ;
165- import { usePlayer } from " @/utils /player" ;
165+ import { usePlayerController } from " @/core /player/PlayerController " ;
166166import { isElectron } from " @/utils/env" ;
167- import blob from " @/utils/blob " ;
167+ import { useBlobURLManager } from " @/core/resource/BlobURLManager " ;
168168
169169const props = defineProps <{
170170 // 歌曲
@@ -178,12 +178,14 @@ const props = defineProps<{
178178}>();
179179
180180const router = useRouter ();
181- const player = usePlayer ();
182181const dataStore = useDataStore ();
183182const musicStore = useMusicStore ();
184183const statusStore = useStatusStore ();
185184const settingStore = useSettingStore ();
186185
186+ const player = usePlayerController ();
187+ const blobURLManager = useBlobURLManager ();
188+
187189// 歌曲数据
188190const song = toRef (props , " song" );
189191
@@ -198,12 +200,25 @@ const qualityColor = computed(() => {
198200// 加载本地歌曲封面
199201const localCover = async (show : boolean ) => {
200202 if (! isElectron || ! show || ! song .value .path ) return ;
201- if (song .value .cover || song .value .cover === " /images/song.jpg?assest" ) return ;
203+ // 是否还在缓存中
204+ const currentCover = song .value .cover ;
205+ if (currentCover && currentCover .startsWith (" blob:" )) {
206+ // 需要重新获取
207+ if (! blobURLManager .hasBlobURL (song .value .path )) {
208+ song .value .cover = " " ;
209+ } else {
210+ return ;
211+ }
212+ }
213+ // 如果已有非 blob URL 的封面,不需要重新获取
214+ if (song .value .cover && song .value .cover !== " " && song .value .cover !== " /images/song.jpg?assest" ) {
215+ return ;
216+ }
202217 // 获取封面
203218 const coverData = await window .electron .ipcRenderer .invoke (" get-music-cover" , song .value .path );
204219 if (! coverData ) return ;
205220 const { data, format } = coverData ;
206- const blobURL = blob .createBlobURL (data , format , song .value .path );
221+ const blobURL = blobURLManager .createBlobURL (data , format , song .value .path );
207222 if (blobURL ) song .value .cover = blobURL ;
208223};
209224 </script >
0 commit comments