QQ Music MediaSession Helper

Dock metadata to MediaSession API for y.qq.com (Chrome 73+)

当前为 2021-04-08 提交的版本,查看 最新版本

// ==UserScript==
// @name         QQ Music MediaSession Helper
// @namespace    https://github.com/nondanee
// @version      0.1.1
// @description  Dock metadata to MediaSession API for y.qq.com (Chrome 73+)
// @author       nondanee
// @match        *://y.qq.com/portal/player.html*
// @grant        none
// ==/UserScript==

(() => {
	if (!('mediaSession' in navigator)) return
	const querySelector = selector => document.querySelector(selector) || document.head

	const updateMetadata = () => {
		const tracks = JSON.parse(localStorage.getItem('y_playlist') || '[]')
		const mid = querySelector('#sim_song_info .js_song').getAttribute('data-mid')
		const song = tracks.find(item => item.songmid === mid)
		const cover = querySelector('#song_pic').src

		if (song) {
			navigator.mediaSession.metadata = new MediaMetadata({
				title: song.name,
				artist: song.singer.map(artist => artist.name).join(' / '),
				album: song.album.name,
				artwork: [{ src: cover, sizes: '300x300', type: 'image/jpeg' }]
			})
		}
	}

	navigator.mediaSession.setActionHandler('previoustrack', () => querySelector('#opbanner .btn_big_prev').click())
	navigator.mediaSession.setActionHandler('nexttrack', () => querySelector('#opbanner .btn_big_next').click())
	const element = document.querySelector('#opbanner #sim_song_info')
	if (element) new MutationObserver(updateMetadata).observe(element, { childList: true, attributes: true })

	updateMetadata()
})()

QingJ © 2025

镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址