Skip to content

Commit

Permalink
song notification for spotify, pandora and amazon
Browse files Browse the repository at this point in the history
  • Loading branch information
carlin-q-scott committed Oct 25, 2019
1 parent e02731d commit 06bd60d
Show file tree
Hide file tree
Showing 5 changed files with 40 additions and 14 deletions.
4 changes: 2 additions & 2 deletions data/music.amazon-view.js
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,6 @@ MediaKeys.pauseButton = base + '.playerIconPause';
MediaKeys.skipButton = base + '.nextButton';
MediaKeys.previousButton = base + '.previousButton';

//MediaKeys.trackInfoContainer = ".playbackControlsView"
//MediaKeys.trackInfoContainer = '.playbackControlsView'
MediaKeys.trackInfo = '.trackInfoContainer';
MediaKeys.trackImage = '.trackAlbumArt img'
MediaKeys.getTrackImageUrl = () => MediaKeys.find('.trackAlbumArt img').src
5 changes: 4 additions & 1 deletion data/open.spotify.com-view.js
Original file line number Diff line number Diff line change
Expand Up @@ -9,4 +9,7 @@ MediaKeys.skipButton = 'button[class*="spoticon-skip-forward-"]';
MediaKeys.previousButton = 'button[class*="spoticon-skip-back-"]';

MediaKeys.trackInfo = 'div.now-playing'
MediaKeys.trackImage = ''
{
let urlRegex = new RegExp('https://[/\\w\\.\\d]+');
MediaKeys.getTrackImageUrl = () => MediaKeys.find(MediaKeys.trackInfo + ' div.cover-art-image').style.backgroundImage.match(urlRegex)[0];
}
41 changes: 32 additions & 9 deletions data/orchestrator.js
Original file line number Diff line number Diff line change
Expand Up @@ -61,26 +61,49 @@ MediaKeys.Init = function () {
if (pauseButton == null) return;
simulateMouseClick(pauseButton);
}

function setupTrackInfoUpdates() {

async function waitUntilExists(func) {
let retriesLeft = 100;
return new Promise((resolve, reject) => {
let interval = setInterval(() => {
let result = func();
if (result) {
clearInterval(interval);
resolve(result);
}
else if (retriesLeft-- === 0)
{
clearInterval(interval);
reject('function failed to return a value within a reasonable amount of time');
}
}, 250);
});
}

async function setupTrackInfoUpdates() {
let timeout;
function notifyNewTrack() {
new Notification('Now Playing', {
body: MediaKeys.find(MediaKeys.trackInfo, MediaKeys.basePlayer).innerText
});
clearTimeout(timeout);
timeout = setTimeout(() => {
new Notification('Now Playing', {
body: MediaKeys.find(MediaKeys.trackInfo, MediaKeys.basePlayer).innerText,
icon: MediaKeys.getTrackImageUrl ? MediaKeys.getTrackImageUrl() : ''
});
}, 3000);
}

var currentTrackObservable;

if (MediaKeys.trackInfoContainer)
currentTrackObservable = MediaKeys.find(MediaKeys.trackInfoContainer, MediaKeys.basePlayer);
currentTrackObservable = await waitUntilExists(() => MediaKeys.find(MediaKeys.trackInfoContainer, MediaKeys.basePlayer));
else
currentTrackObservable = MediaKeys.find(MediaKeys.trackInfo, MediaKeys.basePlayer);
currentTrackObservable = await waitUntilExists(() => MediaKeys.find(MediaKeys.trackInfo, MediaKeys.basePlayer));

if (currentTrackObservable) {
var currentTrackObserver = new MutationObserver(notifyNewTrack);
currentTrackObserver.observe(currentTrackObservable, {
childList: true,
characterData: true,
characterData: false,
subtree: true
});
}
Expand All @@ -95,7 +118,7 @@ MediaKeys.Init = function () {
let port = browser.runtime.connect(browser.runtime.id, {name: window.location.host});

port.onMessage.addListener(request => {
//console.log(`page script received ${request}`);
//console.log(`page script received ${request}`);
switch (request) {
case 'MediaPlay':
MediaPlay();
Expand Down
2 changes: 1 addition & 1 deletion data/pandora.com-view.js
Original file line number Diff line number Diff line change
Expand Up @@ -10,4 +10,4 @@ MediaKeys.pauseButton = 'button.PlayButton[data-qa="pause_button"]';
MediaKeys.previousButton = 'button.ReplayButton';
MediaKeys.skipButton = 'button.SkipButton';
MediaKeys.trackInfo = 'div.Tuner__Audio__TrackDetail';
MediaKeys.trackImage = MediaKeys.trackInfo + ' img';
MediaKeys.getTrackImageUrl = () => MediaKeys.find(MediaKeys.trackInfo + ' img').src;
2 changes: 1 addition & 1 deletion manifest.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
"manifest_version": 2,
"short_name": "Media Keys",
"name": "Media Keys",
"version": "2.3.0",
"version": "2.4.0",
"author": "Carlin Scott",
"homepage_url": "https://github.com/carlin-q-scott/browser-media-players",
"description": "Lets you control many popular website media players using media key events",
Expand Down

0 comments on commit 06bd60d

Please sign in to comment.