1ac3124
05-10-2008, 11:52
Когда количество прослушиваемых подкастов перевалило за 3 стало достаточно сложно следить за ними всеми. Пользоваться агрегаторами монстрами типа iTunes нет желания, да и проблемы с ними тоже возникают: то в забуду тыкнуть кнопочку обновить/скачать, то времени не хватает дождаться скачивания. В общем проблема автоматической доставки подкаст-контента поближе ко мне видна на лицо. Решение проблемы принялся искать кардинально, но удобное. В итоге на был найден питоновский скрипт для автоматического скачивания подкастов из ленты Google Reader. Дело осталось за малым: запустить всё это на роутере.
Список подкастерских лент храним Google Reader (http://www.google.ru/reader/). Ленты помечены своим тегом, и аккуратно лежат в своей папке. В качестве основы скрипта взята библиотеку pyrfeed (http://code.google.com/p/pyrfeed/), в которой реализован полезный класс GoogleReader.
1. Сначала ставим Python (на время написания статьи текущая версия в репозитории 2.5):
ipkg install python
ipkg install py25-elementtree
ipkg install py25-cheetah
ipkg install py25-cherrypy
2. Распаковываем pyrfeed-0.5.1.rar (http://1ac3124.tzo.org/pyrfeed-0.5.1.rar) в /opt/lib/python2.5
3. Содержимое PodcastDownloadTool.rar (http://1ac3124.tzo.org/PodcastDownloadTool.rar) распаковываем в любое удобное вам место, например /opt/urs/bin/
4. Настраиваем скрипт PodcastDownloadTool.py под себя:
downloadDir – каталог, куда будут скачиваться подкасты
logFile – название лог файла
tag – имя тега/папки в Google Reader, в которой будут просматриваться ленты
login и password – логин и пароль в Google Reader
5. Проверяем работоспособность:
python /opt/usr/bin/PodcastDownloadTool.py
В ответ мы должны получить как минимум "Login OK", если есть непрочитанные ленты подкастов, то начнётся их скачивание.
6. Осталось заставить выполнять роутер запускать скрипт раз в час/день кому как удобно. Создаем в /opt/etc/cron.hourly (или /opt/etc/cron.daily) скрипт (например PodcastDownloadTool.sh) следующего содержания:
#!/bin/sh
python /opt/usr/bin/PodcastDownloadTool.py >> /opt/var/log/PodcastDownloadTool.log 2>&1
На этом собственно всё, осталось указать на маленькие недостатки:
Не поддерживается докачка. В случае сбоя RSS-запись не будет помечена как прочитанная. При следующем запуске скрипта файл будет выкачан заново.
Отсюда следующий момент – при следующем запуске скрипта, ошибочные записи (например, в записи нет ссылки на файл для скачивания) будут повторно обрабатываться. Можно бы их метить специальным тегом и пропускать в дальнейшем. Но меня устраивает последующий ручной просмотр ленты на предмет не прочитанных записей.
Хранение конфигурации – логин и пароль в открытом виде. Логин еще не так страшно, а вот пароль (если у кого-то паранойя, то можно ради этого завести пустого пользователя в GoogleReader)
Мануал написан на основе статьи из блога Yustos (http://yustos.ru/blog/podcast-downloading-with-python-and-google-reader).
Список подкастерских лент храним Google Reader (http://www.google.ru/reader/). Ленты помечены своим тегом, и аккуратно лежат в своей папке. В качестве основы скрипта взята библиотеку pyrfeed (http://code.google.com/p/pyrfeed/), в которой реализован полезный класс GoogleReader.
1. Сначала ставим Python (на время написания статьи текущая версия в репозитории 2.5):
ipkg install python
ipkg install py25-elementtree
ipkg install py25-cheetah
ipkg install py25-cherrypy
2. Распаковываем pyrfeed-0.5.1.rar (http://1ac3124.tzo.org/pyrfeed-0.5.1.rar) в /opt/lib/python2.5
3. Содержимое PodcastDownloadTool.rar (http://1ac3124.tzo.org/PodcastDownloadTool.rar) распаковываем в любое удобное вам место, например /opt/urs/bin/
4. Настраиваем скрипт PodcastDownloadTool.py под себя:
downloadDir – каталог, куда будут скачиваться подкасты
logFile – название лог файла
tag – имя тега/папки в Google Reader, в которой будут просматриваться ленты
login и password – логин и пароль в Google Reader
5. Проверяем работоспособность:
python /opt/usr/bin/PodcastDownloadTool.py
В ответ мы должны получить как минимум "Login OK", если есть непрочитанные ленты подкастов, то начнётся их скачивание.
6. Осталось заставить выполнять роутер запускать скрипт раз в час/день кому как удобно. Создаем в /opt/etc/cron.hourly (или /opt/etc/cron.daily) скрипт (например PodcastDownloadTool.sh) следующего содержания:
#!/bin/sh
python /opt/usr/bin/PodcastDownloadTool.py >> /opt/var/log/PodcastDownloadTool.log 2>&1
На этом собственно всё, осталось указать на маленькие недостатки:
Не поддерживается докачка. В случае сбоя RSS-запись не будет помечена как прочитанная. При следующем запуске скрипта файл будет выкачан заново.
Отсюда следующий момент – при следующем запуске скрипта, ошибочные записи (например, в записи нет ссылки на файл для скачивания) будут повторно обрабатываться. Можно бы их метить специальным тегом и пропускать в дальнейшем. Но меня устраивает последующий ручной просмотр ленты на предмет не прочитанных записей.
Хранение конфигурации – логин и пароль в открытом виде. Логин еще не так страшно, а вот пароль (если у кого-то паранойя, то можно ради этого завести пустого пользователя в GoogleReader)
Мануал написан на основе статьи из блога Yustos (http://yustos.ru/blog/podcast-downloading-with-python-and-google-reader).