ブログ アーカイブ

2008年6月3日火曜日

ブログに複数の画像を簡単に投稿する(その2)

前回の続きです。
画像を一括アップロードして画像のHTMLを生成するPythonスクリプトを作成しました。

#!/usr/bin/python
import getpass
import os
import re
import sys
import gdata.photos.service

# validating arguments
if len(sys.argv) < 3:
print 'usage:%s email photo_dir' % (sys.argv[0])
exit()

email = sys.argv[1]
photo_dir = sys.argv[2]

if not os.path.exists(photo_dir):
print 'Directory "%s" is missing.' % (photo_dir)
exit()

if not os.path.isdir(photo_dir):
print '"%s" is not a directory.' % (photo_dir)
exit()

album_name = os.path.basename(os.path.abspath(photo_dir))
password = getpass.getpass()

# authentication
gd_client = gdata.photos.service.PhotosService()
gd_client.email = email
gd_client.password = password
gd_client.ProgrammaticLogin()

# creating new album
album_entry = gd_client.InsertAlbum(title=album_name, summary='Blogger resources', access='private')
album_url = '/data/feed/api/user/%s/album/%s' % (email, album_entry.name.text)

# adding photos
for photo in os.listdir(photo_dir):
photo_path = '%s/%s' % (photo_dir, photo)
if re.search(r'\.jpe?g', photo_path.lower()) != None:
print 'Uploading "%s"...' % (photo_path)
photo_entry = gd_client.InsertPhotoSimple(album_url, 'Blogger resource', 'Uploaded using the API', photo_path, content_type='image/jpeg')

# generate html
album_feed = gd_client.GetFeed('%s?kind=photo' % (album_url))
for photo in album_feed.entry:
photo_url = photo.GetMediaURL()
print '<span><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="%s"><img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 320px;" src="%s" border="0" alt="" /></a>\n</span>' % (photo_url, photo_url)

スクリプトの引数はGmailアドレスとアップロードする画像が入っているディレクトリの2つです。
パスワードはスクリプト実行後に標準入力から読み込みます。
Googleの認証が成功したら、引数のディレクトリの名称でPicasaウェブアルバムに新しいアルバムを作成します。
そしてそのディレクトリにあるJPEGファイルをすべてアップロードします。
JPEGファイルかどうかは拡張子で判定しています。
アップロードが終了したらそれらの画像をBloggerに貼り付けるためのHTMLを標準出力に出力します。

0 件のコメント: