// ==UserScript== // @name Deezer Media Session Support // @namespace http://tampermonkey.net/ // @description Deezer Media Session Support for Chrome // @include http://*.deezer.com/* // @include https://*.deezer.com/* // @version 1.0.5 // @run-at document-idle // @noframes // @downloadURL none // ==/UserScript== (function (dzPlayer, prevSongId, seekConst, noLimit){ setInterval(function(currSong){ currSong = dzPlayer.getCurrentSong(); if (currSong && currSong.SNG_ID !== prevSongId){ dzPlayer.radioSkipCounter = ~~noLimit || dzPlayer.radioSkipCounter; // unlimited skips prevSongId = currSong.SNG_ID; navigator.mediaSession.metadata = new MediaMetadata({ title: currSong.SNG_TITLE, artist: (currSong.ARTISTS || [currSong]).map(function(artist){return artist.ART_NAME;}).join(', '), album: currSong.ALB_TITLE, artwork: [{'src': `https://e-cdns-images.dzcdn.net/images/cover/${currSong.ALB_PICTURE}/264x264-000000-80-0-0.jpg`, 'sizes': '264x264', 'type': 'image/jpg'}] }); } }, 500); navigator.mediaSession.setActionHandler('previoustrack', function() { if (!dzPlayer.isRadio() || noLimit){ dzPlayer.control.prevSong(); } }); navigator.mediaSession.setActionHandler('nexttrack', function() { dzPlayer.control.nextSong(); }); navigator.mediaSession.setActionHandler('play', function() { dzPlayer.control.play(); }); navigator.mediaSession.setActionHandler('pause', function() { dzPlayer.control.pause(); }); navigator.mediaSession.setActionHandler('seekbackward', function() { dzPlayer.control.seek(Math.max(dzPlayer.getPosition() - seekConst, 0) / dzPlayer.getDuration()); }); navigator.mediaSession.setActionHandler('seekforward', function() { dzPlayer.control.seek(Math.min(dzPlayer.getPosition() + seekConst, dzPlayer.getDuration()) / dzPlayer.getDuration()); }); })(dzPlayer, 0, 30, true);