English version

Marcin Sochacki (Wanted) Blog, Internet, Technologia

» Wrzucanie zdjęć na Picasa Web Albums z Linuksa

Picasa Web Albums to jeden z wielu serwisów umożliwiających hostowanie zdjęć online i tworzenie galerii na WWW. Mnie osobiście serwis bardzo się podoba; bardziej niż Flickr.

Problemem gnębiącym użytkowników innych systemów niż Windows i Mac OS X był do niedawna brak narzędzi umożliwiających łatwe przesyłanie większej liczby zdjęć na serwer. Kilka zdjęć można oczywiście wrzucić z poziomu interfejsu WWW, ale przy kilkudziesięciu klikanie jest bardzo nieefektywne. Dostępny od czerwca 2006 klient Picasy pod Linuksa (oparty o WINE) nie obsługuje Picasa Web. Szczęśliwie, Google kontynuując tradycję otwartości swoich produktów, udostępniło ostatnio API do Picasa Web Albums.

Aktualizacja: 2007-06-25.

Otwarte API umożliwia napisanie narzędzia pod dowolną platformę i przy użyciu dowolnego języka programowania. Jeśli chodzi o narzędzia Linuksowe, pierwsza znana implementacja została wbudowana do GNOME-owej przeglądarki zdjęć F-Spot. Dla tych, którzy lubią klikane narzędzia i nie mają awersji do Mono, F-Spot jest zapewne najlepszym wyborem.

Ja jednak nie miałem ochoty instalować F-Spota, bo pociągnąłby za sobą od groma zależności:

Depends: libart-2.0-2 (>= 2.3.16), libatk1.0-0 (>= 1.13.1), libbonobo2-0 (>= 2.15.0), libbonoboui2-0 (>= 2.15.1), libc6 (>= 2.5-0ubuntu1), libcairo2 (>= 1.4.2), libexif12, libfontconfig1 (>= 2.4.0), libgconf2-4 (>= 2.13.5), libglib2.0-0 (>= 2.12.9), libgnome-keyring0 (>= 0.7.1), libgnome2-0 (>= 2.14.1), libgnomecanvas2-0 (>= 2.11.1), libgnomeui-0 (>= 2.17.1), libgnomevfs2-0 (>= 1:2.17.90), libgtk2.0-0 (>= 2.10.3), libice6 (>= 1:1.0.0), libjpeg62, liblcms1 (>= 1.08-1), libmono0 (>= 1.2.3), liborbit2 (>= 1:2.14.1), libpango1.0-0 (>= 1.16.1), libpopt0 (>= 1.10), libsm6, libx11-6, libxcursor1 (>> 1.1.2), libxext6, libxfixes3 (>= 1:4.0.1), libxi6, libxinerama1, libxrandr2 (>= 2:1.2.0), libxrender1, mono-runtime (>= 1.1.8.1), libc6 (>= 2.5-0ubuntu1) | libc6.1 (>= 2.5-0ubuntu1), libgconf2.0-cil (>= 2.15.0), libgl1-mesa-glx | libgl1, libglade2.0-cil (>= 2.9.0), libglib2.0-cil (>= 2.9.0), libgnome2.0-cil (>= 2.15.0), libgphoto2-2 (>= 2.3.0), libgphoto2-port0 (>= 2.3.0), libgtk2.0-cil (>= 2.9.0), libmono-corlib2.0-cil (>= 1.2.3), libmono-sharpzip2.84-cil (>= 1.0), libmono-sqlite2.0-cil (>= 1.0), libmono-system-data2.0-cil (>= 1.0), libmono-system-web2.0-cil (>= 1.0), libmono-system2.0-cil (>= 1.2.3), libmono2.0-cil (>= 1.2.3), libndesk-dbus-glib1.0-cil (>= 0.3), libndesk-dbus1.0-cil (>= 0.4)

Szkoda mi miejsca na środowisko Mono, jeśli miałoby być wykorzystywane tylko do jednego programu. Poza tym .NET jest złe :-)

