Пакетная загрузка файлов с помощью Zennoposter

Запланировав поездку на выходные всей семьей подумал о том, что песни из детских мультфильмов будут очень приятны в дороге. Ну разве плохо петь хором нечто вроде:

? 🙂 Сказано — сделано!
Интересным ресурсом для донорства песен в мой IPod оказался сайт http://savok.name/, посвященный пройденным этапам истории. Выбор песен неплох, но возможности пакетной закачки на сайте — не предусмотрено 🙁

На помощь приходит Zennoposter — я писал о нем ранее, и все же повторюсь — совершенно уникальная программа, позволяющая автоматизировать все происходящее в браузере. Итак, задача проста:
1. Находим ссылку на файл
2. Активируем ее
3. Сохраняем файл на компьютер
4. Переходим к первому пункту

Посмотрев структуру сохранения файлов на указанном сайте видно, что она использует статический параметр: http://savok.name/uploads/music/, а вот имя файла имеет численное значение. Учитывая, что наша задача — сохранение всей базы песен — это только облегчает нашу задачу.

Схема получившегося проекта представлена ниже. Как видите, в самом начале проекта мы устанавливаем начальное значение переменной, отвечающей за рост нумерации запрашиваемого файла. Благодаря этому мы сможем скачать всю базу с первого файла.
Важно: я не добавлял проверку истинности существования ссылки, ибо лениво. Потому в случае возникновения ситуации с мертвой ссылкой программа будет сохранять на вашем компьютере пустой файл.

sound-downloader-1-1

Итак, рассмотрим общую схему работы загрузчика подробнее:
1. Устанавливаем начальное значение переменной.
2. Их созданного списка, куда мы поместили статическое значение ссылки http://savok.name/uploads/music/ получаем эту самую ссылку в виде переменной.
3. Указываем адрес на диске, куда будем сохранять скачанные файлы
4. Формируем GET-запрос в виде: {-Variable.file-}{-Variable.count-}.mp3, где {-Variable.file-} — переменная, имеющая значение http://savok.name/uploads/music/, а {-Variable.count-} — значение счетчика, mp3 — расширение файла, которое не меняется.
5. Выдается уведомление о сохранении файла
6. Увеличиваем значение счетчика на 1.
7. Возвращаемся на пункт 1.

Таким образом наша программка обращается к ссылке http://savok.name/uploads/music/1.mp3, сохраняет ее, увеличивает значение счетчика на единицу, после чего сохраняет второй файл и далее-далее-далее. На самом деле схема достаточно гибкая. Ничто не мешает нам парсить оригинальное имя файла, и грузить его 🙂

На этом все.
Скачать сам проект можно по ссылке 😉

Спасибо за внимание! В случае возникновения вопросов — пишите: oleksiy@lavrynenko.com