Skip to content

Commit 98c4d63

Browse files
first commit
1 parent 6f98fb8 commit 98c4d63

File tree

1 file changed

+68
-0
lines changed

1 file changed

+68
-0
lines changed

glam/fetch_europeana.py

+68
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,68 @@
1+
#!/usr/bin/env python3
2+
"""
3+
Example Command from root of repository:
4+
pipenv run glam/fetch_smithsonian.py
5+
"""
6+
7+
# Standard library
8+
import os
9+
import sys
10+
import traceback
11+
from pprint import pprint
12+
13+
# Third-party
14+
import requests
15+
from requests.adapters import HTTPAdapter
16+
from requests.packages.urllib3.util.retry import Retry
17+
import query_secrets
18+
19+
TIMEOUT = 10
20+
21+
22+
def fetch_data(session):
23+
params = {"api_key": query_secrets.S_I_O_A_API_Key}
24+
with session.get(
25+
"https://api.si.edu/openaccess/api/v1.0/stats",
26+
params=params,
27+
timeout=TIMEOUT,
28+
) as response:
29+
response.raise_for_status()
30+
data = response.json()
31+
return data
32+
33+
34+
def main():
35+
#print("API_KEY:", query_secrets.S_I_O_A_API_Key) # DEBUG
36+
37+
# Requests configurations
38+
max_retries = Retry(
39+
# try again after 5, 10, 20, 40, 80 seconds
40+
# for specified HTTP status codes
41+
total=5,
42+
backoff_factor=10,
43+
status_forcelist=[403, 408, 429, 500, 502, 503, 504],
44+
)
45+
session = requests.Session()
46+
session.mount("https://", HTTPAdapter(max_retries=max_retries))
47+
48+
# Fetch and format domain data
49+
data = fetch_data(session)
50+
51+
# Print data
52+
pprint(data)
53+
54+
55+
if __name__ == "__main__":
56+
try:
57+
main()
58+
except SystemExit as e:
59+
sys.exit(e.code)
60+
except KeyboardInterrupt:
61+
print("INFO (130) Halted via KeyboardInterrupt.", file=sys.stderr)
62+
sys.exit(130)
63+
except Exception:
64+
print("ERROR (1) Unhandled exception:", file=sys.stderr)
65+
print(traceback.print_exc(), file=sys.stderr)
66+
sys.exit(1)
67+
68+
# the difference between a record and an object.

0 commit comments

Comments
 (0)