Skip to main content
Join the official 2019 Python Developers SurveyStart the survey!

Python client library for JMA feed.

Project description

jma-feed

Python client library for JMA feed.

This project was generated with cookiecutter using jacebrowning/template-python.

Unix Build Status Coverage Status Scrutinizer Code Quality Documentation Status PyPI Version PyPI License

Setup

Requirements

  • Python 3.6+

Installation

Install jma-feed with pip:

$ pip install jma-feed

or directly from the source code:

$ git clone https://github.com/tearoom6/jma-feed.git
$ cd jma-feed
$ python setup.py install

Usage

After installation, the package can imported:

import jma_feed
jma_feed.__version__

Report can be retrieved from Atom feeds:

all_reports = jma_feed.fetch_all_reports(long_term=False)
all_meteorology_reports = jma_feed.fetch_all_meteorology_reports(long_term=False)
all_seismology_reports = jma_feed.fetch_all_seismology_reports(long_term=False)
all_volcanology_reports = jma_feed.fetch_all_volcanology_reports(long_term=False)

Report API:

control = report.control
print(control.title)
print(control.date_time)
print(control.status)
print(control.editorial_office)
print(control.publishing_office)

head = report.head
print(head.title)
print(head.report_date_time)
print(head.target_date_time)
print(head.event_id)
print(head.info_type)
print(head.serial)
print(head.info_kind)
print(head.info_kind_version)
print(head.headline_text)
for headline_information in head.headline_information_list:
    print(headline_information.type)
    for item in headline_information.items:
        print(item.areas_code_type)
        for kind in item.kinds:
            print(kind.name)
            print(kind.code)
            print(kind.condition)
        for area in item.areas:
            print(area.name)
            print(area.code)

body = report.body

# Meteorology
if isinstance(body, jma_feed.ReportBodyMeteorology):
    target_area = body.target_area
    if target_area:
        print(target_area.name)
        print(target_area.code)
    comment = body.comment
    if comment:
        for text in comment.texts:
            print(text.text)
    for notice in body.notices:
        print(notice)
    for warning in body.warnings:
        for item in warning.items:
            print(item.change_status)
            print(item.full_status)
            print(item.editing_mark)
            if item.area:
                print(item.area.name)
                print(item.area.code)
            for kind in item.kinds:
                print(kind.name)
                print(kind.code)
                print(kind.status)
                print(kind.condition)
    for meteorological_info in body.meteorological_infos:
        print(meteorological_info.date_time)
        print(meteorological_info.duration)
        print(meteorological_info.name)
        for item in meteorological_info.items:
            print(item.change_status)
            print(item.full_status)
            print(item.editing_mark)
            if item.area:
                print(item.area.name)
                print(item.area.code)
            for kind in item.kinds:
                print(kind.name)
                print(kind.code)
                print(kind.status)
                print(kind.condition)
    for time_series_info in body.time_series_infos:
        for time_define in meteorological_info.time_defines:
            print(time_define.date_time)
            print(time_define.duration)
            print(time_define.name)
        for item in meteorological_info.items:
            print(item.change_status)
            print(item.full_status)
            print(item.editing_mark)
            if item.area:
                print(item.area.name)
                print(item.area.code)
            for kind in item.kinds:
                print(kind.name)
                print(kind.code)
                print(kind.status)
                print(kind.condition)

