Это сайт — моя персональная записная книжка. Интересна мне, по большей части, история, своя жизнь и немного программирование.

Как скачать документ из АИС ЦГАСО

АИС ЦГАСО (104.73КиБ)

Изучаю тут самарский электронный архив, который сделан в «Эларе». Насколько я понял, продукт называется АИС ЦГАСО. Убиваю сразу двух зайцев — разбираюсь как всё работает и пытаюсь найти нужные мне документы по родственникам.

Ребята из «Элара» молодцы, делают очень нужное дело — оцифровывают бумажные архивы, это невероятный труд, но, к сожалению, интерфейс просмотра документов оставляет желать лучшего, он мне сжёг массу нервов. Решил просто выкачать нужные мне документы на компьютер и дело с концом. Написал специальную программу для скачивания документов из АИС ЦГАСО, на Гугл Гоу. Получилось довольно компактно.

Основная фишка — паралельное скачивание документов в несколько потоков. Не уверен, что это действительно работает (я не до конца понимаю как Гоу переключает свои горутины), но в теории должно. Добавлено: «полевые испытания» подтвердили, что документы действительно скачиваются параллельно. Удалось сделать крайне просто:

ch := make(chan byte, N)

for i, id := range documents {
    ch <- 1

    go func(id string, index int) {
        name := padZero5(strconv.Itoa(index)) + ".jpg"
        copyUrlToFile(strings.Replace(url, `%id`, id, 1), *dir + "/" + name)

        <-ch
    }(id, i)
}

Первой строкой в коде создаётся канал заданной размерности. С ним будут работать горутины (это такие легковесные потоки Гоу). В него можно положить только N значений, после чего следующая операция записи будет ждать его освобождения. С помещением в канал каждого нового значения, запускается горутина для скачивания одного листа документа, как только горутина отработала, она убирает из канала одно значение и цикл основного потока снова его кладёт и запускает новую горутину.

В итоге, одновременно, не будет запущено более N горутин.

Пользоваться программой просто (если кому-нибудь кроме меня это надо) — нужно в браузере (я в «Хроме» пробовал, выбирать при сохранении надо формат «веб-страница полностью») перейти на чтение документа (на снимке экрана иконка книжки рядом с каждым документом), когда загрузится первая страница документа, сохранить текущий документ браузера на диск (Ctrl+S в Винде, ⌘+S на «Маке») и скормить его программе в командной строке:

go run cgodownloader.go скачанный-файл.html

Программа обработает документ, покажет сколько страниц найдено и начнёт их скачивать в виде больших джпегов в ту же папку, показывая их имена. У меня на большом документе (около 1,5 тысяч страниц) заняло прилично времени — час с лишним.

Запуск программы (6.56КиБ)

Зато теперь просматривать удобно.

53 комментария
Никита 2013

здравствуйте.
А можно реализовать чтобы скачивал, только определенный диапазон листов. Например с 100 по 200.

Евгений Степанищев (bolknote.ru) 2013

Комментарий для Никита:

Добрый день! Можно.

Никита 2013

А как сделать?

Евгений Степанищев (bolknote.ru) 2013

Комментарий для Никита:

