-
Notifications
You must be signed in to change notification settings - Fork 1
/
content.js
40 lines (31 loc) · 1.29 KB
/
content.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
function downloadStatus(url, filename) {
chrome.runtime.sendMessage({ action: 'downloadStatus', url: url, filename: filename });
}
async function extractStatuses() {
const statuses = [];
// Select image statuses
document.querySelectorAll('img[src^="blob:https://web.whatsapp.com/"]').forEach((img, index) => {
const url = img.src;
const filename = `status_image_${index + 1}.jpg`;
statuses.push({ url, filename });
});
// Select video statuses
const videoElements = document.querySelectorAll('video[src^="blob:https://web.whatsapp.com/"]');
for (let index = 0; index < videoElements.length; index++) {
const video = videoElements[index];
const url = video.src;
const filename = `status_video_${index + 1}.mp4`;
const blob = await fetch(url).then(r => r.blob());
const objectURL = URL.createObjectURL(blob);
statuses.push({ url: objectURL, filename });
}
return statuses;
}
chrome.runtime.onMessage.addListener((message, sender, sendResponse) => {
if (message.action === 'getStatuses') {
extractStatuses().then(statuses => {
sendResponse(statuses);
});
return true; // Required to use asynchronous sendResponse
}
});