fix: 修复优化bili解析搜索和播放问题

This commit is contained in:
algerkong
2025-09-20 15:38:35 +08:00
parent 0df86b583b
commit 93022691e2
3 changed files with 84 additions and 36 deletions
+32 -23
View File
@@ -113,23 +113,29 @@ class AudioService {
}
private updateMediaSessionMetadata(track: SongResult) {
if (!('mediaSession' in navigator)) return;
try {
if (!('mediaSession' in navigator)) return;
const artists = track.ar ? track.ar.map((a) => a.name) : track.song.artists?.map((a) => a.name);
const album = track.al ? track.al.name : track.song.album.name;
const artwork = ['96', '128', '192', '256', '384', '512'].map((size) => ({
src: `${track.picUrl}?param=${size}y${size}`,
type: 'image/jpg',
sizes: `${size}x${size}`
}));
const metadata = {
title: track.name || '',
artist: artists ? artists.join(',') : '',
album: album || '',
artwork
};
const artists = track.ar
? track.ar.map((a) => a.name)
: track.song.artists?.map((a) => a.name);
const album = track.al ? track.al.name : track.song.album.name;
const artwork = ['96', '128', '192', '256', '384', '512'].map((size) => ({
src: `${track.picUrl}?param=${size}y${size}`,
type: 'image/jpg',
sizes: `${size}x${size}`
}));
const metadata = {
title: track.name || '',
artist: artists ? artists.join(',') : '',
album: album || '',
artwork
};
navigator.mediaSession.metadata = new window.MediaMetadata(metadata);
navigator.mediaSession.metadata = new window.MediaMetadata(metadata);
} catch (error) {
console.error('更新媒体会话元数据时出错:', error);
}
}
private updateMediaSessionState(isPlaying: boolean) {
@@ -140,14 +146,17 @@ class AudioService {
}
private updateMediaSessionPositionState() {
if (!this.currentSound || !('mediaSession' in navigator)) return;
if ('setPositionState' in navigator.mediaSession) {
navigator.mediaSession.setPositionState({
duration: this.currentSound.duration(),
playbackRate: this.playbackRate,
position: this.currentSound.seek() as number
});
try {
if (!this.currentSound || !('mediaSession' in navigator)) return;
if ('setPositionState' in navigator.mediaSession) {
navigator.mediaSession.setPositionState({
duration: this.currentSound.duration(),
playbackRate: this.playbackRate,
position: this.currentSound.seek() as number
});
}
} catch (error) {
console.error('更新媒体会话位置状态时出错:', error);
}
}