Categories

Calendar

October 2017
M T W T F S S
« Jun    
 1
2345678
9101112131415
16171819202122
23242526272829
3031  

Poor Man’s Picasaweb Photo Uploading Script

虽然不太常用网络相册,但是有时候也会把照片传到 Picasaweb 上作为一个备份。如果安装了 Picasa 的话可以很方便地上传,另外,也有为 IE 做的 ActiveX 控件可以方便地批量上传照片。但是 Linux 下地 Picasa 据说是用 wine 模拟的,不想用,而浏览器也没有 ActiveX 可以用,手工一个一个地上传颇有一些麻烦。后来发现 Google 其实提供了它的各种服务的 API 的 Python binding 可以比较方便地使用,这样就可以弄一个脚本来上传了。

这个 API binding 叫做 gdata-python-client ,在 Arch Linux 下有一个 python-gdata 的包可以安装。它包含了诸如电子文档、电子表格、地图、YouTube、笔记本等许多服务的 API ,当然,也有 Picasaweb 的 API 。

按照它的文档,可以直接使用用户名密码的方式登录,也可以重定向到 Google 获取一个认证 Token 的方式,登录之后就可以对相册做一系列的操作了,比如列出所有相册、列出相册里的照片、查看照片和相册的元信息等,当然,还可以对相册做一系列的修改,包括新建相册和上传照片等。

有了这些工具,就可以很容易打造出批量上传照片的脚本了,比如下面这个 Poor Man’s Uploading Script:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
#!/usr/bin/python
 
import gdata.photos.service
import getpass
import socket
import glob
import sys
import os
 
if len(sys.argv) < 3:
    print 'Usage:'
    print '%s album_id pattern' % sys.argv[0]
    sys.exit(1)
 
album_id = sys.argv[1]
pattern  = os.path.expanduser(sys.argv[2])
username = raw_input('username: ') 
 
gd_client = gdata.photos.service.PhotosService()
gd_client.email = username + '@gmail.com'
gd_client.password = getpass.getpass()
gd_client.source = socket.gethostname()
gd_client.ProgrammaticLogin()
 
album_url = '/data/feed/api/user/%s/albumid/%s' % (username, album_id)
for f in glob.glob(pattern):
    print 'Uploading %s...' % f
    gd_client.InsertPhotoSimple(album_url, os.path.split(f)[-1],
                                '', f)

之所以叫做是 Poor Man’s ,是因为实在是非常简陋,基本上就是 Google 的 API 的一层非常浅的包装(当然 Google 的 API 本身的封装好像也是比较“裸”的),原本我想至少做一个可以选择已有的相册或者创建新相册的,但是如果用命令行的那种提问、输入、回车的方式的话,不仅写起来麻烦,而且恐怕写好了我自己都不会想用;另一个选项就是做 GUI ,比如用 wxPython 或者 PyGTK 一类的东西,但是我已经好久好久没有做过 GUI 的东西了,现在总是觉得做 GUI 还是 Web 更方便的;然而如果再做一个本地的 Web 界面的话,肯定一做起来就想做得更加完善一些,比如元信息的编辑之类的加进去,到头来必然是重新发明轮子,因为 Picasaweb 本身的 Web 界面已经做得相当出色了。如果真的想要一个方便的本地界面的话,可以装上 Gnome 的一堆东西和 Mono 的另一堆东西用 F-Spot ,据说是可以支持上传到 picasa 的。

所以我最后就直接用了这么一个简陋的脚本:它要完成的任务就是把数据从本地转移到 Picasaweb 上,剩下的整理、元信息的编辑等全都直接回到 Picasaweb 的 web 页面上完成。使用起来略有点麻烦,在 web 上新建相册,从相册的 RSS 链接可以看到它的 Album ID ,是一串很长的数字,得到 ID 后就可以用脚本批量上传照片了。总是比在网页上一个一个地传要方便许多的。 :)

5 comments to Poor Man’s Picasaweb Photo Uploading Script

Leave a Reply

 

 

 

You can use these HTML tags

<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>