Skip to content

Commit eba7aa1

Browse files
authored
Merge pull request #147 from StoPlay/feature-radiolist
Add Radiolist.com.ua
2 parents 15cc124 + 9234859 commit eba7aa1

File tree

5 files changed

+139
-96
lines changed

5 files changed

+139
-96
lines changed

README.md

+26-25
Original file line numberDiff line numberDiff line change
@@ -11,45 +11,46 @@ popular streaming services.
1111

1212

1313
At the moment we fully support (stop and play)
14-
* Spotify
15-
* PromoDJ
1614
* Bandcamp
17-
* Coub.com
1815
* Classicalradio.com
19-
* vkontakte
20-
* Google Music
21-
* vimeo
22-
* YouTube
16+
* Coub.com
17+
* DailyMotion.com
18+
* Deezer.com
2319
* Facebook
20+
* Google Music
2421
* Kickstarter
25-
* hearthis.at
26-
* Rutube
27-
* TED.com
28-
* Muzebra
29-
* Pleer.net (pleer.com)
3022
* Last.fm (web-version)
31-
* Soundcloud
3223
* Mixcloud
33-
* Seasonvar
34-
* Yandex.Music
35-
* TuneIn.com
36-
* megogo.net
24+
* Muzebra
25+
* Netflix
26+
* Pleer.net (pleer.com)
3727
* Prometheus.com.ua
28+
* PromoDJ
3829
* Radiotunes.com
3930
* Rockradio.com
40-
* DailyMotion.com
31+
* Rutube
32+
* Seasonvar
33+
* Soundcloud
34+
* Spotify
35+
* TED.com
36+
* TuneIn.com
37+
* Yandex.Music
38+
* YouTube
39+
* armyfm.com.ua
4140
* coursera.org
42-
* slipstreamradio.com
43-
* jazzradio.com
44-
* Deezer.com
45-
* Netflix
4641
* di.fm
42+
* hearthis.at
43+
* jazzradio.com
44+
* livestream.com
45+
* megogo.net
4746
* mubert.com
47+
* musicforprogramming.net
48+
* radiolist.com.ua
49+
* slipstreamradio.com
4850
* udemy.com
49-
* livestream.com
50-
* armyfm.com.ua
51+
* vimeo
52+
* vkontakte
5153
* zenradio.com
52-
* musicforprogramming.net
5354

5455
## How it works
5556
It just works!

src/background/ProvidersList.js

+51-50
Original file line numberDiff line numberDiff line change
@@ -1,52 +1,53 @@
11
export const ProvidersList = [
2-
"vk.com",
3-
"new.vk.com",
4-
"music.youtube.com",
5-
"gaming.youtube.com",
6-
"youtube.com",
7-
"vimeo.com",
8-
"muzebra.com",
9-
"pleer.net",
10-
"last.fm",
11-
"rutube.ru",
12-
"ted.com",
13-
"mixcloud.com",
14-
"soundcloud.com",
15-
"seasonvar.ru",
16-
"play.google.com",
17-
"music.yandex.ua",
18-
"music.yandex.ru",
19-
"v5player.slipstreamradio.com",
20-
"jazzradio.com",
21-
"rockradio.com",
22-
"radiotunes.com",
23-
"classicalradio.com",
24-
"tunein.com",
25-
"megogo.net",
26-
"spotify.com",
27-
"play.spotify.com",
28-
"open.spotify.com",
29-
"bandcamp.com",
30-
"promodj.com",
31-
"facebook.com",
32-
"kickstarter.com",
33-
"hearthis.at",
34-
"player.vimeo.com",
35-
"courses.prometheus.org.ua",
36-
"dailymotion.com",
37-
"coursera.org",
38-
"deezer.com",
39-
"netflix.com",
40-
"egghead.io",
41-
"audible.ca",
42-
"audible.com",
43-
"audible.com.au",
44-
"di.fm",
45-
"play.mubert.com",
46-
"coub.com",
47-
"livestream.com",
48-
"udemy.com",
49-
"armyfm.com.ua",
50-
"zenradio.com",
51-
"musicforprogramming.net",
2+
'armyfm.com.ua',
3+
'audible.ca',
4+
'audible.com',
5+
'audible.com.au',
6+
'bandcamp.com',
7+
'classicalradio.com',
8+
'coub.com',
9+
'coursera.org',
10+
'courses.prometheus.org.ua',
11+
'dailymotion.com',
12+
'deezer.com',
13+
'di.fm',
14+
'egghead.io',
15+
'facebook.com',
16+
'gaming.youtube.com',
17+
'hearthis.at',
18+
'jazzradio.com',
19+
'kickstarter.com',
20+
'last.fm',
21+
'livestream.com',
22+
'megogo.net',
23+
'mixcloud.com',
24+
'music.yandex.ru',
25+
'music.yandex.ua',
26+
'music.youtube.com',
27+
'musicforprogramming.net',
28+
'muzebra.com',
29+
'netflix.com',
30+
'new.vk.com',
31+
'open.spotify.com',
32+
'play.google.com',
33+
'play.mubert.com',
34+
'play.spotify.com',
35+
'player.vimeo.com',
36+
'pleer.net',
37+
'promodj.com',
38+
'radiolist.com.ua',
39+
'radiotunes.com',
40+
'rockradio.com',
41+
'rutube.ru',
42+
'seasonvar.ru',
43+
'soundcloud.com',
44+
'spotify.com',
45+
'ted.com',
46+
'tunein.com',
47+
'udemy.com',
48+
'v5player.slipstreamradio.com',
49+
'vimeo.com',
50+
'vk.com',
51+
'youtube.com',
52+
'zenradio.com'
5253
];

