-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathbackground.js
More file actions
42 lines (35 loc) · 1.33 KB
/
Copy pathbackground.js
File metadata and controls
42 lines (35 loc) · 1.33 KB
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
let downloadedUrls = []
// Listen for messages from the content script
browser.runtime.onMessage.addListener((message, sender, sendResponse) => {
if (message.type === 'addDownloadListener') {
const { trackDetails } = message
console.log('Adding a download listener for:', trackDetails.trackTitle)
const listener = addDownloadListener(trackDetails)
browser.webRequest.onBeforeRequest.addListener(
listener,
{ urls: ['<all_urls>'] },
['blocking']
)
sendResponse({ response: 'added the listener!' })
}
})
function addDownloadListener(trackDetails) {
// add a listener for the specific track to give it the correct filename
let onBeforeRequestListener = (details) => {
let fileName = `${trackDetails.artistName} -- ${trackDetails.albumName} -- ${trackDetails.trackNumber} - ${trackDetails.trackTitle}.mp3`
if (details.url.startsWith('https://t4.bcbits.com/stream')) {
if (!downloadedUrls.includes(details.url)) {
downloadedUrls.push(details.url)
browser.downloads.download({
url: details.url,
filename: fileName || 'track.mp3',
})
// Remove the listener after the download has started.
browser.webRequest.onBeforeRequest.removeListener(
onBeforeRequestListener
)
}
}
}
return onBeforeRequestListener
}