diff options
| -rw-r--r-- | constants.py | 2 | ||||
| -rw-r--r-- | generate.py | 5 | ||||
| -rw-r--r-- | networks/myt.py | 41 | ||||
| -rw-r--r-- | news_feed.py | 4 |
4 files changed, 52 insertions, 0 deletions
diff --git a/constants.py b/constants.py index 9b0d3c7..0c7b7bc 100644 --- a/constants.py +++ b/constants.py @@ -25,6 +25,8 @@ MUSIC_DIVER_NEWS="https://mypage.musicdiver.jp/api/news?lang=en" TAIKO_BLOG_SITE="https://taiko-ch.net/blog/" +MYT_SOLIPS_UPDATE_SITE="https://www.solips.app/" + ADD_EN_TRANSLATION=True # Only takes effect if an API key is provided in .env class CHUNITHM_VERSION(Enum): diff --git a/generate.py b/generate.py index 90d40cc..58e90ec 100644 --- a/generate.py +++ b/generate.py @@ -110,6 +110,9 @@ def generate_music_diver_news_file(): def generate_taiko_news_file(): return generate_news_file("taiko_news", constants.TAIKO_BLOG_SITE) +def generate_myt_changelog(): + return generate_news_file("myt_news", constants.MYT_SOLIPS_UPDATE_SITE) + if __name__ == "__main__": log_output("JOB START", "TASK") if not os.path.exists(OUTPUT_DIR): @@ -131,6 +134,8 @@ if __name__ == "__main__": music_diver_news_data = generate_music_diver_news_file() taiko_news_data = generate_taiko_news_file() + generate_myt_changelog() + news = create_merged_feed( iidx_news_data, sdvx_news_data, diff --git a/networks/myt.py b/networks/myt.py new file mode 100644 index 0000000..369d61a --- /dev/null +++ b/networks/myt.py @@ -0,0 +1,41 @@ +from bs4 import BeautifulSoup +from datetime import datetime +import time + +def parse_changelog_to_news_format(html: str): + soup = BeautifulSoup(html, "html.parser") + news_items = [] + + sections = soup.select("div.py-4") + for section in sections: + date_tag = section.find("h4") + ul = section.find("ul") + if not date_tag or not ul: + continue + + date_str = date_tag.text.strip() + try: + date_obj = datetime.strptime(date_str, "%B %dth, %Y") + except ValueError: + try: + date_obj = datetime.strptime(date_str, "%B %d, %Y") + except ValueError: + continue + timestamp = int(time.mktime(date_obj.timetuple())) + + entries = [li.text.strip() for li in ul.find_all("li")] + content = "\n".join(f"• {entry}" for entry in entries) + + news_item = { + "date": date_str, + "identifier": "MYT_NETWORK", + "type": None, + "timestamp": timestamp, + "headline": f"MYT CHANGELOG ({date_str})", + "content": content, + "url": None, + "images": [] + } + news_items.append(news_item) + + return news_items diff --git a/news_feed.py b/news_feed.py index 62af645..0ec42b8 100644 --- a/news_feed.py +++ b/news_feed.py @@ -30,6 +30,7 @@ import sega.maimaidx_intl as maimaidx_intl import sega.ongeki_jp as ongeki_jp import taito.music_diver as music_diver import bandai_namco.taiko as taiko +import networks.myt as myt import constants import translate @@ -118,6 +119,9 @@ def get_news(news_url: str, version=None) -> list: site_data = download_site_as_html(news_url) news_posts = sorted(taiko.parse_taiko_blog_site(site_data), key=lambda x: x['timestamp'], reverse=True) + elif news_url == constants.MYT_SOLIPS_UPDATE_SITE: + site_data = download_site_as_html(news_url) + news_posts = sorted(myt.parse_changelog_to_news_format(site_data), key=lambda x: x['timestamp'], reverse=True) else: news_posts = [] return news_posts |
