author | ymh <ymh.work@gmail.com> |
Thu, 02 Aug 2018 16:24:30 +0200 | |
changeset 35 | 7fa549d6fc45 |
parent 26 | 957d03d2bc26 |
permissions | -rw-r--r-- |
26
957d03d2bc26
Improve Spitzer collection definition and update iconolab version requirement
ymh <ymh.work@gmail.com>
parents:
25
diff
changeset
|
1 |
import glob |
957d03d2bc26
Improve Spitzer collection definition and update iconolab version requirement
ymh <ymh.work@gmail.com>
parents:
25
diff
changeset
|
2 |
import json |
957d03d2bc26
Improve Spitzer collection definition and update iconolab version requirement
ymh <ymh.work@gmail.com>
parents:
25
diff
changeset
|
3 |
import os |
957d03d2bc26
Improve Spitzer collection definition and update iconolab version requirement
ymh <ymh.work@gmail.com>
parents:
25
diff
changeset
|
4 |
import os.path |
957d03d2bc26
Improve Spitzer collection definition and update iconolab version requirement
ymh <ymh.work@gmail.com>
parents:
25
diff
changeset
|
5 |
import re |
957d03d2bc26
Improve Spitzer collection definition and update iconolab version requirement
ymh <ymh.work@gmail.com>
parents:
25
diff
changeset
|
6 |
import shutil |
957d03d2bc26
Improve Spitzer collection definition and update iconolab version requirement
ymh <ymh.work@gmail.com>
parents:
25
diff
changeset
|
7 |
import sys |
957d03d2bc26
Improve Spitzer collection definition and update iconolab version requirement
ymh <ymh.work@gmail.com>
parents:
25
diff
changeset
|
8 |
import traceback |
957d03d2bc26
Improve Spitzer collection definition and update iconolab version requirement
ymh <ymh.work@gmail.com>
parents:
25
diff
changeset
|
9 |
from urllib import parse as urlparse |
957d03d2bc26
Improve Spitzer collection definition and update iconolab version requirement
ymh <ymh.work@gmail.com>
parents:
25
diff
changeset
|
10 |
from urllib import request |
957d03d2bc26
Improve Spitzer collection definition and update iconolab version requirement
ymh <ymh.work@gmail.com>
parents:
25
diff
changeset
|
11 |
|
957d03d2bc26
Improve Spitzer collection definition and update iconolab version requirement
ymh <ymh.work@gmail.com>
parents:
25
diff
changeset
|
12 |
import requests |
957d03d2bc26
Improve Spitzer collection definition and update iconolab version requirement
ymh <ymh.work@gmail.com>
parents:
25
diff
changeset
|
13 |
|
957d03d2bc26
Improve Spitzer collection definition and update iconolab version requirement
ymh <ymh.work@gmail.com>
parents:
25
diff
changeset
|
14 |
from bs4 import BeautifulSoup |
957d03d2bc26
Improve Spitzer collection definition and update iconolab version requirement
ymh <ymh.work@gmail.com>
parents:
25
diff
changeset
|
15 |
from PIL import Image |
957d03d2bc26
Improve Spitzer collection definition and update iconolab version requirement
ymh <ymh.work@gmail.com>
parents:
25
diff
changeset
|
16 |
from pyavm import AVM |
957d03d2bc26
Improve Spitzer collection definition and update iconolab version requirement
ymh <ymh.work@gmail.com>
parents:
25
diff
changeset
|
17 |
from pyavm.avm import AVMContainer |
957d03d2bc26
Improve Spitzer collection definition and update iconolab version requirement
ymh <ymh.work@gmail.com>
parents:
25
diff
changeset
|
18 |
|
957d03d2bc26
Improve Spitzer collection definition and update iconolab version requirement
ymh <ymh.work@gmail.com>
parents:
25
diff
changeset
|
19 |
|
957d03d2bc26
Improve Spitzer collection definition and update iconolab version requirement
ymh <ymh.work@gmail.com>
parents:
25
diff
changeset
|
20 |
def convert_avm_container(s): |
957d03d2bc26
Improve Spitzer collection definition and update iconolab version requirement
ymh <ymh.work@gmail.com>
parents:
25
diff
changeset
|
21 |
avm_items = s._items |
957d03d2bc26
Improve Spitzer collection definition and update iconolab version requirement
ymh <ymh.work@gmail.com>
parents:
25
diff
changeset
|
22 |
return { |
957d03d2bc26
Improve Spitzer collection definition and update iconolab version requirement
ymh <ymh.work@gmail.com>
parents:
25
diff
changeset
|
23 |
k : convert_avm_container(avm_items.get(k)) if isinstance(avm_items.get(k), AVMContainer) else avm_items.get(k) |
957d03d2bc26
Improve Spitzer collection definition and update iconolab version requirement
ymh <ymh.work@gmail.com>
parents:
25
diff
changeset
|
24 |
for k in avm_items.keys() |
957d03d2bc26
Improve Spitzer collection definition and update iconolab version requirement
ymh <ymh.work@gmail.com>
parents:
25
diff
changeset
|
25 |
if avm_items.get(k) is not None |
957d03d2bc26
Improve Spitzer collection definition and update iconolab version requirement
ymh <ymh.work@gmail.com>
parents:
25
diff
changeset
|
26 |
} |
957d03d2bc26
Improve Spitzer collection definition and update iconolab version requirement
ymh <ymh.work@gmail.com>
parents:
25
diff
changeset
|
27 |
# res = {} |
957d03d2bc26
Improve Spitzer collection definition and update iconolab version requirement
ymh <ymh.work@gmail.com>
parents:
25
diff
changeset
|
28 |
# for k in dir(s): |
957d03d2bc26
Improve Spitzer collection definition and update iconolab version requirement
ymh <ymh.work@gmail.com>
parents:
25
diff
changeset
|
29 |
# v = getattr(s,k) |
957d03d2bc26
Improve Spitzer collection definition and update iconolab version requirement
ymh <ymh.work@gmail.com>
parents:
25
diff
changeset
|
30 |
# if v is None: |
957d03d2bc26
Improve Spitzer collection definition and update iconolab version requirement
ymh <ymh.work@gmail.com>
parents:
25
diff
changeset
|
31 |
# continue |
957d03d2bc26
Improve Spitzer collection definition and update iconolab version requirement
ymh <ymh.work@gmail.com>
parents:
25
diff
changeset
|
32 |
# if isinstance(v, AVMContainer): |
957d03d2bc26
Improve Spitzer collection definition and update iconolab version requirement
ymh <ymh.work@gmail.com>
parents:
25
diff
changeset
|
33 |
# print("%s IS AVMContainer %r" % (k, v)) |
957d03d2bc26
Improve Spitzer collection definition and update iconolab version requirement
ymh <ymh.work@gmail.com>
parents:
25
diff
changeset
|
34 |
# res[k] = convert_avm_container(v) |
957d03d2bc26
Improve Spitzer collection definition and update iconolab version requirement
ymh <ymh.work@gmail.com>
parents:
25
diff
changeset
|
35 |
# else: |
957d03d2bc26
Improve Spitzer collection definition and update iconolab version requirement
ymh <ymh.work@gmail.com>
parents:
25
diff
changeset
|
36 |
# res[k] = v |
957d03d2bc26
Improve Spitzer collection definition and update iconolab version requirement
ymh <ymh.work@gmail.com>
parents:
25
diff
changeset
|
37 |
# return res |
957d03d2bc26
Improve Spitzer collection definition and update iconolab version requirement
ymh <ymh.work@gmail.com>
parents:
25
diff
changeset
|
38 |
IMG_LINK_RE = re.compile(r"(\d+)\s*x\s*(\d+)\s") |
957d03d2bc26
Improve Spitzer collection definition and update iconolab version requirement
ymh <ymh.work@gmail.com>
parents:
25
diff
changeset
|
39 |
|
957d03d2bc26
Improve Spitzer collection definition and update iconolab version requirement
ymh <ymh.work@gmail.com>
parents:
25
diff
changeset
|
40 |
def parse_img_link_size(img_link_txt): |
957d03d2bc26
Improve Spitzer collection definition and update iconolab version requirement
ymh <ymh.work@gmail.com>
parents:
25
diff
changeset
|
41 |
m = IMG_LINK_RE.search(img_link_txt) |
957d03d2bc26
Improve Spitzer collection definition and update iconolab version requirement
ymh <ymh.work@gmail.com>
parents:
25
diff
changeset
|
42 |
return int(m.group(1))*int(m.group(2)) if m else 0 |
957d03d2bc26
Improve Spitzer collection definition and update iconolab version requirement
ymh <ymh.work@gmail.com>
parents:
25
diff
changeset
|
43 |
|
957d03d2bc26
Improve Spitzer collection definition and update iconolab version requirement
ymh <ymh.work@gmail.com>
parents:
25
diff
changeset
|
44 |
for page in range (1, 10): |
957d03d2bc26
Improve Spitzer collection definition and update iconolab version requirement
ymh <ymh.work@gmail.com>
parents:
25
diff
changeset
|
45 |
url = "http://www.spitzer.caltech.edu/search/image_set/100?resource=image_set&tabs=hidden&page={}".format(page) |
957d03d2bc26
Improve Spitzer collection definition and update iconolab version requirement
ymh <ymh.work@gmail.com>
parents:
25
diff
changeset
|
46 |
website = requests.get(url) |
957d03d2bc26
Improve Spitzer collection definition and update iconolab version requirement
ymh <ymh.work@gmail.com>
parents:
25
diff
changeset
|
47 |
soup = BeautifulSoup(website.content, "html5lib") |
957d03d2bc26
Improve Spitzer collection definition and update iconolab version requirement
ymh <ymh.work@gmail.com>
parents:
25
diff
changeset
|
48 |
|
957d03d2bc26
Improve Spitzer collection definition and update iconolab version requirement
ymh <ymh.work@gmail.com>
parents:
25
diff
changeset
|
49 |
table = soup.find("table", {"class":"items"}) |
957d03d2bc26
Improve Spitzer collection definition and update iconolab version requirement
ymh <ymh.work@gmail.com>
parents:
25
diff
changeset
|
50 |
itemtds = table.find_all("td", {"class":"item"}) |
957d03d2bc26
Improve Spitzer collection definition and update iconolab version requirement
ymh <ymh.work@gmail.com>
parents:
25
diff
changeset
|
51 |
|
957d03d2bc26
Improve Spitzer collection definition and update iconolab version requirement
ymh <ymh.work@gmail.com>
parents:
25
diff
changeset
|
52 |
if len(itemtds) == 0: |
957d03d2bc26
Improve Spitzer collection definition and update iconolab version requirement
ymh <ymh.work@gmail.com>
parents:
25
diff
changeset
|
53 |
print("No item in page, exit.") |
957d03d2bc26
Improve Spitzer collection definition and update iconolab version requirement
ymh <ymh.work@gmail.com>
parents:
25
diff
changeset
|
54 |
break |
957d03d2bc26
Improve Spitzer collection definition and update iconolab version requirement
ymh <ymh.work@gmail.com>
parents:
25
diff
changeset
|
55 |
|
957d03d2bc26
Improve Spitzer collection definition and update iconolab version requirement
ymh <ymh.work@gmail.com>
parents:
25
diff
changeset
|
56 |
for td in itemtds: |
957d03d2bc26
Improve Spitzer collection definition and update iconolab version requirement
ymh <ymh.work@gmail.com>
parents:
25
diff
changeset
|
57 |
# itemlinks = find("a", href=True) |
957d03d2bc26
Improve Spitzer collection definition and update iconolab version requirement
ymh <ymh.work@gmail.com>
parents:
25
diff
changeset
|
58 |
img_href = td.div.a.get('href') |
957d03d2bc26
Improve Spitzer collection definition and update iconolab version requirement
ymh <ymh.work@gmail.com>
parents:
25
diff
changeset
|
59 |
print("IMG HREF %s" % img_href) |
957d03d2bc26
Improve Spitzer collection definition and update iconolab version requirement
ymh <ymh.work@gmail.com>
parents:
25
diff
changeset
|
60 |
img_slug = img_href.split("/")[-1] |
957d03d2bc26
Improve Spitzer collection definition and update iconolab version requirement
ymh <ymh.work@gmail.com>
parents:
25
diff
changeset
|
61 |
img_dir_path = 'scrapSpitzer/' + img_slug |
957d03d2bc26
Improve Spitzer collection definition and update iconolab version requirement
ymh <ymh.work@gmail.com>
parents:
25
diff
changeset
|
62 |
if os.path.isdir(img_dir_path) and glob.glob("%s/*.jpg"%img_dir_path) and glob.glob("%s/*.json"%img_dir_path): |
957d03d2bc26
Improve Spitzer collection definition and update iconolab version requirement
ymh <ymh.work@gmail.com>
parents:
25
diff
changeset
|
63 |
print("--> img %s exists" % (img_slug,)) |
957d03d2bc26
Improve Spitzer collection definition and update iconolab version requirement
ymh <ymh.work@gmail.com>
parents:
25
diff
changeset
|
64 |
continue |
957d03d2bc26
Improve Spitzer collection definition and update iconolab version requirement
ymh <ymh.work@gmail.com>
parents:
25
diff
changeset
|
65 |
else: |
957d03d2bc26
Improve Spitzer collection definition and update iconolab version requirement
ymh <ymh.work@gmail.com>
parents:
25
diff
changeset
|
66 |
os.makedirs(img_dir_path, exist_ok=True) |
957d03d2bc26
Improve Spitzer collection definition and update iconolab version requirement
ymh <ymh.work@gmail.com>
parents:
25
diff
changeset
|
67 |
|
957d03d2bc26
Improve Spitzer collection definition and update iconolab version requirement
ymh <ymh.work@gmail.com>
parents:
25
diff
changeset
|
68 |
detail_url = "http://www.spitzer.caltech.edu" + img_href |
957d03d2bc26
Improve Spitzer collection definition and update iconolab version requirement
ymh <ymh.work@gmail.com>
parents:
25
diff
changeset
|
69 |
|
957d03d2bc26
Improve Spitzer collection definition and update iconolab version requirement
ymh <ymh.work@gmail.com>
parents:
25
diff
changeset
|
70 |
try: |
957d03d2bc26
Improve Spitzer collection definition and update iconolab version requirement
ymh <ymh.work@gmail.com>
parents:
25
diff
changeset
|
71 |
detail_content = requests.get(detail_url).content |
957d03d2bc26
Improve Spitzer collection definition and update iconolab version requirement
ymh <ymh.work@gmail.com>
parents:
25
diff
changeset
|
72 |
detail_soup = BeautifulSoup(detail_content, "html5lib") |
957d03d2bc26
Improve Spitzer collection definition and update iconolab version requirement
ymh <ymh.work@gmail.com>
parents:
25
diff
changeset
|
73 |
img_id_elem = detail_soup.find("dd", {"property":"avm:ID"}) |
957d03d2bc26
Improve Spitzer collection definition and update iconolab version requirement
ymh <ymh.work@gmail.com>
parents:
25
diff
changeset
|
74 |
img_id = img_id_elem.getText().strip() if img_id_elem else None |
957d03d2bc26
Improve Spitzer collection definition and update iconolab version requirement
ymh <ymh.work@gmail.com>
parents:
25
diff
changeset
|
75 |
if not img_id: |
957d03d2bc26
Improve Spitzer collection definition and update iconolab version requirement
ymh <ymh.work@gmail.com>
parents:
25
diff
changeset
|
76 |
print("--> img %s has no id, skipping" % img_href) |
957d03d2bc26
Improve Spitzer collection definition and update iconolab version requirement
ymh <ymh.work@gmail.com>
parents:
25
diff
changeset
|
77 |
continue |
957d03d2bc26
Improve Spitzer collection definition and update iconolab version requirement
ymh <ymh.work@gmail.com>
parents:
25
diff
changeset
|
78 |
img_url = None |
957d03d2bc26
Improve Spitzer collection definition and update iconolab version requirement
ymh <ymh.work@gmail.com>
parents:
25
diff
changeset
|
79 |
img_box = detail_soup.find("div", {"class":"sidebar-section download"}) |
957d03d2bc26
Improve Spitzer collection definition and update iconolab version requirement
ymh <ymh.work@gmail.com>
parents:
25
diff
changeset
|
80 |
|
957d03d2bc26
Improve Spitzer collection definition and update iconolab version requirement
ymh <ymh.work@gmail.com>
parents:
25
diff
changeset
|
81 |
img_link_href_array = [ |
957d03d2bc26
Improve Spitzer collection definition and update iconolab version requirement
ymh <ymh.work@gmail.com>
parents:
25
diff
changeset
|
82 |
(img_link.get("href"), parse_img_link_size(img_link.getText())) |
957d03d2bc26
Improve Spitzer collection definition and update iconolab version requirement
ymh <ymh.work@gmail.com>
parents:
25
diff
changeset
|
83 |
for img_link in img_box.find_all("a") ] |
957d03d2bc26
Improve Spitzer collection definition and update iconolab version requirement
ymh <ymh.work@gmail.com>
parents:
25
diff
changeset
|
84 |
|
957d03d2bc26
Improve Spitzer collection definition and update iconolab version requirement
ymh <ymh.work@gmail.com>
parents:
25
diff
changeset
|
85 |
for img_link_href in img_link_href_array: |
957d03d2bc26
Improve Spitzer collection definition and update iconolab version requirement
ymh <ymh.work@gmail.com>
parents:
25
diff
changeset
|
86 |
if img_link_href[0].endswith(img_id + ".jpg"): |
957d03d2bc26
Improve Spitzer collection definition and update iconolab version requirement
ymh <ymh.work@gmail.com>
parents:
25
diff
changeset
|
87 |
img_url = "http://www.spitzer.caltech.edu" + img_link_href[0] |
957d03d2bc26
Improve Spitzer collection definition and update iconolab version requirement
ymh <ymh.work@gmail.com>
parents:
25
diff
changeset
|
88 |
break |
957d03d2bc26
Improve Spitzer collection definition and update iconolab version requirement
ymh <ymh.work@gmail.com>
parents:
25
diff
changeset
|
89 |
|
957d03d2bc26
Improve Spitzer collection definition and update iconolab version requirement
ymh <ymh.work@gmail.com>
parents:
25
diff
changeset
|
90 |
if not img_url: |
957d03d2bc26
Improve Spitzer collection definition and update iconolab version requirement
ymh <ymh.work@gmail.com>
parents:
25
diff
changeset
|
91 |
jpeg_img_link_href_array = sorted(filter(lambda l: l[0].endswith(".jpg"), img_link_href_array), key=lambda e: e[1], reverse=True) |
957d03d2bc26
Improve Spitzer collection definition and update iconolab version requirement
ymh <ymh.work@gmail.com>
parents:
25
diff
changeset
|
92 |
if jpeg_img_link_href_array: |
957d03d2bc26
Improve Spitzer collection definition and update iconolab version requirement
ymh <ymh.work@gmail.com>
parents:
25
diff
changeset
|
93 |
img_url = "http://www.spitzer.caltech.edu" + jpeg_img_link_href_array[0][0] |
957d03d2bc26
Improve Spitzer collection definition and update iconolab version requirement
ymh <ymh.work@gmail.com>
parents:
25
diff
changeset
|
94 |
|
957d03d2bc26
Improve Spitzer collection definition and update iconolab version requirement
ymh <ymh.work@gmail.com>
parents:
25
diff
changeset
|
95 |
|
957d03d2bc26
Improve Spitzer collection definition and update iconolab version requirement
ymh <ymh.work@gmail.com>
parents:
25
diff
changeset
|
96 |
if not img_url: |
957d03d2bc26
Improve Spitzer collection definition and update iconolab version requirement
ymh <ymh.work@gmail.com>
parents:
25
diff
changeset
|
97 |
tiff_img_link_href_array = sorted(filter(lambda l: l[0].endswith(".tif"), img_link_href_array), key=lambda e: e[1], reverse=True) |
957d03d2bc26
Improve Spitzer collection definition and update iconolab version requirement
ymh <ymh.work@gmail.com>
parents:
25
diff
changeset
|
98 |
if tiff_img_link_href_array: |
957d03d2bc26
Improve Spitzer collection definition and update iconolab version requirement
ymh <ymh.work@gmail.com>
parents:
25
diff
changeset
|
99 |
img_url = "http://www.spitzer.caltech.edu" + tiff_img_link_href_array[0][0] |
957d03d2bc26
Improve Spitzer collection definition and update iconolab version requirement
ymh <ymh.work@gmail.com>
parents:
25
diff
changeset
|
100 |
|
957d03d2bc26
Improve Spitzer collection definition and update iconolab version requirement
ymh <ymh.work@gmail.com>
parents:
25
diff
changeset
|
101 |
|
957d03d2bc26
Improve Spitzer collection definition and update iconolab version requirement
ymh <ymh.work@gmail.com>
parents:
25
diff
changeset
|
102 |
if not img_url: |
957d03d2bc26
Improve Spitzer collection definition and update iconolab version requirement
ymh <ymh.work@gmail.com>
parents:
25
diff
changeset
|
103 |
print("NO IMG URL for %s : %r" % (img_id, img_link_href_array)) |
957d03d2bc26
Improve Spitzer collection definition and update iconolab version requirement
ymh <ymh.work@gmail.com>
parents:
25
diff
changeset
|
104 |
continue |
957d03d2bc26
Improve Spitzer collection definition and update iconolab version requirement
ymh <ymh.work@gmail.com>
parents:
25
diff
changeset
|
105 |
print("IMG URL %s" % img_url) |
957d03d2bc26
Improve Spitzer collection definition and update iconolab version requirement
ymh <ymh.work@gmail.com>
parents:
25
diff
changeset
|
106 |
p = urlparse.urlparse(img_url).path |
957d03d2bc26
Improve Spitzer collection definition and update iconolab version requirement
ymh <ymh.work@gmail.com>
parents:
25
diff
changeset
|
107 |
img_ext = os.path.splitext(p)[1] |
957d03d2bc26
Improve Spitzer collection definition and update iconolab version requirement
ymh <ymh.work@gmail.com>
parents:
25
diff
changeset
|
108 |
orig_img_path = 'scrapSpitzer/{0}/{1}{2}'.format(img_slug, img_id, img_ext) |
957d03d2bc26
Improve Spitzer collection definition and update iconolab version requirement
ymh <ymh.work@gmail.com>
parents:
25
diff
changeset
|
109 |
img_path = 'scrapSpitzer/{0}/{1}.jpg'.format(img_slug, img_id) |
957d03d2bc26
Improve Spitzer collection definition and update iconolab version requirement
ymh <ymh.work@gmail.com>
parents:
25
diff
changeset
|
110 |
json_path = 'scrapSpitzer/{0}/{1}.json'.format(img_slug, img_id) |
957d03d2bc26
Improve Spitzer collection definition and update iconolab version requirement
ymh <ymh.work@gmail.com>
parents:
25
diff
changeset
|
111 |
if os.path.isfile(img_path) and os.path.isfile(json_path): |
957d03d2bc26
Improve Spitzer collection definition and update iconolab version requirement
ymh <ymh.work@gmail.com>
parents:
25
diff
changeset
|
112 |
print("--> file %s exists from url %s" % (img_path,img_url)) |
957d03d2bc26
Improve Spitzer collection definition and update iconolab version requirement
ymh <ymh.work@gmail.com>
parents:
25
diff
changeset
|
113 |
continue |
957d03d2bc26
Improve Spitzer collection definition and update iconolab version requirement
ymh <ymh.work@gmail.com>
parents:
25
diff
changeset
|
114 |
|
957d03d2bc26
Improve Spitzer collection definition and update iconolab version requirement
ymh <ymh.work@gmail.com>
parents:
25
diff
changeset
|
115 |
if not os.path.isfile(orig_img_path): |
957d03d2bc26
Improve Spitzer collection definition and update iconolab version requirement
ymh <ymh.work@gmail.com>
parents:
25
diff
changeset
|
116 |
request.urlretrieve(img_url, orig_img_path) |
957d03d2bc26
Improve Spitzer collection definition and update iconolab version requirement
ymh <ymh.work@gmail.com>
parents:
25
diff
changeset
|
117 |
|
957d03d2bc26
Improve Spitzer collection definition and update iconolab version requirement
ymh <ymh.work@gmail.com>
parents:
25
diff
changeset
|
118 |
if img_ext != "jpg" and not os.path.isfile(img_path) : |
957d03d2bc26
Improve Spitzer collection definition and update iconolab version requirement
ymh <ymh.work@gmail.com>
parents:
25
diff
changeset
|
119 |
im = Image.open(orig_img_path) |
957d03d2bc26
Improve Spitzer collection definition and update iconolab version requirement
ymh <ymh.work@gmail.com>
parents:
25
diff
changeset
|
120 |
rgb_im = im.convert('RGB') |
957d03d2bc26
Improve Spitzer collection definition and update iconolab version requirement
ymh <ymh.work@gmail.com>
parents:
25
diff
changeset
|
121 |
rgb_im.save(img_path) |
957d03d2bc26
Improve Spitzer collection definition and update iconolab version requirement
ymh <ymh.work@gmail.com>
parents:
25
diff
changeset
|
122 |
|
957d03d2bc26
Improve Spitzer collection definition and update iconolab version requirement
ymh <ymh.work@gmail.com>
parents:
25
diff
changeset
|
123 |
avm = AVM.from_image(orig_img_path) |
957d03d2bc26
Improve Spitzer collection definition and update iconolab version requirement
ymh <ymh.work@gmail.com>
parents:
25
diff
changeset
|
124 |
img_data = convert_avm_container(avm) |
957d03d2bc26
Improve Spitzer collection definition and update iconolab version requirement
ymh <ymh.work@gmail.com>
parents:
25
diff
changeset
|
125 |
description = img_data.get('Description') or "" |
957d03d2bc26
Improve Spitzer collection definition and update iconolab version requirement
ymh <ymh.work@gmail.com>
parents:
25
diff
changeset
|
126 |
|
957d03d2bc26
Improve Spitzer collection definition and update iconolab version requirement
ymh <ymh.work@gmail.com>
parents:
25
diff
changeset
|
127 |
img_json = { |
957d03d2bc26
Improve Spitzer collection definition and update iconolab version requirement
ymh <ymh.work@gmail.com>
parents:
25
diff
changeset
|
128 |
'avm': img_data, |
957d03d2bc26
Improve Spitzer collection definition and update iconolab version requirement
ymh <ymh.work@gmail.com>
parents:
25
diff
changeset
|
129 |
'image': { |
957d03d2bc26
Improve Spitzer collection definition and update iconolab version requirement
ymh <ymh.work@gmail.com>
parents:
25
diff
changeset
|
130 |
'id': img_data.get('ID'), |
957d03d2bc26
Improve Spitzer collection definition and update iconolab version requirement
ymh <ymh.work@gmail.com>
parents:
25
diff
changeset
|
131 |
'title': img_data.get('Title'), |
957d03d2bc26
Improve Spitzer collection definition and update iconolab version requirement
ymh <ymh.work@gmail.com>
parents:
25
diff
changeset
|
132 |
'description_text': description, |
957d03d2bc26
Improve Spitzer collection definition and update iconolab version requirement
ymh <ymh.work@gmail.com>
parents:
25
diff
changeset
|
133 |
'description_html': '<div>' + description + "</div>", |
957d03d2bc26
Improve Spitzer collection definition and update iconolab version requirement
ymh <ymh.work@gmail.com>
parents:
25
diff
changeset
|
134 |
'date_publication' : img_data.get('Date'), |
957d03d2bc26
Improve Spitzer collection definition and update iconolab version requirement
ymh <ymh.work@gmail.com>
parents:
25
diff
changeset
|
135 |
'credit': img_data.get('Credit') or 'Courtesy NASA/JPL-Caltech', |
957d03d2bc26
Improve Spitzer collection definition and update iconolab version requirement
ymh <ymh.work@gmail.com>
parents:
25
diff
changeset
|
136 |
'type': img_data.get('Type'), |
957d03d2bc26
Improve Spitzer collection definition and update iconolab version requirement
ymh <ymh.work@gmail.com>
parents:
25
diff
changeset
|
137 |
'imgurl': img_data.get('ResourceURL') |
957d03d2bc26
Improve Spitzer collection definition and update iconolab version requirement
ymh <ymh.work@gmail.com>
parents:
25
diff
changeset
|
138 |
}, |
957d03d2bc26
Improve Spitzer collection definition and update iconolab version requirement
ymh <ymh.work@gmail.com>
parents:
25
diff
changeset
|
139 |
'url': img_data.get('ReferenceURL') |
957d03d2bc26
Improve Spitzer collection definition and update iconolab version requirement
ymh <ymh.work@gmail.com>
parents:
25
diff
changeset
|
140 |
} |
957d03d2bc26
Improve Spitzer collection definition and update iconolab version requirement
ymh <ymh.work@gmail.com>
parents:
25
diff
changeset
|
141 |
|
957d03d2bc26
Improve Spitzer collection definition and update iconolab version requirement
ymh <ymh.work@gmail.com>
parents:
25
diff
changeset
|
142 |
with open(json_path, 'w') as outfile: |
957d03d2bc26
Improve Spitzer collection definition and update iconolab version requirement
ymh <ymh.work@gmail.com>
parents:
25
diff
changeset
|
143 |
json.dump(img_json, outfile) |
957d03d2bc26
Improve Spitzer collection definition and update iconolab version requirement
ymh <ymh.work@gmail.com>
parents:
25
diff
changeset
|
144 |
|
957d03d2bc26
Improve Spitzer collection definition and update iconolab version requirement
ymh <ymh.work@gmail.com>
parents:
25
diff
changeset
|
145 |
if img_ext != "jpg": |
957d03d2bc26
Improve Spitzer collection definition and update iconolab version requirement
ymh <ymh.work@gmail.com>
parents:
25
diff
changeset
|
146 |
avm.embed(img_path, img_path) |
957d03d2bc26
Improve Spitzer collection definition and update iconolab version requirement
ymh <ymh.work@gmail.com>
parents:
25
diff
changeset
|
147 |
|
957d03d2bc26
Improve Spitzer collection definition and update iconolab version requirement
ymh <ymh.work@gmail.com>
parents:
25
diff
changeset
|
148 |
except (KeyboardInterrupt, SystemExit): |
957d03d2bc26
Improve Spitzer collection definition and update iconolab version requirement
ymh <ymh.work@gmail.com>
parents:
25
diff
changeset
|
149 |
raise |
957d03d2bc26
Improve Spitzer collection definition and update iconolab version requirement
ymh <ymh.work@gmail.com>
parents:
25
diff
changeset
|
150 |
except: |
957d03d2bc26
Improve Spitzer collection definition and update iconolab version requirement
ymh <ymh.work@gmail.com>
parents:
25
diff
changeset
|
151 |
print("--> error processing %s" % (img_href,)) |
957d03d2bc26
Improve Spitzer collection definition and update iconolab version requirement
ymh <ymh.work@gmail.com>
parents:
25
diff
changeset
|
152 |
traceback.print_exc(file=sys.stdout) |
957d03d2bc26
Improve Spitzer collection definition and update iconolab version requirement
ymh <ymh.work@gmail.com>
parents:
25
diff
changeset
|
153 |
|
957d03d2bc26
Improve Spitzer collection definition and update iconolab version requirement
ymh <ymh.work@gmail.com>
parents:
25
diff
changeset
|
154 |
# ''' |
957d03d2bc26
Improve Spitzer collection definition and update iconolab version requirement
ymh <ymh.work@gmail.com>
parents:
25
diff
changeset
|
155 |
|
957d03d2bc26
Improve Spitzer collection definition and update iconolab version requirement
ymh <ymh.work@gmail.com>
parents:
25
diff
changeset
|
156 |
# MetadataVersion: b'1.2' |
957d03d2bc26
Improve Spitzer collection definition and update iconolab version requirement
ymh <ymh.work@gmail.com>
parents:
25
diff
changeset
|
157 |
# Creator: b'Spitzer Space Telescope' |
957d03d2bc26
Improve Spitzer collection definition and update iconolab version requirement
ymh <ymh.work@gmail.com>
parents:
25
diff
changeset
|
158 |
# Title: b'Surface of TRAPPIST-1f' |
957d03d2bc26
Improve Spitzer collection definition and update iconolab version requirement
ymh <ymh.work@gmail.com>
parents:
25
diff
changeset
|
159 |
# Headline: b"Imagine standing on the surface of the exoplanet TRAPPIST-1f. This artist's concept is one interpretation of what it could look like. " |
957d03d2bc26
Improve Spitzer collection definition and update iconolab version requirement
ymh <ymh.work@gmail.com>
parents:
25
diff
changeset
|
160 |
# Description: b"This artist's concept allows us to imagine what it would be like to stand on the surface of the exoplanet TRAPPIST-1f, located in the TRAPPIST-1 system in the constellation Aquarius. \n\nBecause this planet is thought to be tidally locked to its star, meaning the same face of the planet is always pointed at the star, there would be a region called the terminator that perpetually divides day and night. If the night side is icy, the day side might give way to liquid water in the area where sufficient starlight hits the surface. \n\nOne of the unusual features of TRAPPIST-1 planets is how close they are to each other -- so close that other planets could be visible in the sky from the surface of each one. In this view, the planets in the sky correspond to TRAPPIST1e (top left crescent), d (middle crescent) and c (bright dot to the lower right of the crescents). TRAPPIST-1e would appear about the same size as the moon and TRAPPIST1-c is on the far side of the star. The star itself, an ultra-cool dwarf, would appear about three times larger than our own sun does in Earth's skies.\n\nThe TRAPPIST-1 system has been revealed through observations from NASA's Spitzer Space Telescope and the ground-based TRAPPIST (TRAnsiting Planets and PlanetesImals Small Telescope) telescope, as well as other ground-based observatories. The system was named for the TRAPPIST telescope.\n\nNASA's Jet Propulsion Laboratory, Pasadena, California, manages the Spitzer Space Telescope mission for NASA's Science Mission Directorate, Washington. Science operations are conducted at the Spitzer Science Center at Caltech in Pasadena. Spacecraft operations are based at Lockheed Martin Space Systems Company, Littleton, Colorado. Data are archived at the Infrared Science Archive housed at Caltech/IPAC. Caltech manages JPL for NASA. " |
957d03d2bc26
Improve Spitzer collection definition and update iconolab version requirement
ymh <ymh.work@gmail.com>
parents:
25
diff
changeset
|
161 |
# ReferenceURL: b'http://www.spitzer.caltech.edu/images/6274-ssc2017-01c-Surface-of-TRAPPIST-1f' |
957d03d2bc26
Improve Spitzer collection definition and update iconolab version requirement
ymh <ymh.work@gmail.com>
parents:
25
diff
changeset
|
162 |
# Credit: b'NASA/JPL-Caltech/T. Pyle (IPAC)' |
957d03d2bc26
Improve Spitzer collection definition and update iconolab version requirement
ymh <ymh.work@gmail.com>
parents:
25
diff
changeset
|
163 |
# Date: b'2017-02-22' |
957d03d2bc26
Improve Spitzer collection definition and update iconolab version requirement
ymh <ymh.work@gmail.com>
parents:
25
diff
changeset
|
164 |
# ID: b'ssc2017-01c' |
957d03d2bc26
Improve Spitzer collection definition and update iconolab version requirement
ymh <ymh.work@gmail.com>
parents:
25
diff
changeset
|
165 |
# Type: b'Artwork' |
957d03d2bc26
Improve Spitzer collection definition and update iconolab version requirement
ymh <ymh.work@gmail.com>
parents:
25
diff
changeset
|
166 |
# Publisher: b'Spitzer Science Center' |
957d03d2bc26
Improve Spitzer collection definition and update iconolab version requirement
ymh <ymh.work@gmail.com>
parents:
25
diff
changeset
|
167 |
# PublisherID: b'spitzer' |
957d03d2bc26
Improve Spitzer collection definition and update iconolab version requirement
ymh <ymh.work@gmail.com>
parents:
25
diff
changeset
|
168 |
# ResourceID: b'ssc2017-01c.jpg' |
957d03d2bc26
Improve Spitzer collection definition and update iconolab version requirement
ymh <ymh.work@gmail.com>
parents:
25
diff
changeset
|
169 |
# ResourceURL: b'http://www.spitzer.caltech.edu/uploaded_files/images/0010/9932/ssc201 |
957d03d2bc26
Improve Spitzer collection definition and update iconolab version requirement
ymh <ymh.work@gmail.com>
parents:
25
diff
changeset
|
170 |
# ''' |