緊急速報「エリアメール」のRSSを作成

rireki.area-hinan.au.com

!pip install feedgen
import datetime
import re

import requests
from bs4 import BeautifulSoup

from feedgen.feed import FeedGenerator


def get_mail(link):

    r = requests.get(link)
    r.raise_for_status()

    soup = BeautifulSoup(r.content, "html.parser")

    tag = soup.select_one("div.post__content")

    text = tag.get_text(strip=True) if tag else ""

    return text


JST = datetime.timezone(datetime.timedelta(hours=+9))

if __name__ == "__main__":

    url = "https://x677d6m41c.execute-api.ap-northeast-1.amazonaws.com/Prod/api/dhs-get-disaster-data-html?prefCode=38000&areaCityCode=38202"

    r = requests.get(url)
    r.raise_for_status()

    data = r.json()

    fg = FeedGenerator()

    fg.title("災害・避難情報")
    fg.link(
        href="https://rireki.area-hinan.au.com/detail?prefCode=38000&areaCityCode=38202"
    )
    fg.subtitle("愛媛県今治市")
    fg.language("ja")
    fg.updated(datetime.datetime.now(JST))

    for i in data["disasterDataHtmlUrl"]:

        fullDate = [int(j) for j in re.findall("\d+", i["fullDate"])]

        pubDate = datetime.datetime(*fullDate).replace(tzinfo=JST)

        fe = fg.add_entry()

        fe.title(i["fullDate"])
        fe.description(get_mail(i["url"]))
        fe.published(pubDate)

fg.rss_file("rss.xml")

print(fg.rss_str(pretty=True).decode())