diff options
| author | Pinapelz <yukais@pinapelz.com> | 2025-04-13 18:00:11 -0700 |
|---|---|---|
| committer | Pinapelz <yukais@pinapelz.com> | 2025-04-13 18:00:11 -0700 |
| commit | 03bc3271e0719e33c9517180bb2d39b0d73b7b90 (patch) | |
| tree | ed3b0b504b50a1ae9fb65a00f6ddd7bf270db9a4 /news_feed.py | |
| parent | dc0794ae2c08a35c30ae8de2d44e2a21c7875252 (diff) | |
move to generic news_feed module
Diffstat (limited to 'news_feed.py')
| -rw-r--r-- | news_feed.py | 45 |
1 files changed, 45 insertions, 0 deletions
diff --git a/news_feed.py b/news_feed.py new file mode 100644 index 0000000..5737cea --- /dev/null +++ b/news_feed.py @@ -0,0 +1,45 @@ +""" +Generic format for a news entry. All keys are considered to be nullable +{ + 'date': JST date of news post + 'type': Type of post if available, otherwise if not provided it will be None (aka Generic news) + 'timestamp': Unixtime of date above, + 'headline': Headline, + 'content': All text content of news, + 'url': URL to full post if available, + 'images': { + 'image': URL to image, + 'link': If there's an associated href. Else None + + } +} +""" + +from email.utils import parsedate_to_datetime +from datetime import datetime +from site_scraper import SiteScraper +import bemani.sdvx as sound_voltex +import bemani.iidx as iidx +import sega.chuni_jp as chunithm_jp +import constants + +def get_news(news_url: str, version=None) -> list: + scraper = SiteScraper(headless=True) + news_json = {} + site_data = scraper.get_page_source(news_url) + if news_url == constants.SOUND_VOLTEX_EXCEED_GEAR_NEWS_SITE: + news_posts = sorted(sound_voltex.parse_exceed_gear_news_site(site_data, constants.EAMUSEMENT_BASE_URL), key=lambda x: x['timestamp'], reverse=True) + elif news_url == constants.IIDX_PINKY_CRUSH_NEWS_SITE: + news_posts = sorted(iidx.parse_pinky_crush_news_site(site_data, constants.EAMUSEMENT_BASE_URL), key=lambda x: x['timestamp'], reverse=True) + elif news_url == constants.CHUNITHM_NEWS_SITE: + if version == constants.CHUNITHM_VERSION.VERSE: + news_posts = sorted(chunithm_jp.parse_chuni_jp_verse_news_site(site_data), key=lambda x: x['timestamp'], reverse=True) + else: + news_posts = [] + scraper.close() + news_json = { + "fetch_date": int(datetime.now().timestamp()), + "posts": news_posts + + } + return news_json |
