Skip to content

Instantly share code, notes, and snippets.

@jchiatt
Last active July 7, 2024 19:57
Show Gist options
  • Save jchiatt/a0e12268073522be8d09f0546e450307 to your computer and use it in GitHub Desktop.
Save jchiatt/a0e12268073522be8d09f0546e450307 to your computer and use it in GitHub Desktop.
Download all images from a webpage
const IMAGE_EXTENSIONS = [".jpg", ".png", ".svg", ".webp", ".gif"]
const getFileExtension = url => `.${url.split('?')[0].split('.').pop()}`
const imageUrls =
Array.from(
document.querySelectorAll('img')
).map(({ src }) => ({src}))
.filter(({ src }) => {
return src && IMAGE_EXTENSIONS.includes(getFileExtension(src))
})
.map(({src}, idx) => ({ src, filename: `Image-${idx}${getFileExtension(src)}`}))
function downloadFile(url, name) {
fetch(url).then(res => res.blob()).then(res => {
const link = document.createElement('a');
link.setAttribute('download', name);
const href = URL.createObjectURL(res);
console.log(href)
link.href = href;
link.setAttribute('target', '_blank')
link.click();
setTimeout(() => {
URL.revokeObjectURL(href)
}, 0)
})
}
imageUrls.forEach((img) => {
downloadFile(img.src, filename)
})
@nightwolf077
Copy link

it giving me an error "filename is not defined" i copied the all of the code without affecting it , why it giving me like this ?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment