Скачивание материалов с Familysearch.org
Инструкции
miliam г. Дубна Сообщений: 697 На сайте с 2012 г. Рейтинг: 521
| Наверх ##
17 марта 2017 18:18 Пожалуйста, подскажите, как скачать материалы с сайта не пространство тыкая, а массивом? Допустим, есть метрическая книга, в ней 400 листов. Нужно скачать все или частично. Как это сделать? Некоторые пишут, что на сайте есть даже инструкции на эту тему, однако, их найти проблематично. Будет полезно иметь их здесь, в отдельной теме. Спасибо.
tsamosaver написал: [q] FS Film Trawler - Расширение Chrome для сбора ссылок на кадры с FamilySearch
[/q]
euhome написал: [q] Скрипт GetFilmsByDGS.htm на основе номера пленки генерирует ссылки на изображения, которые можно затем загрузить.[/q] | | Лайк (2) |
Temych Санкт-Петербург Сообщений: 1134 На сайте с 2010 г. Рейтинг: 646 | Наверх ##
23 апреля 2017 19:29 Mantikore написал: [q] Друзья, зачем извращения с кучей программ, расширений для браузера и т.д., если задача решается простейшим js-скриптом прямо в браузере? (Скрипт эмулирует попеременное нажатие кнопок "сохранить" и "следующий снимок".)[/q]
Другое извращение  , но интересное решение. Только оно не решает проблему с ограничением скачивания, что решают расширения браузера + автокликер. Следить на каком кадре остановился каждый час, тоже неблагодарное занятие  , когда цель скачать все метрики по определённой церкви. | | |
Mantikore Нижний Новгород Сообщений: 130 На сайте с 2013 г. Рейтинг: 156 | Наверх ##
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 Санкт-Петербург Сообщений: 1134 На сайте с 2010 г. Рейтинг: 646 | Наверх ##
23 апреля 2017 23:13 Mantikore написал: [q] Вот, например, небольшая модификация снимает ограничение[/q]
Вот теперь полноценное решение! | | |
klower Новичок
Сообщений: 16 На сайте с 2013 г. Рейтинг: 15 | Наверх ##
24 апреля 2017 6:29 Расскажите как в вашем скрипте настроить папку загрузки, имя загружаемых файлов?
| | |
Mantikore Нижний Новгород Сообщений: 130 На сайте с 2013 г. Рейтинг: 156 | Наверх ##
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 Москва Сообщений: 570 На сайте с 2011 г. Рейтинг: 276 | Наверх ##
26 апреля 2017 1:31 26 апреля 2017 1:41 klower у меня в мазиле этот фокус тоже не работает... это видимо решение для гугель хрома... в нем все заработало. И надо смотреть чтобы текст совпадал, если не очень аккуратно скопировать то иногда в начале или в конце текста при вставке появляются тэги [ q] или [ /q] Изобретателю респект! --- Матвеевы Елатьма, село Хреново, Матвеев Николай Николаевич г.Жуковский, Баталова (Шелудякова) Людмила Владимировна Москва, Баталов Сергей Владимирович, Матвеев Владимир Сергеевич Харьков, Матвеева Галина Сергеевна Тула. Фивейский Воронежская обл. | | |
Mantikore Нижний Новгород Сообщений: 130 На сайте с 2013 г. Рейтинг: 156 | Наверх ##
26 апреля 2017 12:09 26 апреля 2017 12:24 klower написал: [q] Браузер Firefox 52.0.1[/q]
Да, в Firefox я не тестировал. Вот этот код будет работать в обоих браузерах: [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' );var rn=true; function d(){l.href=document.getElementById('printImage' ).src;l.download=document.getElementsByClassName('thumbnail-selection' )[0].title+(rn?(" "+t.innerHTML.substring(t.innerHTML.lastIndexOf(")")+3,t.innerHTML.lastIndexOf(" image")).replace(/[\]\[>/|\"*?<]|(> )|(< )/gi,"")):"")+".jpg";document.body.appendChild(l);l.click();document.body.removeChild(l);}; 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(){d();e(b);rn=false;if(!document.getElementsByClassName('next pager-icon fs-civ-circle-chevron-right enabled disabled' )[0]){s(!t);}},4000)}; console.log = function(m){if(m.indexOf("GetImageData")>=0)rn=true;} s(true);[/q]
Небольшое дополнение. В предпоследней строке указан таймаут между операциями(4000 = 4 секунды). Из-за низкой производительности сайта FamilySearch (либо вашего компьютера) может возникнуть ситуация, при которой свойство элемента 'image-citation' не успевает обновиться за этот промежуток времени. Из-за этого к названию файла может не подтянуться описание. Если вы это наблюдаете, или хотите обезопасить себя от таких ситуаций, просто увеличьте таймаут (10000 хватит наверняка, но, соответственно, скорость работы уменьшится) --- Семеновские, Введенские, Чистопольские, Шлюпневы, Поляковы (Нижегородская губерния) | | Лайк (1) |
klower Новичок
Сообщений: 16 На сайте с 2013 г. Рейтинг: 15 | Наверх ##
27 апреля 2017 15:28 Огромное вам спасибо! Всё заработало! | | |
Виктор_В Новичок
Москва Сообщений: 19 На сайте с 2008 г. Рейтинг: 19 | Наверх ##
2 мая 2017 17:33 Автокликер не очень удобен, решил попробовать скрипт, Google Chrome Версия 58.0.3029.81 на двух разных компьютерах результат одинаковый пробовал скачать: https://familysearch.org/searc...cat=785139Собственно процесс скачивания не стартует, открывается куча окон "Сохранение" потом нужно кликать мышкой в кнопку "Сохранить" Какие-то странные наименования файлов: Изображение 1 из 936 .jpg Изображение 2 из 936 .jpg Изображение 3 из 936 .jpg Изображение 4 из 936 .jpg Изображение 5 из 936 .jpg Изображение 6 из 936 image 474 of 563; государственных архивов Татарстан (Tatarstan National Archive, Kasan)..jpg Изображение 7 из 936 image 475 of 563; государственных архивов Татарстан (Tatarstan National Archive, Kasan)..jpg Изображение 8 из 936 image 476 of 563; государственных архивов Татарстан (Tatarstan National Archive, Kasan)..jpg Изображение 9 из 936 image 477 of 563; государственных архивов Татарстан (Tatarstan National Archive, Kasan)..jpg Изображение 10 из 936 image 478 of 563; государственных архивов Татарстан (Tatarstan National Archive, Kasan)..jpg Изображение 11 из 936 image 479 of 563; государственных архивов Татарстан (Tatarstan National Archive, Kasan)..jpg | | |
|