-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathshazam.js
49 lines (44 loc) · 1.52 KB
/
shazam.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
function retrieveTracknames() {
var tags = document.querySelectorAll('article.shz-partial-track');
var tracks = Array.map(tags, (tag) => {
var title = tag.querySelector('.title').textContent.trim();
var artist = tag.querySelector('.artist').textContent.trim();
return `${title} ${artist}`;
});
return tracks;
}
function encodeQueryString(params) {
var esc = encodeURIComponent;
var query = Object.keys(params).map(k => esc(k) + '=' + esc(params[k])).join('&');
return query;
}
function getYoutubeId(search) {
var queryString = encodeQueryString({
key: 'AIzaSyBJ58q5fF4gs80VRK78tPFAYcnclkDLkUU',
part: 'snippet',
maxResults: 25,
q: search
});
return fetch(`https://www.googleapis.com/youtube/v3/search?${queryString}`).then((response) => {
return response.json().then(({items}) => {
return items[0].id.videoId;
})
});
}
function retrieveMultipleYoutubeIds(ids) {
return Promise.all(Array.map(ids, getYoutubeId)).then(videoIds => {
return videoIds.filter((n) => { return n != undefined });
});
}
browser.runtime.onMessage.addListener(function(msg) {
if (msg.action == 'convert-tags-to-mp3') {
var tracknames = retrieveTracknames();
retrieveMultipleYoutubeIds(tracknames).then((videoIds) => {
console.log(videoIds);
browser.runtime.sendMessage({
type: "retrieved-youtube-ids",
videoIds: videoIds
});
});
}
});