add: 向浏览器和操作系统报告音频元数据
This commit is contained in:
		
							parent
							
								
									c2ffb57085
								
							
						
					
					
						commit
						0435644ace
					
				| 
						 | 
				
			
			@ -20,7 +20,35 @@ watch(() => playQueue.queue, async () => {
 | 
			
		|||
	resourcesUrl.value = newResourcesUrl
 | 
			
		||||
})
 | 
			
		||||
 | 
			
		||||
// 判断目前播放状态
 | 
			
		||||
// 在播放曲目变动时,将元数据更新到浏览器和操作系统中
 | 
			
		||||
watch(() => playQueue.currentTrack, async () => {
 | 
			
		||||
	if (!playQueue.currentTrack) return
 | 
			
		||||
	navigator.mediaSession.metadata = new MediaMetadata({
 | 
			
		||||
		title: playQueue.currentTrack.song.name,
 | 
			
		||||
		artist: artistsOrganize(playQueue.currentTrack.song.artists ?? []),
 | 
			
		||||
		album: playQueue.currentTrack.album?.name,
 | 
			
		||||
		artwork: [
 | 
			
		||||
			{
 | 
			
		||||
				src: playQueue.currentTrack.album?.coverUrl ?? '',
 | 
			
		||||
				sizes: '500x500',
 | 
			
		||||
				type: 'image/png',
 | 
			
		||||
			},
 | 
			
		||||
		],
 | 
			
		||||
	})
 | 
			
		||||
})
 | 
			
		||||
 | 
			
		||||
// 优化音乐人字符串显示
 | 
			
		||||
function artistsOrganize(list: string[]) {
 | 
			
		||||
	if (list.length === 0) return '未知音乐人'
 | 
			
		||||
 | 
			
		||||
	return list
 | 
			
		||||
		.map((artist) => {
 | 
			
		||||
			return artist
 | 
			
		||||
		})
 | 
			
		||||
		.join(' / ')
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// 自动播放属性判断
 | 
			
		||||
function isAutoPlay(cid: string) {
 | 
			
		||||
	// 为了提前缓存播放队列中的歌曲,同时消除两首歌切换时的间隙,因此改用了新的方式来在网页上挂载音频
 | 
			
		||||
	// 现在会将队列中每一首歌曲都挂载一个单独的 <audio> 并添加 preload="auto" 属性
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue
	
	Block a user