Скачивание материалов с Familysearch.org
Инструкции
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] Изобретателю респект! --- Матвеевы Елатьма, село Хреново, Матвеев Николай Николаевич г.Жуковский, Баталова (Шелудякова) Людмила Владимировна Москва, Баталов Сергей Владимирович, Матвеев Владимир Сергеевич Харьков, Матвеева Галина Сергеевна Тула. Фивейский Воронежская обл. | | |
MantikoreНижний Новгород Сообщений: 130 На сайте с 2013 г. Рейтинг: 154 | Наверх ##
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 г. Рейтинг: 18 | Наверх ##
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 | | |
TantaЛюберцы Сообщений: 160 На сайте с 2010 г. Рейтинг: 138 | Наверх ##
2 мая 2017 18:16 2 мая 2017 18:20 Виктор_В, думаю проблема в том, что в настройках браузера про папку сохранения (по умолчанию -папка "загрузки") вас стоит галочка (не помню точно) что-то вроде "спрашивать каждый раз..." Уберите ее и будет скачиваться автоматически, без уточнения, в курсе ли вы, куда скачиваете. У меня было подобное. П.с если Вы про вариант от Mantikore. --- Кулаков,Кузьмин-Твер.обл, д.Дмитрово(Твер. уезд, приход с.Астраганец), д.Попово ныне Старицкого у.
Плешаков,Харламов,Лебедев,Непримеров - Волгогр.обл.// | | |
Виктор_В Новичок
Москва Сообщений: 19 На сайте с 2008 г. Рейтинг: 18 | Наверх ##
2 мая 2017 19:16 Mantikore написал: [q] [/q]
Tanta написал: [q] [/q]
Спасибо! | | |
ОлинкаКемерово Сообщений: 868 На сайте с 2007 г. Рейтинг: 654 | Наверх ##
3 мая 2017 4:49 Mantikore написал: [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);
Небольшое дополнение. В предпоследней строке указан таймаут между операциями(4000 = 4 секунды). [/q]
Все замечательно работает, 4 секунды маловато, поставила 9. Медленно, но верно все качает, в субботу скачала 3 дела по чуть больше 1000 снимков без какой-либо блокировки. Спасибо большое создателю!!! --- Дневник http://forum.vgd.ru/891/
ZF1192774 (Gedmatch)
Бушуев, Пальцев, Сафронов/Федотов/Казаков, Панфилов, Кулагин, Кочетков, Воронин, Отцын/Оцинов, Мурзаев, Тюкин/Кырмагин, Пучинин, Мерзляков, Полатов, Хлебников, Пермяков, Кудриков, Седых, Лазарев, Босенко, Омельченко, Мороз, Манякин, Кубушка, Б | | |
|