Как скачать отсканированные книги с archive.org

Автор RedPython, 22 декабря 2022, 11:09:53

« назад - далее »

RedPython

На https://archive.org/ не только хранилище старого софта с кряками, но и отсканированные книги 20-летней давности, причём такие, тиражи у которых были мизерными, а сканов никогда и не существовало. Естественно, работа проделана не просто так, и выгода сайта заключается в ссылке на букинистический магаз, в котором теоретически можно приобрести б/ушную печатную копию. Неудобство в том, что некоторые книжки почитать дают лишь на время, и не дают скачать вовсе. Интернеты не подсказали лучшего способа содрать сканы, чем постранично, причём через букмарклет, симулирующий операцию "Файл->Сохранить"! Дичайший способ, но он работает.

Для начала нужно создать букмарклет, скопировав код на эту страничку, и добавив кнопку скрипта в закладки браузера. На всякий случай дублирую код сюда.
function downloadFile(filePath){
    var link=document.createElement('a');
    link.href = filePath;
    link.download = filePath.substr(filePath.lastIndexOf('/') + 1);
    link.click();
}

function getNewURL(pageCount){
if(pageCount == null) pageCount = 1;
var url = document.location.href;
var urlParts = url.split(".jp2");
var urlPrefixParts = urlParts[0].split("_");
var urlPageNumber = urlPrefixParts[urlPrefixParts.length-1];
var nextPageNumberString = String(parseInt(urlPageNumber)+pageCount).padStart(4,'0'); 
var newURLPrefix = '';
for(var p=0;p<urlPrefixParts.length-1;p++) newURLPrefix += urlPrefixParts[p] + '_';
var newURL = newURLPrefix + nextPageNumberString + '.jp2' + urlParts[1];
return newURL;
}

var confirm1 = confirm('Archive.org Scanned Book Downloader:\n\nReady Check: Are you on a window/tab viewing *just* the IMAGE of the 1st page of the book? If not cancel and run this when you are.');
if(!confirm1) return false;
var pageCount = prompt('Archive.org Scanned Book Downloader:\n\nHow many pages are in this book?');
var pageCounter = 0;
var pageInterval = null;
if(pageCount == null || pageCount == undefined || parseInt(pageCount) == NaN){
   console.log('no page count provided.. giving up.');
}else{
pageInterval = window.setInterval(function(){
if(pageCounter > parseInt(pageCount)){
window.clearInterval(pageInterval);
pageInterval = null;
console.log('downloading done!..');
var pdfTime = confirm('All pages downloaded! (some files may still be downloading though)\n\nWould you like to go to a site to create a PDF with them now?');
if(pdfTime){
window.open('https://tools.pdf24.org/en/images-to-pdf','_blank');
}
}else{
var nextFile = getNewURL(pageCounter);
downloadFile(nextFile);
console.log('downloading next page! (' + nextFile + ')');
}
pageCounter += 1;
},900);
}


Как пользоваться:
1) Залогиниться на архиве, нажать синюю кнопку Borrow at 1 hour или типа того сверху. После этого книгу можно читать в браузере, но через 1 час её отзовут
2) Открыть книгу на титульнике, увеличить изображение кнопочкой с лупой (чтобы подгрузилось максимальное разрешение)
3) Клацнуть опцию типа "Исследовать" в браузере
4) В открывшемся окошке искать картинку по слову BRpageImage
5) Найти и открыть в новой вкладке
6) Вызвать скрипт из закладки
7) Вбить количество страниц
8) Поработать указательным пальцем правой руки. При этом нельзя позволять накапливаться слишком большому количеству открытых окон, потому что браузер непременно повиснет