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 username
i password 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):
- picasa_upload.py – mój prosty skrypt,
- F-Spot – graficzny menedżer zdjęć, wymaga Mono runtime,
- Firefox Universal Uploader (fireuploader) – wtyczka do Firefoksa, wg testów czytelnika bloga działa z proxy w przeciwieństwie do pozostałych programów,
- upload2picasa – rozbudowany skrypt w Pythonie korzystający podobnie jak mój z biblioteki GData, autor: Artyom 'logus' Pervukhin,
- PicasaUploader – graficzny uploader w Pythonie korzystający z bibliotek GData i PyGTK, autor: Walker,
- digikam_picasa.py – skrypt współpracujący z bazą digiKam, autor: Svilen Ivanov,
- Picasaput – program w Javie korzystający z biblioteki GData, autor: xacid(?).
P.S. A Flickr ssie, bo:
- jak dla mnie działa wolno,
- domyślny rozmiar zdjęć jest za mały,
- slideshow wymaga Flasha.

