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

АИС ЦГАСО (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КБ) Зато теперь просматривать удобно.
9 апреля 2013 22:31

Никита (инкогнито)
14 июня 2013, 09:43

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

Евгений Степанищев (bolknote.ru)
14 июня 2013, 11:01, ответ предназначен Никита

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

Никита (инкогнито)
14 июня 2013, 11:14

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

Евгений Степанищев (bolknote.ru)
14 июня 2013, 16:34, ответ предназначен Никита

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

Евгений (инкогнито)
27 июня 2013, 11:16

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

Евгений Степанищев (bolknote.ru)
27 июня 2013, 11:53, ответ предназначен Евгений

Добрый день!

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

Евгений (инкогнито)
28 июня 2013, 06:16

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

Евгений (инкогнито)
28 июня 2013, 06:33

При компилировании выдает вот такую ошибку:
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)
29 июня 2013, 10:49, ответ предназначен Евгений

Я пользуюсь компилятором, который скачал с golang.org.
При компилировании выдает вот такую ошибку
При компилировании или запуске?

Евгений (инкогнито)
29 июня 2013, 16:45

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

Евгений (инкогнито)
29 июня 2013, 18:04

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

Евгений Степанищев (bolknote.ru)
30 июня 2013, 01:41, ответ предназначен Евгений

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

Евгений (инкогнито)
30 июня 2013, 10:57

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

Евгений Степанищев (bolknote.ru)
30 июня 2013, 13:56, ответ предназначен Евгений

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

Никита (инкогнито)
30 июня 2013, 16:59

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

Евгений Степанищев (bolknote.ru)
30 июня 2013, 18:16, ответ предназначен Никита

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

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

Никита (инкогнито)
30 июня 2013, 22:42

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

Евгений Степанищев (bolknote.ru)
30 июня 2013, 23:21, ответ предназначен Никита

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

Евгений (инкогнито)
9 октября 2013, 08:19, ответ предназначен Евгений Степанищев (bolknote.ru):

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

Евгений Степанищев (bolknote.ru)
9 октября 2013, 09:40, ответ предназначен Евгению

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

Евгений (инкогнито)
18 октября 2013, 07:01

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

Евгений Степанищев (bolknote.ru)
20 октября 2013, 12:46, ответ предназначен Евгению

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

Сергей Андреев (инкогнито)
22 октября 2013, 10:58, ответ предназначен Евгений Степанищев (bolknote.ru):

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

Евгений Степанищев (bolknote.ru)
22 октября 2013, 11:57, ответ предназначен Сергею Андрееву

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

Сергей (инкогнито)
24 октября 2013, 13:57, ответ предназначен Евгений Степанищев (bolknote.ru):

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

Григорий (инкогнито)
7 ноября 2013, 19:15

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

Евгений Степанищев (bolknote.ru)
8 ноября 2013, 23:57, ответ предназначен Григорию

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

Григорий (инкогнито)
10 ноября 2013, 22:54

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

Сергей Андреев (инкогнито)
12 ноября 2013, 10:05

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

Евгений Степанищев (bolknote.ru)
12 ноября 2013, 14:47, ответ предназначен Сергею Андрееву

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

Григорий (инкогнито)
14 ноября 2013, 15:04, ответ предназначен Евгений Степанищев (bolknote.ru):

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

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

Евгений Степанищев (bolknote.ru)
15 ноября 2013, 11:05, ответ предназначен Григорию

Это баг в компиляторе. Возможно вы обновили его недавно. Только зачем вы какие-то странные слова вокруг адреса картинки понаписали?
В коде ссылка идет на Pages/ImageFile.ashx, а сейчас на http://cgaso.regsamarh.ru/Pages/Requests/Requests.aspx может быть и в этом проблема
Всё может быть. Пока не могу посмотреть в чём дело, времени нет.

Петр (инкогнито)
15 ноября 2013, 19:07, ответ предназначен Евгений Степанищев (bolknote.ru):

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

Евгений Степанищев (bolknote.ru)
15 ноября 2013, 22:30, ответ предназначен Петру

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

Аркадий (инкогнито)
16 ноября 2013, 16:06

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

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

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

Петр (инкогнито)
17 ноября 2013, 23:21, ответ предназначен Аркадию

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

Григорий (инкогнито)
18 ноября 2013, 13:25

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

Аркадий (инкогнито)
18 ноября 2013, 23:13

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

Ку (инкогнито)
1 декабря 2013, 02:00, ответ предназначен Евгений Степанищев (bolknote.ru):

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

Евгений Степанищев (bolknote.ru)
1 декабря 2013, 12:28, ответ предназначен Ку

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

Ку (инкогнито)
6 декабря 2013, 00:23, ответ предназначен Евгений Степанищев (bolknote.ru):

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

Андрей (инкогнито)
9 декабря 2013, 22:44

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

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

Спасибо.

Евгений Степанищев (bolknote.ru)
10 декабря 2013, 20:20, ответ предназначен Андрею

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

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

Евгений Степанищев (bolknote.ru)
10 декабря 2013, 20:37, ответ предназначен Ку

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

Евгений Степанищев (bolknote.ru)
19 декабря 2013, 22:45

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

Ваше имя или адрес блога (можно OpenID):

Текст вашего комментария, не HTML:

Кому бы вы хотели ответить (или кликните на его аватару)