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

АИС ЦГАСО (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КиБ)

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

Комментарии 54

Никита № 1
здравствуйте.
А можно реализовать чтобы скачивал, только определенный диапазон листов. Например с 100 по 200.
Евгений № 5
Добрый день! Подскажите как запустить вашу программу?
Евгений Степанищев (bolknote.ru) автор № 6
Добрый день!

Взять компилятор языка Гоу, скомпилировать программу, запустить.
Евгений № 8

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

Usage: 6.out [-dir=] [-host=]

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

Евгений Степанищев (bolknote.ru) автор № 9

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

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

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

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

Евгений № 11
Если вас не затруднит не могли бы вы выложить подробную инструкцию как скомпилировать и запустить вашу программу желательно со скринами. Очень нужно. Заранее благодарен.
Евгений Степанищев (bolknote.ru) автор № 12
Комментарий для Евгений:

Доброй ночи! Под какую операционную систему? Если под Виндоуз, то у меня её просто нет.
Евгений Степанищев (bolknote.ru) автор № 14
Комментарий для Евгений:

Линукса у меня тоже нет. Вообще, компиляция программ на Гоу это одна строка — go build имяпрограммы
Никита № 15
Здравствуйте!
А вы не можете сделать, чтобы можно скачивать только определенный диапазон страниц или отдельные страницы?
Евгений Степанищев (bolknote.ru) автор № 16
Комментарий для Никита:

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

Я могу, но не буду, нет пока времени на это.
Евгений № 19
Комментарий для Евгения Степанищева:

Добрый день! Благодарю за отличную программу. После танцев с бубном программа заработала на Windows. Я пробовал на Тобольском архиве выбрал документ, программа показала 300 страниц, начала скачивать. После завершения оказалось, что большинство джипегов имеют нулевой размер т. е. только закачались ярлыки. Почему так не могу разобраться. Помогите пожалуйста.
Евгений Степанищев (bolknote.ru) автор № 20
Комментарий для Евгений:

Увы, Windows у меня нет. На самарском архиве, под Mac OS работает всё нормально. Возможно тобольский архив имеет особенности или он отдаёт документы чересчур медленно, например. Не знаю.
Евгений № 21
Добрый день. Подскажите пожалуйста что нужно исправить в программе чтобы по умолчанию был адрес тобольского архива.
Сергей Андреев № 23
Комментарий для Евгения Степанищева:

Спасибо, почти работает.
А как ограничить число потоков? На не сильно быстром инете получается, что часть файлов не скачивается целиком, полагаю, уменьшение нагрузки на канал должно помочь. Многопоточность это, конечно, хорошо, не не столь обязательно — в любом случае получится быстрее, чем просматривать дела напрямую из системы.
Евгений Степанищев (bolknote.ru) автор № 24
Ключа отдельного нет. В 61-й строке можно переменной N присвоить значение 1, будет одна го-рутина (это не поток, хотя в чём-то похоже).
Сергей № 25
Комментарий для Евгения Степанищева:

С хостов 109.233.224.234:83 и 109.233.224.234:81 еще неделю назад хотя бы частично скачивал теперь вообще не качает. Не понятно то ли с серверами что то, то ли защиту придумали.
Григорий № 26
После работ по подключению к госуслугам цгасо все отвалилось. Скачивает только куски 300 на 300 вместо полной страницы.
Евгений Степанищев (bolknote.ru) автор № 30
Комментарий для Сергей Андреев:

Мда, печаль. Когда в следующий раз понадобятся документы, буду смотреть что случилось.
Евгений Степанищев (bolknote.ru) автор № 32

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

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

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

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

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

Возможно после НГ свободный доступ к просмотру будет закрыт, поэтому лучше не оттягивать)
Евгений Степанищев (bolknote.ru) автор № 34
Как это? Разве не государство выделило деньги на оцифровку? С чего теперь доступ к нему будет закрыт, если это на наши налоги делалось?
Аркадий № 35
Не закроют, а введут оплату за доступ:
http://forum.vgd.ru/615/53595/0.htm?a=news_view%26o=

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

2Евгений & Григорий. Видимо, отключили tilesize=25600, теперь только сшивать…
Петр № 36
Ну так я и написал, что свободный доступ закроют, совсем-то его не закроют.
А поподробнее нет ничего, сам только так и слышал.
Григорий № 37

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

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

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

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

Евгений, сначала скачивались квадратики 300*300, а теперь в файлики *.jpg пишется текст об ошибке, что сервер не выполнил запрос. Раньше по PrintScreen экран копировался без звука, теперь же выдается запрос-предупреждение, что использование по согласованию с архивом. После этого все копируется в буфер как обычно. Не связана ли неработоспособность именно с этим?
Евгений Степанищев (bolknote.ru) автор № 40
Видимо защищаются от скачиваний. PrintScreen и нескачивание картинок друг с другом связаны только опосредованно — следствия попыток защитить информацию.
Ку № 41
Комментарий для Евгения Степанищева:

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

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

Спасибо.
Евгений Степанищев (bolknote.ru) автор № 43
Добрый вечер!

Пока времени нет. Если появится, попробую доделать!
Евгений Степанищев (bolknote.ru) автор № 44

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

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

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

Стас № 48
Это обращение ко всем!!!
Я просто не шарю в этих языках программирования!!! А записи срочно нужны, чтобы не ехать в Тобольск и для заказчиков!!!
Поэтому и предлагаю, чтобы кто-то скачал мне эти записи в хорошем качестве, естественно не бесплатно!!!
Кто сможет это сделать пишите на почту (FusionS87117@yandex.ru) или здесь пишите!!!
Воробьев Сергей № 49
Евгений здравствуй! Раньше с самарского архива можно было сохранять изображения (файлы) на компьютер, а сейчас там сделали только просмотр без возможности сохранить. Конечно вкладка «Сохранить картинку как» осталась, но сохраняется только тот фрагмент (часть картинки), на который указывал курсор мыши. Я звонил им туда, они сказали, что сделали так специально и что все теперь платно, они могут прислать документ в электронном виде, но лист стоит 40-50 рублей. Как обойти эту проблему? Как сохранить картинку полностью в высоком качестве (разрешении) ? Помогите пожалуйста, потомучто никто мне так и не смог помочь.
Евгений Степанищев автор № 50
Добрый вечер, Сергей!

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