タイトルの通り、Twitterの検索APIを利用して、特定のキーワードの画像をダウンロードするためのスクリプトになります。
https://github.com/Code-Hex/twippai 参考にしたのはここ。
実行環境 OS:OX X EI Capitan(10.11.5) Python:2.7.10
標準ライブラリの他に、こららのインストールする必要があります。
- requests
- requests_oauthlib
#!/usr/bin/env/python # coding: utf-8 import os import json import time import requests from hashlib import md5 from requests_oauthlib import OAuth1 def md5hex(str): a = md5() a.update(str) return a.hexdigest() folder = './data' #パスが存在していればTrueを返す path = os.path.exists(folder) if not path: os.mkdir(folder) consumer_key = ''#your key consumer_secret = ''#your key access_token = ''#your key access_token_secret = ''#your key #Twitter APIについて以下参照 #https://syncer.jp/twitter-api-matome/get/search/tweets url = 'https://api.twitter.com/1.1/search/tweets.json' oauth = OAuth1(consumer_key,consumer_secret, access_token,access_token_secret) #署名メソッドの指定。なくても動いた #signaturemethod = 'HMAC-SHA1') idnum = '' count = 1 while count <= 10: #Twitterの検索演算子も使える query_form = {'q' : u'メタモン filter:images min_retweets:1', 'lang' : 'ja', 'count' : 100, 'result_type' : 'recent', 'max_id' : idnum} uri = requests.get(url, auth = oauth, params = query_form) json_loads = json.loads(uri.content) for data in json_loads['statuses']: if 'media' not in data['entities']: continue else: urls = data['entities']['media'] media_urls = urls[0]['media_url']#画像のURLを取得 downloads = requests.get(media_urls).content #画像のDL print media_urls + " " + str([count]) #%sは文字列として置換 #URLを16進数形式の文字列に返して、ファイル名としている? filename = '%s.jpg' % md5hex(urls[0]['media_url']) filepath = '%s/%s' % (folder, filename) images = open(filepath, 'wb') images.write(downloads) images.close() count += 1 idum = data['id'] time.sleep(1)