In [1]:
import requests
import yaml
import os.path
In [2]:
response = requests.get("https://iosdc.jp/2016/c/api/talks.json")
In [3]:
j = response.json()
In [4]:
len(j)
Out[4]:
In [5]:
j[0]
Out[5]:
In [6]:
def normalize(session):
def get_value(d, k):
try:
return d[k][0]["value"]
except:
return None
links = []
twitter_account = get_value(session, "field_speaker_twitter")
if twitter_account is not None:
links.append({
"title": "@" + twitter_account,
"url": "https://twitter.com/" + twitter_account
})
time = get_value(session, "field_talk_time")
nid = get_value(session, "nid")
room = get_value(session, "field_talk_room")
if room == "A":
links.append({
"title": "#iosdc #a",
"url": "https://twitter.com/search?q=%23iosdc%20%23a"
})
elif room == "B":
links.append({
"title": "#iosdc #b",
"url": "https://twitter.com/search?q=%23iosdc%20%23b"
})
enable_to_vote = not time.startswith("5分")
if enable_to_vote:
links.append({
"title": "投票",
"url": "https://iosdc.herokuapp.com/vote/" + nid
})
return {
"session": {
"description": get_value(session, "field_abstract"),
"title": get_value(session, "title"),
"start_at": get_value(session, "field_talk_start_at"),
"room": room,
"time": time,
"nid": nid,
"links": links,
"speaker": {
"name": get_value(session, "field_speaker"),
"twitter_account": twitter_account,
},
}
}
def normalize_sessions(sessions):
for s in sessions:
yield normalize(s)
In [7]:
session = list(normalize_sessions(j))[0]
def user_name(s):
t = s["session"]["speaker"]["twitter_account"]
if t is not None:
return t
else:
return s["session"]["speaker"]["name"]
In [38]:
session
Out[38]:
In [8]:
def twitter_account(s):
t = s["session"]["speaker"]["twitter_account"]
if t is not None:
return t
else:
return None
twac = twitter_account(session)
In [9]:
import tweepy
key = ""
api_secret = ""
auth = tweepy.OAuthHandler(key, api_secret)
twapi = tweepy.API(auth)
In [10]:
user = twapi.get_user(twac)
In [11]:
image_url = user.profile_image_url.replace("_normal", "")
# image_url = user.profile_image_url
In [12]:
img_response = requests.get(image_url, stream=True)
img_response
In [13]:
img_response.raw.data
In [14]:
img_response.raw
path = "/Users/hayashi311/Desktop/dev/iosdcjp2016app/WebAPI/static/speakers/{}.jpg".format(twac)
if img_response.status_code == 200:
with open(path, 'wb') as f:
f.write(img_response.raw.data)
In [15]:
i = img_response.raw
In [16]:
def fetch_user_image(user_name):
jpg_path = "/Users/hayashi311/Desktop/dev/iosdcjp2016app/WebAPI/static/speakers/{}.jpg".format(user_name)
if os.path.isfile(jpg_path):
print(user_name,': image file exists')
return "/static/speakers/{}.jpg".format(user_name)
png_path = "/Users/hayashi311/Desktop/dev/iosdcjp2016app/WebAPI/static/speakers/{}.png".format(user_name)
if os.path.isfile(png_path):
print(user_name,': image file exists')
return "/static/speakers/{}.png".format(user_name)
print(user_name,': fetch image')
user = twapi.get_user(twac)
image_url = user.profile_image_url.replace("_normal", "")
img_response = requests.get(image_url, stream=True)
if img_response.status_code == 200:
with open(path, 'wb') as f:
f.write(img_response.raw.data)
return "/static/speakers/{}.jpg".format(user_name)
fetch_user_image(twitter_account(session))
Out[16]:
In [ ]:
In [17]:
for s in normalize_sessions(j):
print(s["session"]["nid"], s["session"]["speaker"]["name"])
twac = twitter_account(s)
if twac is not None:
s["session"]["speaker"]["image"] = fetch_user_image(twac)
path = "/Users/hayashi311/Desktop/dev/iosdcjp2016app/WebAPI/data/speakers/{}.yaml".format(user_name(s))
f = open(path, 'w')
f.write(yaml.dump(s, default_flow_style=False, allow_unicode=True))
f.close()
In [ ]: