Разрешите представить плод семи недель очень неспешной разработки: yandex.fotki.2. Как водится, весь код был выброшен и написан заново. В старой версии встречались весьма замечательные и одновременно пугающие вещи: свой велосипед использовался для логирования вместо logging.getLogger, коллекции наследовались от отдельных элементов, XML собирался в магическом XmlTool.
С тех времен мой навык слегка подрос, и вот свет увидела библиотека второй версии. Абстракции стали логичнее, транспортный уровень теперь не переплетается с предметным, ну и логирование выглядит человечнее. В новой версии есть чуть-чуть поддержки FUSE. Кроме того, Фотки с недавнего времени умеют OAuth вместо старого проприетарного алгоритма аутентификации, поэтому пришлось соорудить еще один небольшой велосипед.
FUSE — это помощник для создания виртуальных файловых систем. Его силами можно представить практически что угодно в виде директорий и файлов, вот такой он супермен. Да можно хоть в ящике с носками навигацию сделать (в сочетании с правильным аппаратным решением, разумеется). Так, например, разные умельцы наделали более четырех десятков файловых систем.
Чтобы опробовать новую версию, выполните несколько простых шагов:
- Установите Linux.
- Заведите аккаунт на Яндекс.Фотках.
- Установите биндинг FUSE для Питона: aptitude install python-fuse (способ зависит от вашего дистрибутива).
- Запустите скрипт src/run_first.py. Он предложит вам перейти по ссылке, где вам нужно будет разрешить программе доступ к вашему аккаунту. Разрешите доступ и запомните токен, который вам там дадут.
- Создайте файл src/settings_local.py и поместите в него полученный на предыдущем шаге токен: TOKEN = ‘ваш токен’.
- Еще раз запустите src/run_first.py. Если все получилось, вы увидите короткую информацию о вашем аккаунте.
Готово, теперь можно примонтировать аккаунт в директорию. Запустите src/mount путь_к_директории. Внутри директории альбомы будут представлены поддиректориями, а фотографии — файлами.
По умолчанию для пущей безопасности удаление альбомов и фотографий запрещено, однако его можно разрешить с помощью соответствующей опции монтирования. Смотрите src/mount —help для подробной информации.
Где-то рядом с местом, откуда монтировали, вы увидите лог-файл filesystem.log. Если посыпятся ошибки I/O, можно заглянуть в лог и попытаться понять, что произошло.
В итоге должно получиться примерно такое:
Список альбомов в локальной директории. |
Список фотографий в альбоме. |
Просмотр фотографии, фактически отсутствующей на локальном диске. |
Традиционно буду рад любым отзывам и пожеланиям.
Не работает.
[WARNING] error occured during request try #1: HTTP Error 401: UNAUTHORIZED