Антон Рябов bio photo

Антон Рябов

Не люблю бриться и у меня умный взгляд.

Email Twitter Telegram Github PGP RSS

Flickr API Wrapper

Когда-то давно, на сервисе для фотографов Flickr, выдавали всем по 1ТБ места бесплатно и навсегда (UPD: не навсегда). Я попал под раздачу и с тех пор не пользовался сервисом. Когда перевел блог на Github Pages , задумался на счет изображений, долгое время они, как наследие от вордпресса, хранились на Cloudinary, но затем я решил использовать Flickr для этого.

Cервис оказался удобным для обычного использования, но не совсем подходящим для использования как хранилище, узнав, что есть API, я решил сделать для него обертку, через которую мне было бы удобно загружать, удалять и просматривать изображения, которые будут использоваться в блоге, а так же быстро получать ссылки на оригиналы изображений. У такого подхода, как мне кажется, есть куча плюсов. Быстрый CDN , бесплатное хранение и отдача, возможность получить изображение в разных размерах и даже квадратное.

Первая, наивная реализация была сделана за 30 минут, на простых Ruby скриптах, каждый из которых выполнял одну определенную операцию. Дальнейшим шагом было решено оформить это все в виде веб-приложения на Sinatra .

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




На данный момент поддерживаются следующие функции:

  • Выгрузка в sqlite базу списка фотографий загруженных в облако flickr (выгружаются: ссылка на оригинал, заголовок, ссылка для показа превью)
  • Удаление одной или нескольких фотографий из облакка
  • Загрузка фотографий в облако (пока только по одной за раз)

Из технологий используются:

  • sinatra - не рельсами едиными
  • slim - пишем html шаблоны без %
  • flickraw - собственно гем для работы с flickr API - тыц
  • yaml - держим конфиги в yaml
  • data_mapper - легкий ORM
  • puma - мой выбор веб-сервера для ruby проектов

Из полевых заметок:

  • Menu in generated file в первых версиях, приложение просто генерировало html с изоражениями, а не сохраняло информацию в БД
  • Generate only data and show through slim template была идея генерировать только данные, ну в txt сохранять чтоли
  • Delete one file первая реализация удаления, удаляла все изображения в облаке
  • Updating in background Актуализация данных, об изображениях, которые хранятся в облаке, может быть очень долгой при большом количестве файлов, поэтому она была вынесена в фоновые задачи, за счет потоков Ruby
  • Some js for ajax удобнее когда страница не обновляется при каждом чихе.
  • Selecting from DB таки прикрутил базу данных.
  • Updating DB см. выше.
  • Deleting with DB см. выше.
  • Pretty wiews? - над интерфейсом стоит еще поработать.
  • Upload many files in one time - загрузка файлов пока возможна только по одному и не через ajax, это хочется переделать
  • Rescue errors - некоторые ошибки обрабатываются, но довольно криво, это нужно сделать по человечески

Также, все чаще задумываюсь о написании тестов, а еще нужно сделать нормальную инициализацию приложения, например в случае если нет доступов к Flickr (имеется ввиду, человеко понятный способ получения необходимых для авторизации в API данных). В общем-то есть еще что допиливать, сам проект opensource и лежит - здесь .

UPD: Новая версия

#Ruby #Flickr #API #TechAndDev