# Seismology
if isinstance(body, jma_feed.ReportBodySeismology):
    print(body.naming)
    print(body.text)
    print(body.next_advisory)
    comments = body.comments
    if comments and comments.warning_comment:
        print(comments.warning_comment.text)
        print(comments.warning_comment.code)
        print(comments.warning_comment.code_type)
    if comments and comments.forecast_comment:
        print(comments.forecast_comment.text)
        print(comments.forecast_comment.code)
        print(comments.forecast_comment.code_type)
    if comments and comments.observation_comment:
        print(comments.observation_comment.text)
        print(comments.observation_comment.code)
        print(comments.observation_comment.code_type)
    if comments and comments.var_comment:
        print(comments.var_comment.text)
        print(comments.var_comment.code)
        print(comments.var_comment.code_type)
    if comments and comments.free_form_comment:
        print(comments.free_form_comment)
    tsunami = body.tsunami
    for earthquake in body.earthquakes:
        print(earthquake.origin_time)
        print(earthquake.arrival_time)
        print(earthquake.condition)
        for magnitude in earthquake.magnitudes:
            print(magnitude)
        hypocenter = earthquake.hypocenter
        if hypocenter:
            print(hypocenter.source)
            if hypocenter.area:
                print(hypocenter.area.name)
                print(hypocenter.area.code)
                print(hypocenter.area.coordinate)

# Volcanology
if isinstance(body, jma_feed.ReportBodyVolcanology):
    print(body.notice)
    print(body.text)
    for volcano_info in body.volcano_infos:
        for item in volcano_info.items:
            if item.kind:
                print(item.kind.name)
                print(item.kind.formal_name)
                print(item.kind.code)
                print(item.kind.condition)
            for area in item.areas:
                print(area.name)
                print(area.code)
                print(area.coordinate)
    for ash_info in body.ash_infos:
        print(ash_info.start_time)
        print(ash_info.end_time)
        for item in ash_info.items:
            if item.kind:
                print(item.kind.name)
                print(item.kind.formal_name)
                print(item.kind.code)
                print(item.kind.condition)
            for area in item.areas:
                print(area.name)
                print(area.code)
                print(area.coordinate)

Feed API (Low-level API):

# High-frequency feed
# Regular (定時: 気象に関する情報のうち、天気概況など定時に発表されるもの)
feed_url = jma_feed.FEED_URL_REGULAR_SHORT_TERM
# Extra (随時: 気象に関する情報のうち、警報・注意報など随時発表されるもの)
feed_url = jma_feed.FEED_URL_EXTRA_SHORT_TERM
# Earthquake/Volcano (地震火山: 地震、火山に関する情報)
feed_url = jma_feed.FEED_URL_EQVOL_SHORT_TERM
# Others (その他: 上記3種類のいずれにも属さないもの)
feed_url = jma_feed.FEED_URL_OTHER_SHORT_TERM

# Long-term feed
# Regular (定時: 気象に関する情報のうち、天気概況など定時に発表されるもの)
feed_url = jma_feed.FEED_URL_REGULAR_LONG_TERM
# Extra (随時: 気象に関する情報のうち、警報・注意報など随時発表されるもの)
feed_url = jma_feed.FEED_URL_EXTRA_LONG_TERM
# Earthquake/Volcano (地震火山: 地震、火山に関する情報)
feed_url = jma_feed.FEED_URL_EQVOL_LONG_TERM
# Others (その他: 上記3種類のいずれにも属さないもの)
feed_url = jma_feed.FEED_URL_OTHER_LONG_TERM

feed = jma_feed.AtomFeed(feed_url)

print(feed.id)
print(feed.title)
print(feed.subtitle)
print(feed.updated)
print(feed.rights)
entries = feed.entries
for entry in entries:
    print(entry.id)
    print(entry.title)
    print(entry.updated)
    print(entry.author)
    print(entry.content)
    print(entry.link)

Project details


Release history Release notifications

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Files for jma-feed, version 0.9.0
Filename, size File type Python version Upload date Hashes
Filename, size jma_feed-0.9.0-py3-none-any.whl (94.2 kB) File type Wheel Python version py3 Upload date Hashes View hashes
Filename, size jma_feed-0.9.0.tar.gz (19.2 kB) File type Source Python version None Upload date Hashes View hashes

Supported by

Elastic Elastic Search Pingdom Pingdom Monitoring Google Google BigQuery Sentry Sentry Error logging AWS AWS Cloud computing DataDog DataDog Monitoring Fastly Fastly CDN SignalFx SignalFx Supporter DigiCert DigiCert EV certificate StatusPage StatusPage Status page