data/script/scrap_pyavm_spitzer.py
author ymh <ymh.work@gmail.com>
Thu, 02 Aug 2018 16:24:30 +0200
changeset 35 7fa549d6fc45
parent 26 957d03d2bc26
permissions -rw-r--r--
Added tag 0.3.6 for changeset 7aa2d3d62723
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
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
# '''