mirror of
https://github.com/th-ch/youtube-music.git
synced 2026-01-16 20:52:06 +00:00
fix: fix bugs in MPRIS, and improve MPRIS (#1760)
Co-authored-by: JellyBrick <shlee1503@naver.com> Co-authored-by: Totto <32566573+Totto16@users.noreply.github.com>
This commit is contained in:
@ -62,11 +62,13 @@ export const setupRepeatChangedListener = singleton(() => {
|
||||
// provided by YouTube Music
|
||||
window.ipcRenderer.send(
|
||||
'ytmd:repeat-changed',
|
||||
document.querySelector<
|
||||
HTMLElement & {
|
||||
getState: () => GetState;
|
||||
}
|
||||
>('ytmusic-player-bar')?.getState().queue.repeatMode,
|
||||
document
|
||||
.querySelector<
|
||||
HTMLElement & {
|
||||
getState: () => GetState;
|
||||
}
|
||||
>('ytmusic-player-bar')
|
||||
?.getState().queue.repeatMode,
|
||||
);
|
||||
});
|
||||
|
||||
@ -78,6 +80,46 @@ export const setupVolumeChangedListener = singleton((api: YoutubePlayer) => {
|
||||
window.ipcRenderer.send('ytmd:volume-changed', api.getVolume());
|
||||
});
|
||||
|
||||
export const setupFullScreenChangedListener = singleton(() => {
|
||||
const playerBar = document.querySelector('ytmusic-player-bar');
|
||||
|
||||
if (!playerBar) {
|
||||
window.ipcRenderer.send('ytmd:fullscreen-changed-supported', false);
|
||||
return;
|
||||
}
|
||||
|
||||
const observer = new MutationObserver(() => {
|
||||
window.ipcRenderer.send(
|
||||
'ytmd:fullscreen-changed',
|
||||
(
|
||||
playerBar?.attributes.getNamedItem('player-fullscreened') ?? null
|
||||
) !== null,
|
||||
);
|
||||
});
|
||||
|
||||
observer.observe(playerBar, {
|
||||
attributes: true,
|
||||
childList: false,
|
||||
subtree: false,
|
||||
});
|
||||
});
|
||||
|
||||
export const setupAutoPlayChangedListener = singleton(() => {
|
||||
const autoplaySlider = document.querySelector<HTMLInputElement>(
|
||||
'.autoplay > tp-yt-paper-toggle-button',
|
||||
);
|
||||
|
||||
const observer = new MutationObserver(() => {
|
||||
window.ipcRenderer.send('ytmd:autoplay-changed');
|
||||
});
|
||||
|
||||
observer.observe(autoplaySlider!, {
|
||||
attributes: true,
|
||||
childList: false,
|
||||
subtree: false,
|
||||
});
|
||||
});
|
||||
|
||||
export default (api: YoutubePlayer) => {
|
||||
window.ipcRenderer.on('ytmd:setup-time-changed-listener', () => {
|
||||
setupTimeChangedListener();
|
||||
@ -91,6 +133,14 @@ export default (api: YoutubePlayer) => {
|
||||
setupVolumeChangedListener(api);
|
||||
});
|
||||
|
||||
window.ipcRenderer.on('ytmd:setup-fullscreen-changed-listener', () => {
|
||||
setupFullScreenChangedListener();
|
||||
});
|
||||
|
||||
window.ipcRenderer.on('ytmd:setup-autoplay-changed-listener', () => {
|
||||
setupAutoPlayChangedListener();
|
||||
});
|
||||
|
||||
window.ipcRenderer.on('ytmd:setup-seeked-listener', () => {
|
||||
setupSeekedListener();
|
||||
});
|
||||
@ -155,13 +205,13 @@ export default (api: YoutubePlayer) => {
|
||||
function sendSongInfo(videoData: VideoDataChangeValue) {
|
||||
const data = api.getPlayerResponse();
|
||||
|
||||
data.videoDetails.album =
|
||||
(
|
||||
Object.entries(videoData)
|
||||
.find(([, value]) => value && Object.hasOwn(value, 'playerOverlays')) as [string, AlbumDetails | undefined]
|
||||
)?.[1]?.playerOverlays?.playerOverlayRenderer?.browserMediaSession?.browserMediaSessionRenderer?.album?.runs?.at(
|
||||
0,
|
||||
)?.text;
|
||||
data.videoDetails.album = (
|
||||
Object.entries(videoData).find(
|
||||
([, value]) => value && Object.hasOwn(value, 'playerOverlays'),
|
||||
) as [string, AlbumDetails | undefined]
|
||||
)?.[1]?.playerOverlays?.playerOverlayRenderer?.browserMediaSession?.browserMediaSessionRenderer?.album?.runs?.at(
|
||||
0,
|
||||
)?.text;
|
||||
data.videoDetails.elapsedSeconds = 0;
|
||||
data.videoDetails.isPaused = false;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user