Чиним flickrfs

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')

И готово! Всё монтируется, всё загружается. Правда, как мне хочется, оно всё ещё у меня не работает, но это другая история…

Post a Comment

Your email is kept private. Required fields are marked *