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

Изучаю тут самарский электронный архив, который сделан в «Эларе». Насколько я понял, продукт называется АИС ЦГАСО. Убиваю сразу двух зайцев — разбираюсь как всё работает и пытаюсь найти нужные мне документы по родственникам.
Ребята из «Элара» молодцы, делают очень нужное дело — оцифровывают бумажные архивы, это невероятный труд, но, к сожалению, интерфейс просмотра документов оставляет желать лучшего, он мне сжёг массу нервов. Решил просто выкачать нужные мне документы на компьютер и дело с концом. Написал специальную программу для скачивания документов из АИС ЦГАСО, на Гугл Гоу. Получилось довольно компактно.
Основная фишка — паралельное скачивание документов в несколько потоков. Не уверен, что это действительно работает (я не до конца понимаю как Гоу переключает свои горутины), но в теории должно. Добавлено: «полевые испытания» подтвердили, что документы действительно скачиваются параллельно. Удалось сделать крайне просто:
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 горутин.
Пользоваться программой просто (если
go run cgodownloader.go скачанный-файл.htmlПрограмма обработает документ, покажет сколько страниц найдено и начнёт их скачивать в виде больших джпегов в ту же папку, показывая их имена. У меня на большом документе (около 1,5 тысяч страниц) заняло прилично времени — час с лишним.

Зато теперь просматривать удобно.
Комментарии 54
А можно реализовать чтобы скачивал, только определенный диапазон листов. Например с 100 по 200.
Выучить язык программирования Гоу ( http://golang.org ) и запрограммировать.
Взять компилятор языка Гоу, скомпилировать программу, запустить.
При компилировании выдает вот такую ошибку:
-dir=".": directory to output.e-archive
-host="cgaso.regsamarh.ru": address of
Подскажите в чем дело.
Комментарий для Евгений:
Я пользуюсь компилятором, который скачал с golang.org.
При компилировании или запуске?
Доброй ночи! Под какую операционную систему? Если под Виндоуз, то у меня её просто нет.
Линукса у меня тоже нет. Вообще, компиляция программ на Гоу это одна строка — go build имяпрограммы
А вы не можете сделать, чтобы можно скачивать только определенный диапазон страниц или отдельные страницы?
Здравствуйте!
Я могу, но не буду, нет пока времени на это.
Всё может быть.
Добрый день! Благодарю за отличную программу. После танцев с бубном программа заработала на Windows. Я пробовал на Тобольском архиве выбрал документ, программа показала 300 страниц, начала скачивать. После завершения оказалось, что большинство джипегов имеют нулевой размер т. е. только закачались ярлыки. Почему так не могу разобраться. Помогите пожалуйста.
Увы, Windows у меня нет. На самарском архиве, под Mac OS работает всё нормально. Возможно тобольский архив имеет особенности или он отдаёт документы чересчур медленно, например. Не знаю.
Добрый день! Не подскажу.
Спасибо, почти работает.
А как ограничить число потоков? На не сильно быстром инете получается, что часть файлов не скачивается целиком, полагаю, уменьшение нагрузки на канал должно помочь. Многопоточность это, конечно, хорошо, не не столь обязательно — в любом случае получится быстрее, чем просматривать дела напрямую из системы.
С хостов 109.233.224.234:83 и 109.233.224.234:81 еще неделю назад хотя бы частично скачивал теперь вообще не качает. Не понятно то ли с серверами что то, то ли защиту придумали.
Мда, печаль. Когда в следующий раз понадобятся документы, буду смотреть что случилось.
Здравствуйте, сегодня вообще выдет такую ошибку…
[URL= http://radikal.ru/fp/002e6a83c5bb4c5ea7c36 … %5B/URL%5D
В коде ссылка идет на Pages/ImageFile.ashx, а сейчас на http://cgaso.regsamarh.ru/Pages/Requests/R … ts.aspx…. может быть и в этом проблема
Комментарий для Григорий:
какие-то странные слова вокруг адреса картинки понаписали?
Это баг в компиляторе. Возможно вы обновили его недавно. Только зачем вы
Всё может быть. Пока не могу посмотреть в чём дело, времени нет.
Возможно после НГ свободный доступ к просмотру будет закрыт, поэтому лучше не оттягивать)
http://forum.vgd.ru/615/53595/0.htm?a=news_view%26o=
2Петр: а откуда ветер дует таких конкретных предположений, можно поподробнее?
2Евгений & Григорий. Видимо, отключили tilesize=25600, теперь только сшивать…
А поподробнее нет ничего, сам только так и слышал.
Чушь! Про самарский архив:
*единый портал государсвенных услуг
Евгений, сначала скачивались квадратики 300*300, а теперь в файлики *.jpg пишется текст об ошибке, что сервер не выполнил запрос. Раньше по PrintScreen экран копировался без звука, теперь же выдается
Опосредованно или при попытке получить картинку выдается запрос, на который программулина не может дать ответ, а человек может?
ЭЛАР обновил ПО и программка само собой не работает. Есть ли возможность сделать ее рабочей или все, лавочка закрыта?
Спасибо.
Пока времени нет. Если появится, попробую доделать!
Комментарий для Ку:
Нет, просто данныепо-другому лежат.
Я просто не шарю в этих языках программирования!!! А записи срочно нужны, чтобы не ехать в Тобольск и для заказчиков!!!
Поэтому и предлагаю, чтобы
Кто сможет это сделать пишите на почту (FusionS87117@yandex.ru) или здесь пишите!!!
В самарском архиве у меня уже интересов, поэтому помочь не могу.