/
popup.js
104 lines (70 loc) · 4.21 KB
/
popup.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
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
document.addEventListener('DOMContentLoaded', function() {
chrome.tabs.query({ active: true, currentWindow: true }, function(tabs) {
var currentTab = tabs[0];
var currentTabUrl = currentTab.url;
chrome.scripting.executeScript({
target: { tabId: currentTab.id },
function: function() {
return document.documentElement.outerHTML;
}
}, function(result) {
document.querySelector('.loader').style.display = 'none';
if (!result || !parseUrl(currentTabUrl).host.includes('leboncoin.fr')) {
render('<div class="alert alert-warning">Vous devez être sur le site leboncoin.fr !</div>');
notif('lbc-dl-photos-error', 'warning', "Télécharger photos annonce Leboncoin", "Vous devez être sur le site leboncoin.fr !");
return;
}
var pageSource = result[0].result;
var parser = new DOMParser();
var doc = parser.parseFromString(pageSource, 'text/html');
if (!doc.querySelector("#mainContent article div[data-qa-id='adview_spotlight_description_container']")) {
render('<div class="alert alert-warning">Vous devez être sur une annonce pour pouvoir télécharger les photos !</div>');
notif('lbc-dl-photos-no-result', 'warning', "Télécharger photos annonce Leboncoin", "Vous devez être sur une annonce !");
return;
}
var adSubjectSlug = '';
if (!doc.querySelector("script[id='__NEXT_DATA__']")) {
render('<div class="alert alert-error">Erreur lors de la récupération des photos. Veuillez actualiser la page en cours (F5)</div>');
notif('lbc-dl-photos-error', 'error', "Télécharger photos annonce Leboncoin", "Erreur lors de la récupération des photos. Veuillez actualiser la page en cours (F5)");
return;
} else {
var photos = new Array;
var rawjs = doc.querySelector("script[id='__NEXT_DATA__']").innerHTML;
var json = JSON.parse(rawjs);
if (json.hasOwnProperty('props')) {
if (json.props.hasOwnProperty('pageProps')) {
if (json.props.pageProps.hasOwnProperty('ad')) {
var ad = json.props.pageProps.ad;
// console.log(ad);
if (ad.hasOwnProperty('images')) {
var json_photos = ad.images;
if (json_photos.nb_images > 0) {
photos = json_photos.urls_large;
}
var adSubjectSlug = slugify(ad.subject + "_" + ad.location.city_label);
if (photos.length > 0) {
document.querySelector('#dl-photos__container button#downloadBtn').style.display = "block";
showPhotos(photos);
}
}
}
}
}
if (photos.length == 0) {
render('<div class="alert alert-warning">Aucune photo trouvée pour cette annonce.<br>Si l\'annonce comporte véritablement des photos, actualisez la page (F5)</div>');
notif('lbc-dl-photos-warning', 'warning', "Télécharger photos annonce Leboncoin", "Aucune photo trouvée pour cette annonce");
return;
}
}
// Bouton Tout télécharger
document.getElementById("downloadBtn").addEventListener("click", async() => {
try {
const archive = await createArchive(photos, adSubjectSlug);
downloadArchive(archive, adSubjectSlug);
} catch (err) {
notif('lbc-dl-photos-error', 'error', 'Télécharger photos annonce Leboncoin', err.message);
}
});
});
});
});