aboutsummaryrefslogtreecommitdiffstats
path: root/rasis.py
diff options
context:
space:
mode:
Diffstat (limited to 'rasis.py')
-rw-r--r--rasis.py99
1 files changed, 99 insertions, 0 deletions
diff --git a/rasis.py b/rasis.py
new file mode 100644
index 0000000..ca8018b
--- /dev/null
+++ b/rasis.py
@@ -0,0 +1,99 @@
+import http.client
+import json
+import hashlib
+import requests
+from dotenv import load_dotenv
+import os
+
+load_dotenv()
+
+
+HASHED_NEWS_FILES = "hashes.txt"
+
+def generate_queued_posts() -> list:
+ def news_already_hashed(line: str) -> bool:
+ try:
+ with open(HASHED_NEWS_FILES, "r") as file:
+ return line in file.read()
+ except FileNotFoundError:
+ with open(HASHED_NEWS_FILES, "w") as file:
+ pass
+ return False
+
+ def append_to_hash_file(line: str):
+ with open(HASHED_NEWS_FILES, "a") as file:
+ file.write(line + "\n")
+ url = "https://arcade-news.pinapelz.com/news.json"
+ response = requests.get(url)
+ queue = []
+ if response.status_code == 200:
+ data = response.json()
+ news_posts = data["news_posts"]
+ for post in news_posts:
+ hash = hashlib.sha256(f"{post['identifier'] + post['content'] + post['date']}".encode('utf-8')).hexdigest()
+ if news_already_hashed(hash):
+ continue
+ queue.append(post)
+ append_to_hash_file(hash)
+ else:
+ print(f"Failed to download JSON. Status code: {response.status_code}")
+ exit(1)
+ return queue
+
+
+def generate_post_content(post_data: dict) -> str:
+ """
+ 📰 GAME - DATE
+ [type] headline?
+ content?
+ 🔗 [link]
+ 🖼 [image?](link)
+ """
+ if "IIDX" in post_data["identifier"]:
+ game = "beatmania IIDX"
+ tags = "#iidx #beatmania #bemani"
+ elif "SOUND_VOLTEX" in post_data["identifier"]:
+ game = "SOUND VOLTEX"
+ tags = "#sdvx #soundvoltex #bemani"
+ elif "CHUNITHM" in post_data["identifier"]:
+ game = "CHUNITHM JPN"
+ tags = "#chunithm"
+ content = f"📰 {game} - {post_data['date']}\n\n"
+ if post_data["type"] is not None:
+ content = content + f"[{post_data['type']}] "
+ if post_data["headline"] is not None and post_data["headline"] != post_data["content"] :
+ content = content + f"[{post_data['headline']}]\n\n"
+ content = content + post_data["content"] + "\n\n"
+ if post_data["url"] is not None:
+ content = content + f"🔗 {post_data['url']}\n"
+ for i in range(len(post_data["images"])):
+ content = content + f"🖼 [Image{i+1}]({post_data['images'][i]['image']})\n"
+ content = content + tags
+ return content
+
+
+def post_on_fedi(content: str):
+ conn = http.client.HTTPSConnection(os.environ.get("SHARKEY_INSTANCE"))
+
+ payload = {
+ "visibility": "public",
+ "text": content,
+ "localOnly": False,
+ "noExtractMentions": False,
+ "noExtractHashtags": False,
+ "noExtractEmojis": False
+ }
+
+ headers = {
+ "Content-Type": "application/json",
+ "Authorization": "Bearer " + os.environ.get("SHARKEY_KEY")
+ }
+ conn.request("POST", "/api/notes/create", json.dumps(payload), headers)
+ res = conn.getresponse()
+ data = res.read()
+
+if __name__ == "__main__":
+ queued_posts = generate_queued_posts()
+ for post in queued_posts:
+ content = generate_post_content(post)
+ post_on_fedi(content)
send patches to the email below
yukais@pinapelz.com
include the subject [PATCH repo_name]
pinapelz.com
homepage