Picasaウェブアルバムに画像・写真ファイルをアップロードするPythonスクリプト
#!/usr/bin/python # coding: utf-8 import gdata.photos.service import gdata.media import gdata.geo import sys import os import re gd_client = gdata.photos.service.PhotosService() gd_client.email = "googleのアカウント名" gd_client.password = "パスワード" gd_client.source = 'exampleCo-exampleApp-1' gd_client.ProgrammaticLogin() username = 'PicasaのアカウントのID(数値)' param = sys.argv filename = param[1] argc = len(param) if (argc != 1): if os.path.exists("./album_id.txt"): f = open("./album_id.txt", "r") album_id = f.read() print album_id else: """ print "アルバムが存在しないです。ディレクトリ名でアルバムを作成します。" p = re.compile('.*/') pwd = os.getcwd() album_name = p.sub("",pwd) """ p = re.compile('/') print "アルバムを作成します。アルバム名を入力してください。/は全角の/に自動変換されます。" album_name = raw_input() album_name = p.sub("/",album_name) album = gd_client.InsertAlbum(title=album_name, summary=album_name) f = open("./album_id.txt", "w") f.write(album.gphoto_id.text) album_id = album.gphoto_id.text print 'アルバムを作成しました→ title: %s, number of photos: %s, id: %s' % (album.title.text, album.numphotos.text, album.gphoto_id.text) else: print "Picasaウェブアルバムにアップロードするファイル名を引数に指定してください。" sys.exit(2) album_url = '/data/feed/api/user/%s/albumid/%s' % (username, album_id) photo = gd_client.InsertPhotoSimple(album_url, filename, filename, filename, content_type='image/jpeg') print filename photos = gd_client.GetFeed( '/data/feed/api/user/%s/albumid/%s?kind=photo' % ( username, album_id)) listfile = "./album_photos_list.txt" if os.path.exists(listfile): os.remove(listfile) f = open(listfile, "a") for photo in photos.entry: f.write("%s\n" % photo.title.text)
アップロードしたいファイルのあるカレントディレクトリでの操作、作業が前提です。複数のファイルを一度にアップロードするときは次のようにやります。
for f in `ls *.jpg`; do h-picasa-album-post.py $f; sleep 3; done
上記の場合はjpgという拡張子のファイルが対象になります。まだ一度も実行されていない場合はアルバム名の指定を促されます。Picasaウェブアルバムにアルバムを作成するとともにアルバムIDを取得し、album_id.txtというファイルに保存しています。次回以降はそのファイルからアルバムIDを読み出してアルバムへのアップロードに使うようにしています。
スクリプトの終了時にはalbum_photos_list.txtというファイルの存在を確認して、存在すればそれを削除した上で、Picasaウェブアルバムから取得した登録済みのファイルの一覧をalbum_photos_list.txtに書き込むようにしています。つまりこれで登録済みかまだかと確認するようにしています。
ファイル名に半角のスペースが混じっていたりするとスクリプトでの投稿に失敗することがあります。現在ディレクトリにあるjpgファイルと登録済みのファイルの相違を確認するには、ls *.jpg > aなどと一時ファイルを作成し、
diff album_photos_list.txt a
とすることで確認することもできます。Linuxなどdiffコマンドが使える環境である必要はあります。
コメントを残す