lovasoa / dezoomify

Dezoomify is a web application to download zoomable images from museum websites, image galleries, and map viewers. Many different zoomable image technologies are supported.
https://dezoomify.ophir.dev
GNU General Public License v2.0
649 stars 71 forks source link

[new site support] - SmartFrame sites #622

Open Tagishsimon opened 2 years ago

Tagishsimon commented 2 years ago

Site name and desciption

Sites using SmartFrame technology to withhold public domain images.

Example URLs

Current error message

Error: Unable to find a proper dezoomer for: https://historicengland.org.uk/images-books/archive/collections/aerial-photos/record/EAW011489

(https://dezoomify.ophir.dev/dezoomers/automatic.js:30)

pigsonthewing commented 2 years ago

More tips here: https://twitter.com/ojensen5115/status/1524824267203944448

edent commented 2 years ago

This gist captures a high resolution copy of the canvas

https://gist.github.com/stuartlangridge/82c87a601a7e2ae566e640d93138ed85

Although, worth noting, it isn't quite the full resolution.

robinwhittleton commented 2 years ago

The images seem to need to be requested with a request header of Accept: authorization/wndeym9ajvin,*/*; this is the same for both Historic England and the Tate implementations.

I guess this would need to be retrieved from their JS, as it‘d presumably be trivial to deploy a new auth code to their server config and JS package at the same time.

An example of a minimal curl request for a Historic England tile would look like:

curl 'https://images.smartframe.io/sfis/27025fea9afa38753501b02dbd8a40f2/RAF_CPE_UK_2034_RP_3195/4298/c62a6a11046822688c6a21e68126ca20688aca61e6a6a68416cac1ec6a4666066126c6c8ca1381ecaa4caa0cac1e662666e2661212c6aa6a12468c26.jpg' -H 'Accept: authorization/wndeym9ajvin,*/*' -H 'Referer: https://historicengland.org.uk/'

and for a Tate tile:

curl 'https://images.smartframe.io/sfis/b6b5620bab617a4e759176b2934938a9/misc-n01--n01-547--n01547/3163/c18c820181828418c2024181838830c6818301848838c181430c181810c68830c70701861808181884101868810c681830c70418c01c18188410c681.jpg' -H 'Accept: authorization/wndeym9ajvin,*/*' -H 'Referer: https://www.tate-images.com/'

pigsonthewing commented 2 years ago

Terence ("edent"), who posted above, has a blog post on this, here: https://shkspr.mobi/blog/2022/05/liberating-out-of-copyright-photos-from-smartframes-drm/

pigsonthewing commented 2 years ago

Another site using the same technology to prevent downloads of public domain images:

https://www.granger.com/results.asp?image=0060106&itemw=4&itemf=0003&itemstep=81&itemx=106

pigsonthewing commented 2 years ago

There is also a now a TamperMonkey script, that works on HE's /aerial-photos/ sub-site, but not others: https://pastebin.com/qYEy5C6L

lovasoa commented 1 year ago

Here is a small script you can copy and paste into your browser console to download full-size images from smartframe sites :

document.querySelector("smart-frame").style="width:6000px; height:6000px;"

setTimeout(()=>
    HTMLCanvasElement.prototype.toBlob.call(
        document.querySelector("canvas.stage"),
        x=>window.location=URL.createObjectURL(x),
        "image/jpeg", 99
    ),
3000)

It will enlarge the zoomable image preview size, wait 3 seconds for the image to load, then load the full-size image directly in your browser, from which you can ctl-click and "Save As".

ghost commented 1 year ago
document.querySelector("smart-frame").style="width:6000px; height:6000px;"

setTimeout(()=>
    HTMLCanvasElement.prototype.toBlob.call(
        document.querySelector("canvas.stage"),
        x=>window.location=URL.createObjectURL(x),
        "image/jpeg", 99
    ),
3000)

A note that this downloads the same resolution as the script above; about 80% of the full resolution, so not the full-size image.

pigsonthewing commented 1 year ago

Someone has now made a new Tampermonkey script; it works for Historic England, Tate and Granger, and can be made to work on any other SmartFrame site by adding a "match" like those on lines 7 to 9.

https://pastebin.com/7TzMVm6F

ghost commented 7 months ago

Here is a small script you can copy and paste into your browser console to download full-size images from smartframe sites :

document.querySelector("smart-frame").style="width:6000px; height:6000px;"

setTimeout(()=>
    HTMLCanvasElement.prototype.toBlob.call(
        document.querySelector("canvas.stage"),
        x=>window.location=URL.createObjectURL(x),
        "image/jpeg", 99
    ),
3000)

It will enlarge the zoomable image preview size, wait 3 seconds for the image to load, then load the full-size image directly in your browser, from which you can ctl-click and "Save As".

This method does not work anymore.

Need help downloading from this one: https://iconiclicensing.net/

JoeyJoJoJr commented 4 months ago

Hello all, any update on these methods? Long shot I know, but it seems nowhere else on the internet is brainstorming this. Thank you

RayMairlot commented 4 months ago

@JoeyJoJoJr There are recent discussions at the previously mentioned blog post: https://shkspr.mobi/blog/2022/05/liberating-out-of-copyright-photos-from-smartframes-drm/#comments