Представитель Шуры Люберецкого в ЖЖ (brat_luber) wrote,
Представитель Шуры Люберецкого в ЖЖ
brat_luber

Category:

Скачиваем книги с ResLib.com

Понадобилась мне сегодня одна книжка по математике. Но вот беда – ее не оказалось в той библиотеке научно-технической литературы, которую на 35 дисках предлагают скачать на РуТрекере. Лет пять назад я в таких случаях пользовался “Электронной библиотекой мехмата МГУ”, благо в alma mater на 15 этаже висела бумажка “сайт lib.mexmat.ru, логин mexmat, пароль mexmat”. Но что знают двое – знает и свинья, поэтому эти логин с паролем распространились по всему интернету, попали в лапы правообладателей и те потребовали прикрыть лавочку, написав чуть ли не Лупанову (тогдашний декан мехмата) с Садовничим (а это ректор МГУ). Библиотека, естественно, закрыла доступ извне полностью, оставив его только для сети мехмата.

Тем не менее, через несколько лет от ЭБММ отпочковалась новая электробиблиотека ResLib.com – те же книги, но с доступом через Web и ограничением – не более 25 страниц за раз. На мое счастье, нужная мне книжка в ней нашлась. Но вот предложение читать по странице в полчаса, да еще и через неудобный Web-интерфейс мне показалось оскорбительным.

Я решил попробовать скачать эту книжку – есть у меня еще нехорошая привычка не доверять веб-сервисам. Мало ли – через неделю все закроется? Так что, посмотрев на код картинок, которые показываются при просмотре книг в этой библиотеке, я решил запустить свой любимый ReGet и воспользоваться в нем прекрасной опцией “создать нумерованный список”. URL картинок выглядел так:

http://reslib.com/img2.php?b=635101403&s=l&p=1

Параметры обозначают следующее: b – идентификатор книги, s – размер картинки, нам нужен l, то есть large, p – номер страницы (видимо, “выдираются” они из djvu-файла). Запускаем ReGet и создаем нумерованный список – это замечательная фича, разработчиками упоминаемая, как “уникальная”.

reget-spisok

Запускаем закачки и… в директории, куда мы хотим скачать файлы, появляется файл img2.php (правда, Windows Explorer распознает в его содержимом png-картинку), а Регет бомбардирует нас несколькими десятками сообщений “файл уже существует, переименовать?”. Непорядок. И оказывается, что в одном из лучших download-менеджеров нет никакого способа дать свои названия куче файлов, закачиваемых автоматически.

Правда, я все же обнаружил в ReGet так называемые “макросы”, которые можно использовать для относительно массовых переименований закачек. Оказывается, что если объденить все файлы этой книжки в одну группу, то можно уже в группе задать правило, применяемое к тем файлам, для которых файл с тем же именем уже существует. Там есть выбор из нескольких настроек – “Спросить”, “Переписать”, “Переименовать” – и в случае переименования можно воспользоваться макросами. Обращу внимание почтенной публики на то, что в справке ReGet список макросов немного шире – в частности, имеется макрос Param, выдирающий из GET-запроса значение параметра с заданным именем. Как раз то, что надо – давайте назовем наши файлы page1.png, page2.png и так далее! Идем в свойства группы и ставим там такие настройки:

reget-makros

Теперь снова запускаем закачку, скачиваем пару десятков файлов уже с правильными названиями и на дальнейшие запросы получаем от сервера отлуп – “Ошибка 503, приходите позже”. Ну я думаю, вы поняли? Сервер пытается “забанить” нас по IP-адресу. Меняем айпишник (кто пользуется proxy, кто “пересовывает” соединение с провайдером) и продолжаем. Итого – за 15 минут скачиваем книжку целиком.

Зачем я это рассказываю? Разумеется, не с целью ограбить онлайн-библиотеку – как вы видите, это может сделать каждый. Я хочу продемонстрировать, что даже в лучших программах “из мира Windows” какие-нибудь не очень тривиальные действия сопряжены с возникающими “из ниоткуда” трудностями. Windows-стиль не предполагает работу с командной строкой, а уж тем более – написание сложных скриптов на командном языке. А я более чем уверен, что на любом языке какого-нибудь Unix shell (или даже Windows Power Shell, или даже в обычном cmd.exe) написание скрипта, скачивающего ту же кучу файлов по маске, займет те же 15 минут, что я изучал документацию ReGet и придумывал способы обхода непонятно откуда возникших ограничений.

Да, пользоваться wget намного (или немного :) ) сложнее, чем ReGet или Download Master – но первый можно использовать в каких-то своих целях, а “качалки” из Windows – только в рамках того, что предусмотрели их авторы.

Запись опубликована в блоге Шуры Люберецкого. Вы можете оставлять свои комментарии там, используя свое имя пользователя из ЖЖ (вход по OpenID).

Tags: книги, программирование
Subscribe

  • Про кофе

    Регулярно в фейсбуке встречаю ужасы от путешествующих по Италии, которые то ли не в то время суток заказали капуччино, то ли неправильно поставили…

  • А как это называется?

    А скажите, как называется то чувство, когда ты сначала хуесосишь чувака в твиторе за тупость, а потом видишь его юзерпик в корпоративном чате? И…

  • Электронный документооборот

    Пока тут Исавнин с Артамоновым кидают друг в друга какахами на хабре из-за дистанционного электронного голосования — реальные электронные…

Comments for this post were disabled by the author