日暮途遠(Linux)

Just another WordPress.com site

Picasaウェブアルバムに画像・写真ファイルをアップロードするPythonスクリプト

leave a comment »

#!/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コマンドが使える環境である必要はあります。

Written by 廣野秀樹

2013年10月12日 @ 11:28 午前

カテゴリー: スクリプト

Tagged with ,

コメントを残す