flikr に大量ファイルをupload2012/02/24 07:09

flickrに大量画像ファイルを転送
フリーでflickrのページ配られているuploadは 1000個のファイルをuploadできなかったので pythonで
googleでググってパクッた。python2.7で動いた。3000個のファイルを扱った。

必要な物

 pythonのPackage flickrapi

 flickrのAPI KEY <−取得は全て英語でflickr servicesから取得
API_KEY、API_SECRETがある

from __future__ import with_statement
import sys
import os
import threading
import time
import re
import flickrapi
API_KEY = '*********************************'
API_SECRET = '**********************''

PAT_EXT = re.compile(r'\.(jpg|jpeg|avi)', re.I)
pict_dir = '.'

class UploadWorker(threading.Thread):
"""
"""
def __init__(self, flickr, files, lock, name=None, args=(), kwargs={}):
"""コンストラクタ"""
super(UploadWorker, self).__init__()
self.flickr = flickr
self.files = files
self.lock = lock

def _pop_file(self):
"""
"""
with self.lock:
try:
f = self.files.pop()
except IndexError:
f = None
return f

def run(self):
"""
"""
while True:
f = self._pop_file()
if f is None:
break

print "[%s] Upload start: %s" % (self.getName(), f)
try:
self.flickr.upload(os.path.join(pict_dir, f), is_public=0, is_family=0, is_friend=0,tags="****")
except:
print "[%s] Failed... Skip" % self.getName()
else:
print "[%s] OK: %s" % (self.getName(), f)


def init_flickr():
"""Initialize and authenticate FlickrAPI"""
flickr = flickrapi.FlickrAPI(API_KEY, API_SECRET)
(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))
return flickr

def main():
"""
"""
# 画像ディレクトリ設定
global pict_dir
if len(sys.argv) > 1:
pict_dir = sys.argv[1]

# 画像ファイル名取得
files = [f for f in os.listdir(pict_dir) if not f.startswith('.') and PAT_EXT.search(f)]
if len(files) == 0:
print "No files in the directory."
sys.exit()
print "File num: %s" % len(files)

# Flickr API 初期化 & 認証
flickr = init_flickr()

# アップロード
lock = threading.Lock()
workers = []
for i in xrange(5):
w = UploadWorker(flickr, files, lock)
workers.append(w)
w.start()

# 処理終了待ち
for w in workers:
w.join()
print 'Done.'

def _test():
import doctest
doctest.testmod()

if __name__ == '__main__':
main()

flickrがみえなくなった2012/02/24 07:50

ww.flickr.com canonical name = geoycpi-uno-deluxe.gycpi.b.yahoodns.net.
geoycpi-uno-deluxe.gycpi.b.yahoodns.net canonical name = geoycpi-uno.gycpi.b.yahoodns.net.
geoycpi-uno.gycpi.b.yahoodns.net canonical name = fo-jpx-ycpi-uno.gycpi.b.yahoodns.net.
fo-jpx-ycpi-uno.gycpi.b.yahoodns.net canonical name = jpx-ycpi-uno.gycpi.b.yahoodns.net.
Name: jpx-ycpi-uno.gycpi.b.yahoodns.net
Address: 183.177.81.75
Name: jpx-ycpi-uno.gycpi.b.yahoodns.net
Address: 183.177.81.74

%traceroute 183.177.81.74


traceroute to 183.177.81.74 (183.177.81.74), 64 hops max, 52 byte packets
1 10.0.1.1 (10.0.1.1) 1.115 ms 0.765 ms 0.714 ms
2 192.168.1.1 (192.168.1.1) 1.190 ms 1.350 ms 1.012 ms
3 tkynib4.asahi-net.or.jp (202.224.37.111) 9.675 ms 5.207 ms 4.042 ms
4 tkynira-ge0.asahi-net.or.jp (202.224.37.126) 3.545 ms 3.971 ms 3.061 ms
5 tkybi4-v15.asahi-net.or.jp (202.224.37.81) 4.140 ms 4.937 ms 4.726 ms
6 kddni1.asahi-net.or.jp (202.224.32.50) 9.718 ms 7.791 ms 7.399 ms
7 10310.tyo.equinix.com (203.190.230.15) 7.390 ms 6.901 ms 6.901 ms
8 ge-0-0-0.pat1.jpx.yahoo.com (203.84.211.25) 7.983 ms 17.570 ms 16.086 ms
9 * * *
10 * * *
11 * * *

M4のファームを0309に上げた2012/02/24 13:15

M4 SSD ファーム309

M4 SSDに改造してしていたmacBookProのSSDのファームをやっと 1から0309に上げた