Скачивание материалов с Familysearch.org
Инструкции
admiral21Сообщений: 2189 На сайте с 2016 г. Рейтинг: 6348 | Наверх ##
14 апреля 2017 23:23 Kraut написал: [q] да, именно так все работает как часы[/q]
При загрузке через DownThemAll! есть некоторые особенности. Файлы нумеруются с 001.jpg по 999.jpg. Нумерация сквозная. Для примера, если в папку1 загружаются 150 файлов (001.jpg - 150.jpg), в следующую папку2 файлы будут загружаться с именем 151.jpg и т.д. Может так получиться, что в какую-то папку загрузятся файлы 950.jpg-999.jpg. Затем снова нумерация начнется с 001.jpg (В папке файлы будут не в правильном порядке) Если загружается более 1000 файлов в одну папку, следующие файлы будут переименовываться в 001_001.jpg, 001_002.jpg ... | | |
TemychСанкт-Петербург Сообщений: 1111 На сайте с 2010 г. Рейтинг: 616 | Наверх ##
14 апреля 2017 23:42 admiral21 написал: [q] Нумерация сквозная. Для примера, если в папку1 загружаются 150 файлов (001.jpg - 150.jpg), в следующую папку2 файлы будут загружаться с именем 151.jpg и т.д. Может так получиться, что в какую-то папку загрузятся файлы 950.jpg-999.jpg. Затем снова нумерация начнется с 001.jpg (В папке файлы будут не в правильном порядке)
Если загружается более 1000 файлов в одну папку, следующие файлы будут переименовываться в 001_001.jpg, 001_002.jpg ... [/q]
Я выбрал маску сохранения файла такую *hh*.*mm*.*ss*.*ext*, в итоге получим файл 15.55.12.jpg, который удобно сортировать, потом пакетно переименовываем. | | |
MantikoreНижний Новгород Сообщений: 130 На сайте с 2013 г. Рейтинг: 154 | Наверх ##
23 апреля 2017 13:43 23 апреля 2017 13:49 Друзья, зачем извращения с кучей программ, расширений для браузера и т.д., если задача решается простейшим js-скриптом прямо в браузере? (Скрипт эмулирует попеременное нажатие кнопок "сохранить" и "следующий снимок".)
var b=document.getElementsByClassName('next pager-icon fs-civ-circle-chevron-right enabled' )[0]; var c=document.getElementsByClassName('actionToolbarSaveButton saveButton button save' )[0]; function e(e){if(e.fireEvent){e.fireEvent('onclick' ) ;}else{var o=document.createEvent('Events' );o.initEvent('click',true,false);e.dispatchEvent(o);}}; function s(d){setTimeout(function(){if(d){e( c);}else{e(b);}if(!document.getElementsByClassName('next pager-icon fs-civ-circle-chevron-right enabled disabled' )[0]){s(!d);}},3000)}; s(true);
Чтобы его запустить, открываем страницу с нужной пленкой, встаем на первый снимок. Затем запускаем консоль браузера (кнопка F12 в Chrome), копируем туда код срипта и нажимаем Enter. Скрипт остановится, когда дойдет до конца пленки. Чтобы остановить его вручную, просто перезагрузите страницу.
Скрипт работает и в фоновом режиме, т.е. во время его работы можно заниматься другими делами.
PS. FamilySearch начинает блокировать по IP-адресу, если с вашего компьютера идет слишком много скачиваний, поэтому где-то через 100 снимков он выдаст сообщение "Ошибка 403 Превышена пропускная способность". Придется какое-то время подождать (около часа), прежде, чем блокировка снимется. После этого нужно перезапустить скрипт (встав на последний загруженный снимок)
--- Семеновские, Введенские, Чистопольские, Шлюпневы, Поляковы (Нижегородская губерния) | | |
TemychСанкт-Петербург Сообщений: 1111 На сайте с 2010 г. Рейтинг: 616 | Наверх ##
23 апреля 2017 19:29 Mantikore написал: [q] Друзья, зачем извращения с кучей программ, расширений для браузера и т.д., если задача решается простейшим js-скриптом прямо в браузере? (Скрипт эмулирует попеременное нажатие кнопок "сохранить" и "следующий снимок".)[/q]
Другое извращение , но интересное решение. Только оно не решает проблему с ограничением скачивания, что решают расширения браузера + автокликер. Следить на каком кадре остановился каждый час, тоже неблагодарное занятие , когда цель скачать все метрики по определённой церкви. | | |
MantikoreНижний Новгород Сообщений: 130 На сайте с 2013 г. Рейтинг: 154 | Наверх ##
23 апреля 2017 22:46 24 апреля 2017 11:44 Temych написал: [q] Другое извращение , но интересное решение[/q]
Это как раз не изращение, а самое очевидное решение. Извращение это ваш автокликер) Вот, например, небольшая модификация снимает ограничение, о котором я говорил (за счет того, что изображение теперь скачивется на "нажатием" на кнопку, а по прямой ссылке) [q] var b=document.getElementsByClassName('next pager-icon fs-civ-circle-chevron-right enabled' )[0]; var l=document.createElement("a");var t=document.getElementById('image-citation' ); function d(){l.href=document.getElementById('printImage' ).src;l.download=document.getElementsByClassName('thumbnail-selection' )[0].title+" "+t.innerText.substring(t.innerText.lastIndexOf(")")+3,t.innerText.lastIndexOf(" image")).replace(/[\]\[>/|\"*?<]/gi,"")+".jpg";l.click();}; function e(e){if(e.fireEvent){e.fireEvent('onclick' );}else{var o=document.createEvent('Events' );o.initEvent('click',true,false);e.dispatchEvent(o);}}; function s(t){setTimeout(function(){if(t){d();}else{e(b);}if(!document.getElementsByClassName('next pager-icon fs-civ-circle-chevron-right enabled disabled' )[0]){s(!t);}},4000)}; s(true);[/q]
Огромный плюс еще и в том, что скрипт можно легко модифицировать под ваши нужды. Например, указать правила именования фалов. Приведенный выше скрипт сохраняет файлы в таком виде:
--- Семеновские, Введенские, Чистопольские, Шлюпневы, Поляковы (Нижегородская губерния) | | Лайк (2) |
TemychСанкт-Петербург Сообщений: 1111 На сайте с 2010 г. Рейтинг: 616 | Наверх ##
23 апреля 2017 23:13 Mantikore написал: [q] Вот, например, небольшая модификация снимает ограничение[/q]
Вот теперь полноценное решение! | | |
klower Новичок
Сообщений: 16 На сайте с 2013 г. Рейтинг: 15 | Наверх ##
24 апреля 2017 6:29 Расскажите как в вашем скрипте настроить папку загрузки, имя загружаемых файлов?
| | |
MantikoreНижний Новгород Сообщений: 130 На сайте с 2013 г. Рейтинг: 154 | Наверх ##
24 апреля 2017 8:56 klower написал: [q] Расскажите как в вашем скрипте настроить папку загрузки, имя загружаемых файлов?[/q]
Смотрите. указать папку для загрузки в скрипте нельзя, поскольку из него нет доступа к файловой системе компьютера. Это фундаментальное свойство Javascript, обеспечивающее его безопасность. По этому все файлы загружаются в папку, указанную в настройках вашего браузера. Как настроить имя.. Чтобы ответить на этот вопрос, вам, скорее всего, понадобятся знания javascript. Попробую объяснить максимально понятно. За название файла в этом скрипте отвечает следующая строка: [q] l.download=document.getElementsByClassName('thumbnail-selection' )[0].title+" "+t.innerText.substring(t.innerText.lastIndexOf(")")+3,t.innerText.lastIndexOf(" image")).replace(/[\]\[>/|\"*?<]/gi,"")+".jpg";[/q]
если мы напишем вместо этого [q] l.download="картинка.jpg";[/q]
то файлы будут сохраняться с названиями "картинка.jpg", "картинка(1).jpg", "картинка(2).jpg" и т.д. Нас этот вариант не очень устраивает. Нам нужно, чтобы в названии, как минимум, фигурировал номер снимка в выбранном каталоге. Всю информацию о снимке можно найти на странице (если изучить ее исходный код). Например, если вы наведете курсор на выбранный снимок, вы увидите всплывающую подсказку ("Изображение 4 из 9"). Эта подсказка содержится в свойстве title элемента с классом 'thumbnail-selection'. Ее получить очень просто: вод такой код [q] l.download=document.getElementsByClassName('thumbnail-selection' )[0].title+".jpg";[/q]
будет давать вашим файлам имена "Изображение 2 из 9.jpg", "Изображение 3 из 9.jpg" и т.д. В принципе, на этом можно остановиться. Но зачем останавливаться, если мы таким же образом можем получить семантическую информацию о снимке (например, к какому населенному пункту он относится) и указать ее в названии? На странице есть элемент, который содержит всю интересующую нас информацию: если мы выполним в консоли такой код [q] document.getElementById('image-citation' ).innerText[/q]
по получим примерно такой текст: [q] "Россия, Нижний Новгородская перепись подушного налога (ревизские сказки), 1782-1858," images, FamilySearch (https://familysearch.org/ark:/61903/3:1:3QSQ-G9ZP-999M-2?cc=2115663&wc=MFHH-DM4%3A1017292001%2C1017391001%2C1017426701%2C1017400701 : 21 May 2014), Нижний Новгород > Балахна > Ягодное лесное > image 4 of 9; State Regional Archive, Nizhni Novgorod, Volga.[/q]
Все, что нам осталось, это вытащить из этой строки то, что нас интересует, избавившись от всего лишнего. Здесь большое пространство для самодеятельности, можете разобраться самостоятельно (смотрите в сети описание функций javascript substring, replace и т.д.). В своем скрипте я делаю так: Выбираю из этой строки текст, начиная с последней скобки, и заканчивая словом " image" [q] t.innerText.substring(t.innerText.lastIndexOf(")")+3,t.innerText.lastIndexOf(" image"))[/q]
получаю "Нижний Новгород > Балахна > Ягодное лесное >", затем удаляю из него все запрещенные символы [q] replace(/[\]\[>/|\"*?<]/gi,"")[/q]
соединив 2 строки в одну и добавив ".jpg", получаем итоговое имя файла: "Изображение 4 из 9 Нижний Новгород Балахна Ягодное лесное .jpg" --- Семеновские, Введенские, Чистопольские, Шлюпневы, Поляковы (Нижегородская губерния) | | |
klower Новичок
Сообщений: 16 На сайте с 2013 г. Рейтинг: 15 | Наверх ##
25 апреля 2017 22:17 Спасибо за подробный ответ! Но у меня ничего не происходит. Если при применении первого скрипта просто листаются страницы, в папке для загрузок по умолчанию ничего нет. При вставке второго варианта вообще пишет - undefined и всё Может быть что-то не так делаю. Скопировал с вашего сообщения вставил в консоль Браузер Firefox 52.0.1 | | |
MihelМосква Сообщений: 497 На сайте с 2011 г. Рейтинг: 235 | Наверх ##
26 апреля 2017 1:31 26 апреля 2017 1:41 klower у меня в мазиле этот фокус тоже не работает... это видимо решение для гугель хрома... в нем все заработало. И надо смотреть чтобы текст совпадал, если не очень аккуратно скопировать то иногда в начале или в конце текста при вставке появляются тэги [ q] или [ /q] Изобретателю респект! --- Матвеевы Елатьма, село Хреново, Матвеев Николай Николаевич г.Жуковский, Баталова (Шелудякова) Людмила Владимировна Москва, Баталов Сергей Владимирович, Матвеев Владимир Сергеевич Харьков, Матвеева Галина Сергеевна Тула. Фивейский Воронежская обл. | | |
|