Flickr с некоторых пор даёт под хранение фото 1Тб данных. Но загружать десятки тысяч домашней фотоколлекции через браузер из под Linux — это форменное издевательство. Однако, народ пытается как-то автоматизировать процесс. Одним из таких решений является flickrfs.
https://sites.google.com/site/manishrjain/flickrfs
Есть как сорцы, так и готовые пакеты под популярные дистрибутивы, включая текущие версии Ubuntu. Обещана интересная функциональность — монтирование своего аккаунта flickr через fuse в локальной системе, выгрузка и загрузка фото, работа с тегами, упорядочивание фотографий и т.п.
Но без доработки напильником, увы, никак не обойтись.
Первое, на что наткнулся — полное отсутствие любых действий и ошибок при штатном запуске. То есть настраиваем, привязываем к Flickr-аккаунту, автоматизируем, монтируем на выбранный каталог и… всё. Тишина. Любая попытка обратиться к каталогу вызывает зависание обратившегося процесса. Пока не убьёшь процесс flickrfs (он честно стартует) и не отмонтируешь каталог.
Через некоторое время изысканий удалось обнаружить
первый шаг на пути исправлений. Нужно ввести небольшую задержку в цикле запуска тредов:
--- flickrfs.py.orig 2013-08-11 00:06:27.461206731 +0300
+++ flickrfs.py 2013-08-11 02:01:51.981314517 +0300
@@ -356,6 +356,7 @@
curdir = "/sets/" + a['id']
set_id = a['id']
background(self.__sync_set_in_background, set_id, curdir)
+ time.sleep(0.7)
log.info('sync_sets_thread finished')
def sync_stream_thread(self):
После этого в логах пошли совершенно понятные
UnicodeDecodeError: 'ascii' codec can't decode byte 0xc3 in position 10: ordinal not in range(128)
Отлично! Дальше — дело техники. Вписываем в начало /usr/bin/flickrfs:
...
# -*- coding: utf-8 -*-
...
import sys
reload(sys)
sys.setdefaultencoding('utf-8')
И готово! Всё монтируется, всё загружается. Правда, как мне хочется, оно всё ещё у меня не работает, но это другая история…