Szukałem czegoś małego, działającego z linii komend. Okazuje się, że rosną szybko biblioteki do gdata API w poszczególnych językach, m.in. implementacja w Pythonie. Przy użyciu tej biblioteki możemy osiągnąć zamierzony cel. Najpierw jednak trzeba napisać prosty skrypt, który będzie z niej korzystał, ponieważ jako taka nie udostępnia ona narzędzi użytkowych, a jedynie klasy programistyczne.

Jako bazę wykorzystałem skrypt autorstwa Jeffa Scuddera z Google, załączony do biblioteki jako unit test. Dopisałem parę linijek do obsługi parametrów w linii komend, dodałem trochę kosmetyki i tak powstał: picasa_upload.py. Nie jestem ekspertem w Pythonie, skrypt nie jest idiotoodporny, ale działa.

Na początek trzeba zainstalować bibliotekę gdata-python-client. Ma ona kilka zależności: moduły ElementTree, httplib, urllib. Akurat w Ubuntu są one wszystkie częścią standardowego pakietu python2.5, ale w innych dystrybucjach być może trzeba będzie doinstalować odpowiednie pakiety. Następnie, rozpakowujemy tarballa gdata i uruchamiamy:
./setup.py install --prefix=/usr/local

Jeśli wszystko pójdzie dobrze, mój skrypt powinien już działać poprawnie. Trzeba tylko w skrypcie ustawić zmienne usernamepassword zgodnie z danymi naszego konta i już można testować. Na przykład w ten sposób wrzucamy wszystkie JPEG-i z bieżącego katalogu do albumu o nazwie „Fotki_z_Wachocka”.
$ ./picasa_upload.py Fotki_z_Wachocka *.jpg

Aktualizacja (2007-06-25):
Ulrik Stervbo zaproponował trochę zmian w skrypcie, m.in. obsługę rekursywności (wrzucanie plików z podkatalogów) i lepszą strukturę kodu. Tak więc podmieniam starą wersję i proponuję ponowne pobranie skryptu.

Ponadto w międzyczasie pojawiły się też alternatywne projekty. Dla porządku zatem przypomnę aktualną listę innych narzędzi, którymi można zarządzać zasobami Google Picasa Web Albums z poziomu Linuksa (i innych systemów uniksowych, np. FreeBSD, Solaris, Mac OS X):

P.S. A Flickr ssie, bo:

2007/06/25 21:35 | komputery/linux/

» Komentarze

Czy jakas obsluga proxy wchodzi tu w gre ?

Kuba | 2007/05/30 10:33


@Kuba:
Aktualnie nie, gdata nie obsługuje w ogóle proxy. Można by to pewnie dopisać, ale niektóre proxy mogą blokować requesty PUT, z jakich korzysta to API.

Pojawiło się w międzyczasie rozszerzenie dla Firefoksa: https://addons.mozilla.org/en-US/firefox/addon/4724 -- może ono obsługuje proxy?

Wanted | 2007/05/31 17:34


Idealne! Wrzuciłem do /usr/bin i nic mi więcej nie trzeba. Dzięki!

trójkąt | 2007/06/03 23:28


Dziala z ustawieniami proxy w Firefoxie, dzieki!

Kuba | 2007/06/06 14:27










Mój blog

Działy

/ (82)
  info/ (5)
  komputery/ (51)
    apple/ (1)
    google/ (15)
    inne/ (4)
    linux/ (3)
    microsoft/ (10)
    spam/ (1)
    wikipedia/ (6)
    www/ (11)
  media/ (5)
    reklama/ (5)
  miejsca/ (5)
    aconcagua/ (1)
    dublin/ (2)
    trojmiasto/ (2)
  to_lubie/ (16)
    film/ (6)
    foto/ (3)
    humor/ (1)
    sport/ (6)

Archiwa


Odnośniki


Strefa bez kolorów

Ta strona jest zgodna z zasadami Łeb 2.0™!