以前作成したスクリプトがエラーで動作しなくなってしまったためそこで変わった版で修正。
しかし、落下は保険が効かなくて1万7千円も修理費がかかってしまった。1万7千といえばGPSロガーがかえる金額...
自分が把握している修正内容
■Tagが 「Latitude」から 「GPS Latitude」というようにGPS関連のタグに「GPS 」の接頭語が付いた
■緯度経度の表示が度分から度分秒になった。
ぱっと見た感じ標準っぽいフォーマットになり使いやすくなったと思います。(プログラムも正規表現で短くなりました)
- import flickrapi
- import re
- api_key = 'XXXXXXXXXXXXXXXXXXXX'
- secret_key = 'YYYYYYYYYYYYYYY'
- my_id = 'ZZZZZZ@N00'
- flickr = flickrapi.FlickrAPI(api_key,secret_key)
- #auth
- (token, frob) = flickr.get_token_part_one(perms='write')
- if not token: raw_input("Press ENTER after you authorized this program")
- flickr.get_token_part_two((token, frob))
- search = flickr.photos_getWithoutGeoData( sort='date-posted-desc',page=2,per_page=45)
- for photo in search.photos[0].photo:
- print photo['id'] + " " + photo['title']
- getexif = flickr.photos_getExif(photo_id = photo['id'] )
- if( getexif.photo):
- try:
- lat = lon = ""
- for exif in getexif.photo[0].exif:
- if( exif['label'] == 'GPS Latitude' ):
- lat = ( exif.raw[0].text )
- if( exif['label'] == 'GPS Longitude' ):
- lon = ( exif.raw[0].text )
- if( exif['label'] == 'GPS Altitude' ):
- alt = ( exif.raw[0].text )
- if( exif['label'] == 'GPS Time (atomic clock)' ):
- time = ( exif.raw[0].text )
- if( exif['label'] == 'Direction of Image' ):
- dire = ( exif.raw[0].text )
- rLat = re.compile("([\d]{2,3}) deg ([\d]{2}).+ ([\d]{2}.[\d]*).*").match(lat)
- rLon = re.compile("([\d]{2,3}) deg ([\d]{2}).+ ([\d]{2}.[\d]*).*").match(lon)
- if( rLat.group() and rLon.group() ):
- lat = int(rLat.group(1) ) + float(rLat.group(2))/60 + float(rLat.group(3))/3600
- lon = int(rLon.group(1) ) + float(rLon.group(2))/60 + float(rLon.group(3))/3600
- print lat
- print lon
- #lon = int(db[0]) +float( mb[0] ) /float(mb[1]) / 60
- print "http://maps.google.co.jp/?ie=UTF8&ll="+str(lat)+","+str(lon)+"&spn=0.001073,0.002006&z=19"
- #flickr.photos_geo_setLocation(photo_id = photo['id'],lat=lat,lon = lon)
- #print a[0]
- except AttributeError:
- #print "error"
- continue
GeoTagが付いている場合は、Flickr形式に変換して、FlickrにGeo情報を付与。
※2009/03/03 修正 APIを利用しなくてもGeoTagを自動で付与するオプションがあります。