Выучить язык программирования Гоу ( http://golang.org ) и запрограммировать.

Евгений 2013

Добрый день! Подскажите как запустить вашу программу?

Евгений Степанищев (bolknote.ru) 2013

Комментарий для Евгений:

Добрый день!

Взять компилятор языка Гоу, скомпилировать программу, запустить.

Евгений 2013

Подскажите каким компилятор пользуетесь Вы?

Евгений 2013

При компилировании выдает вот такую ошибку:

Usage: 6.out [-dir=<output dir>] [-host=<e-archive address>] <filename>

  -dir=».«: directory to output.
  -host=«cgaso.regsamarh.ru»: address of e-archive
Подскажите в чем дело.

Евгений Степанищев (bolknote.ru) 2013

Комментарий для Евгений:

Я пользуюсь компилятором, который скачал с golang.org.

При компилировании выдает вот такую ошибку

При компилировании или запуске?

Евгений 2013

При компилировании

Евгений 2013

Если вас не затруднит не могли бы вы выложить подробную инструкцию как скомпилировать и запустить вашу программу желательно со скринами. Очень нужно. Заранее благодарен.

Евгений Степанищев (bolknote.ru) 2013

Комментарий для Евгений:

Доброй ночи! Под какую операционную систему? Если под Виндоуз, то у меня её просто нет.

Евгений 2013

Добрый день! Под Linux.

Евгений Степанищев (bolknote.ru) 2013

Комментарий для Евгений:

Линукса у меня тоже нет. Вообще, компиляция программ на Гоу это одна строка — go build имяпрограммы

Никита 2013

Здравствуйте!
А вы не можете сделать, чтобы можно скачивать только определенный диапазон страниц или отдельные страницы?

Евгений Степанищев (bolknote.ru) 2013

Комментарий для Никита:

Здравствуйте!

Я могу, но не буду, нет пока времени на это.

Никита 2013

Есть надежда, что сделаете?

Евгений Степанищев (bolknote.ru) 2013

Комментарий для Никита:

Всё может быть.

Евгений 2013

Комментарий для Евгения Степанищева:

Добрый день! Благодарю за отличную программу. После танцев с бубном программа заработала на Windows. Я пробовал на Тобольском архиве выбрал документ, программа показала 300 страниц, начала скачивать. После завершения оказалось, что большинство джипегов имеют нулевой размер т. е. только закачались ярлыки. Почему так не могу разобраться. Помогите пожалуйста.

Евгений Степанищев (bolknote.ru) 2013

Комментарий для Евгений:

Увы, Windows у меня нет. На самарском архиве, под Mac OS работает всё нормально. Возможно тобольский архив имеет особенности или он отдаёт документы чересчур медленно, например. Не знаю.

Евгений 2013

Добрый день. Подскажите пожалуйста что нужно исправить в программе чтобы по умолчанию был адрес тобольского архива.

Евгений Степанищев (bolknote.ru) 2013

Комментарий для Евгений:

Добрый день! Не подскажу.

Сергей Андреев 2013

Комментарий для Евгения Степанищева:

Спасибо, почти работает.
А как ограничить число потоков? На не сильно быстром инете получается, что часть файлов не скачивается целиком, полагаю, уменьшение нагрузки на канал должно помочь. Многопоточность это, конечно, хорошо, не не столь обязательно — в любом случае получится быстрее, чем просматривать дела напрямую из системы.

Евгений Степанищев (bolknote.ru) 2013

Комментарий для Сергей Андреев:

Ключа отдельного нет. В 61-й строке можно переменной N присвоить значение 1, будет одна го-рутина (это не поток, хотя в чём-то похоже).

Сергей 2013

Комментарий для Евгения Степанищева:

С хостов 109.233.224.234:83 и 109.233.224.234:81 еще неделю назад хотя бы частично скачивал теперь вообще не качает. Не понятно то ли с серверами что то, то ли защиту придумали.

Григорий 2013

После работ по подключению к госуслугам цгасо все отвалилось. Скачивает только куски 300 на 300 вместо полной страницы.

Евгений Степанищев (bolknote.ru) 2013

Комментарий для Григорий:

Это вы про какой архив?

Григорий 2013

Самарский архив

Сергей Андреев 2013

да, теперь качает всякий мусор вместо нужных файлов

Евгений Степанищев (bolknote.ru) 2013

Комментарий для Сергей Андреев:

Мда, печаль. Когда в следующий раз понадобятся документы, буду смотреть что случилось.

Григорий 2013

Комментарий для Евгения Степанищева:

Здравствуйте, сегодня вообще выдет такую ошибку...
[URL= http://radikal.ru/fp/002e6a83c5bb4c5ea7c363c2cb877947%5D%5BIMG%5Dhttp://s010.radikal.ru/i313/1311/b6/b8374d56a3ebt.jpg%5B/IMG%5D%5B/URL%5D

В коде ссылка идет на Pages/ImageFile.ashx, а сейчас на  http://cgaso.regsamarh.ru/Pages/Requests/Requests.aspx...​. может быть и в этом проблема

Евгений Степанищев (bolknote.ru) 2013

Комментарий для Григорий:

Это баг в компиляторе. Возможно вы обновили его недавно. Только зачем вы какие-то странные слова вокруг адреса картинки понаписали?

В коде ссылка идет на Pages/ImageFile.ashx, а сейчас на  http://cgaso.regsamarh.ru/Pages/Requests/Requests.aspx может быть и в этом проблема

Всё может быть. Пока не могу посмотреть в чём дело, времени нет.

Петр 2013

Комментарий для Евгения Степанищева:

Возможно после НГ свободный доступ к просмотру будет закрыт, поэтому лучше не оттягивать)

Евгений Степанищев (bolknote.ru) 2013

Комментарий для Петр:

Как это? Разве не государство выделило деньги на оцифровку? С чего теперь доступ к нему будет закрыт, если это на наши налоги делалось?

Аркадий 2013

Не закроют, а введут оплату за доступ:
http://forum.vgd.ru/615/53595/0.htm?a=news_view%26o=

2Петр: а откуда ветер дует таких конкретных предположений, можно поподробнее?

2Евгений & Григорий. Видимо, отключили tilesize=25600, теперь только сшивать...

Петр 2013

Комментарий для Аркадий:

Ну так я и написал, что свободный доступ закроют, совсем-то его не закроют.
А поподробнее нет ничего, сам только так и слышал.

Григорий 2013

Чушь! Про самарский архив:

Добрый день!
При регистрации на РПГУ или ЕПГУ будет присвоен единый логин и пароль.
При выборе услуги по доступу в читальный зал новых данных присваиваться не будет,, надо будет только
заполнить анкету для регистрации в ЧЗ.
Некоторое время будет параллельный доступ в ЧЗ, однако уже с конца первого полугодия 2014 года доступ и регистрация будет только через
РПГУ/ЕПГУ

*единый портал государсвенных услуг

Аркадий 2013

2Григорий: Это и есть переход на механизм для дальнейшей реализации оплаты. Вы мою ссылочку-то внимательно читали?

Ку 2013

Комментарий для Евгения Степанищева:

Евгений, сначала скачивались квадратики 300*300, а теперь в файлики *.jpg пишется текст об ошибке, что сервер не выполнил запрос. Раньше по PrintScreen экран копировался без звука, теперь же выдается запрос-предупреждение, что использование по согласованию с архивом. После этого все копируется в буфер как обычно. Не связана ли неработоспособность именно с этим?

Евгений Степанищев (bolknote.ru) 2013

Комментарий для Ку:

Видимо защищаются от скачиваний. PrintScreen и нескачивание картинок друг с другом связаны только опосредованно — следствия попыток защитить информацию.

Ку 2013

Комментарий для Евгения Степанищева:

Опосредованно или при попытке получить картинку выдается запрос, на который программулина не может дать ответ, а человек может?

Андрей 2013

Евгений, здравствуйте!

ЭЛАР обновил ПО и программка само собой не работает. Есть ли возможность сделать ее рабочей или все, лавочка закрыта?

Спасибо.

Евгений Степанищев (bolknote.ru) 2013

Комментарий для Андрей:

Добрый вечер!

Пока времени нет. Если появится, попробую доделать!

Евгений Степанищев (bolknote.ru) 2013

Комментарий для Ку:

Опосредованно или при попытке получить картинку выдается запрос, на который программулина не может дать ответ, а человек может?

Нет, просто данные по-другому лежат.

Евгений Степанищев (bolknote.ru) 2013

Подпилил, стала работать: http://bolknote.ru/all/4103

Стас 2015

Нужны срочно записи с Тобольского архива, сколько будет стоить?

Евгений Степанищев (bolknote.ru) 2015

Комментарий для Стас:

Это ко мне что ли обращение? Спасибо, но мне ничего не нужно, качайте сами.

Стас 2015

Это обращение ко всем!!!
Я просто не шарю в этих языках программирования!!! А записи срочно нужны, чтобы не ехать в Тобольск и для заказчиков!!!
Поэтому и предлагаю, чтобы кто-то скачал мне эти записи в хорошем качестве, естественно не бесплатно!!!
Кто сможет это сделать пишите на почту (FusionS87117@yandex.ru) или здесь пишите!!!

Воробьев Сергей 2018

Евгений здравствуй! Раньше с самарского архива можно было сохранять изображения (файлы) на компьютер, а сейчас там сделали только просмотр без возможности сохранить. Конечно вкладка «Сохранить картинку как» осталась, но сохраняется только тот фрагмент (часть картинки), на который указывал курсор мыши. Я звонил им туда, они сказали, что сделали так специально и что все теперь платно, они могут прислать документ в электронном виде, но лист стоит 40-50 рублей. Как обойти эту проблему? Как сохранить картинку полностью в высоком качестве (разрешении) ? Помогите пожалуйста, потомучто никто мне так и не смог помочь.

Евгений Степанищев 2018

Добрый вечер, Сергей!

В самарском архиве у меня уже интересов, поэтому помочь не могу.

Илоило Илоилоил 2020

Здравствуйте! А делать, если программа выдает ошибку «Error: <to> cannot be less than <from>»?

Евгений Степанищев 2020

Доброе утро! Программа давно не работает — архив что-то у себя изменил.

Евгений Морозов 2021

Архив перешел на HTTPS по этому программа не работает.

Даша Семенова 2021

Если кого ещё интересует вопрос выкачки целых дел с АИСов — пишите в личку.