src/background/index.js

+23-7
Original file line numberDiff line numberDiff line change
@@ -37,8 +37,8 @@ function restoreOptions(callback) {
3737
providers: providersDefault
3838
}, function(items) {
3939
var providersCurrent = mergeProviders(items.providers);
40-
if (callback) {
41-
callback.call(null, providersCurrent);
40+
if (typeof callback === 'function') {
41+
callback(providersCurrent);
4242
}
4343
});
4444
}
@@ -75,6 +75,15 @@ function mergeProviders(oldItems) {
7575
return providersFull;
7676
}
7777

78+
function resetProviders(callback) {
79+
restoreOptions(function(providersMerged) {
80+
saveToOptions({providers: providersMerged});
81+
if (typeof callback === 'function') {
82+
callback(providersMerged);
83+
}
84+
})
85+
}
86+
7887
DataStorage.set('status', 'silent');
7988

8089
if (!DataStorage.get('version')) {
@@ -83,9 +92,7 @@ if (!DataStorage.get('version')) {
8392
} else if (DataStorage.get('version') != version) {
8493
// extension updated
8594
saveVersion();
86-
restoreOptions(function(providersMerged) {
87-
saveToOptions({providers: providersMerged});
88-
});
95+
resetProviders();
8996
}
9097

9198
chrome.storage.onChanged.addListener(function(changes, namespace) {
@@ -128,9 +135,10 @@ chrome.runtime.onMessage.addListener(function(request, sender, sendResponse) {
128135
var lastPlayingTabId = parseInt(DataStorage.get('lastPlayingTabId')),
129136
lastPlayingFrameId = parseInt(DataStorage.get('lastPlayingFrameId')) || 0,
130137
lastPausedTabId = parseInt(DataStorage.get('lastPausedTabId')),
131-
status = DataStorage.get('status');
138+
status = DataStorage.get('status'),
139+
isOptionsPage = sender.url.indexOf(chrome.runtime.id) > -1
132140

133-
if(request.action && sender.tab) {
141+
if(request.action && (sender.tab || isOptionsPage)) {
134142
switch(request.action) {
135143
case 'updateTitle':
136144
if (request.title) {
@@ -163,6 +171,14 @@ chrome.runtime.onMessage.addListener(function(request, sender, sendResponse) {
163171
chrome.browserAction.setTitle({title: "StoPlay" });
164172
break;
165173

174+
case 'resetProviders':
175+
resetProviders((providers) => {
176+
sendResponse({
177+
providers
178+
})
179+
});
180+
break;
181+
166182
case 'toggle':
167183
if(lastPlayingTabId) {
168184
var action = (status == 'playing') ? 'pause' : 'play';

src/content/index.js

+36-13
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,8 @@ var StoPlay = {
2323
}
2424
};
2525

26+
var button = null;
27+
2628
var Status = {
2729
PAUSED: "paused",
2830
PLAYING: "playing"
@@ -44,6 +46,7 @@ class Provider {
4446

4547
this.isInstalled();
4648
this.customLastPlayerSelector = null;
49+
this.customLastPauseSelector = null;
4750

4851
chrome.storage.sync.get({
4952
enabled: true,
@@ -257,12 +260,21 @@ class Provider {
257260
var status, p;
258261

259262
switch(this.host) {
263+
case "radiolist.com.ua":
264+
button = document.querySelector('.jouele-status-playing .jouele-info-control-button-icon_pause');
265+
if (button) {
266+
status = Status.PLAYING;
267+
this.customLastPlayerSelector = button;
268+
} else {
269+
status = Status.PAUSED;
270+
}
271+
break;
272+
260273
case "vk.com":
261274
var player_obj = document.querySelector('.top_audio_player');
262275
if (player_obj) {
263276
status = player_obj && player_obj.classList.contains('top_audio_player_playing') ? Status.PLAYING : Status.PAUSED;
264277
}
265-
console.log('StoPlay vk.com status', status);
266278
break;
267279

268280
case "new.vk.com":
@@ -451,7 +463,7 @@ class Provider {
451463
}
452464

453465
case "di.fm":
454-
var button = document.querySelector('#webplayer-region .controls .icon-pause');
466+
button = document.querySelector('#webplayer-region .controls .icon-pause');
455467
status = Status.PAUSED;
456468
if (button) {
457469
status = Status.PLAYING;
@@ -499,7 +511,7 @@ class Provider {
499511

500512
status = selector && selector.classList.contains('lsp-hidden') ? Status.PLAYING : Status.PAUSED;
501513
break;
502-
514+
503515
case "musicforprogramming.net":
504516
var player = document.getElementById('player');
505517
status = player && !player.paused ? Status.PLAYING : Status.PAUSED;
@@ -513,6 +525,13 @@ class Provider {
513525
var p;
514526
if (this.status === Status.PLAYING) {
515527
switch(this.host) {
528+
case "radiolist.com.ua":
529+
if (this.customLastPlayerSelector) {
530+
this.customLastPlayerSelector.click();
531+
}
532+
533+
break;
534+
516535
case "vk.com":
517536
document.querySelector('.top_audio_player_play').click();
518537
break;
@@ -656,8 +675,7 @@ class Provider {
656675
target.parentNode.insertBefore(script, target);
657676
break;
658677
case "courses.prometheus.org.ua":
659-
var button = document.querySelector('.video-controls .video_control.pause');
660-
678+
button = document.querySelector('.video-controls .video_control.pause');
661679
if (button) {
662680
button.click();
663681
}
@@ -676,20 +694,20 @@ class Provider {
676694
StoPlay.injectScript("dzPlayer.playing ? dzPlayer.control.pause() : void(0);");
677695
break;
678696
case "coursera.org":
679-
var button = document.querySelector('.c-video-control.vjs-control.vjs-playing');
697+
button = document.querySelector('.c-video-control.vjs-control.vjs-playing');
680698
if (button) {
681699
button.click();
682700
}
683701
break;
684702
case "egghead.io":
685-
var button = document.querySelector('.bmpui-ui-playbacktoggle-overlay button');
703+
button = document.querySelector('.bmpui-ui-playbacktoggle-overlay button');
686704
if (button) {
687705
button.click();
688706
}
689707
break;
690708

691709
case "di.fm":
692-
var button = document.querySelector('#webplayer-region .controls .icon-pause');
710+
button = document.querySelector('#webplayer-region .controls .icon-pause');
693711
if (button) {
694712
button.click();
695713
}
@@ -746,6 +764,12 @@ class Provider {
746764
var p;
747765
if (this.status !== Status.PLAYING) {
748766
switch(this.host) {
767+
case "radiolist.com.ua":
768+
if (this.customLastPlayerSelector) {
769+
this.customLastPlayerSelector.previousSibling.click();
770+
}
771+
break;
772+
749773
case "vk.com":
750774
document.querySelector('.top_audio_player_play').click();
751775
break;
@@ -891,8 +915,7 @@ class Provider {
891915
target.parentNode.insertBefore(script, target);
892916
break;
893917
case "courses.prometheus.org.ua":
894-
var button = document.querySelector('.video-controls .video_control.play');
895-
918+
button = document.querySelector('.video-controls .video_control.play');
896919
if (button) {
897920
button.click();
898921
}
@@ -911,20 +934,20 @@ class Provider {
911934
StoPlay.injectScript("dzPlayer.paused ? dzPlayer.control.play() : void(0);");
912935
break;
913936
case "coursera.org":
914-
var button = document.querySelector('.c-video-control.vjs-control.vjs-paused');
937+
button = document.querySelector('.c-video-control.vjs-control.vjs-paused');
915938
if (button) {
916939
button.click();
917940
}
918941
break;
919942
case "egghead.io":
920-
var button = document.querySelector('.bmpui-ui-playbacktoggle-overlay button');
943+
button = document.querySelector('.bmpui-ui-playbacktoggle-overlay button');
921944
if (button) {
922945
button.click();
923946
}
924947
break;
925948

926949
case "di.fm":
927-
var button = document.querySelector('#webplayer-region .controls .icon-play');
950+
button = document.querySelector('#webplayer-region .controls .icon-play');
928951
if (button) {
929952
button.click();
930953
}

0 commit comments

Comments
 (0)