Compare commits

...

3 commits

Author SHA1 Message Date
ccca4cb42b fixed webhook for weeks 2024-06-21 12:44:55 +02:00
fb8a94d97c added webhook functionality 2024-06-21 12:42:38 +02:00
3ef4f18f92 added modmetadata 2024-06-21 12:41:17 +02:00
3 changed files with 82 additions and 8 deletions

3
.gitignore vendored
View file

@ -3,4 +3,5 @@
__pycache__
.working
rkpop_data.json
/turbo-octo-potato
/turbo-octo-potato
mcmod_metadata.json

67
rpop_webhook.py Normal file
View file

@ -0,0 +1,67 @@
import os
import requests
import json
import dotenv
import datetime
def send_webhook():
# Load the webhook URL from the environment variables
dotenv.load_dotenv()
# Replace with your actual webhook URL
webhook_url = os.getenv('DISCORD_WEBHOOK_URL')
today = datetime.datetime.today().date()
# Get the date from 7 days ago
seven_days_ago = today - datetime.timedelta(days=7)
# request with the date and http://api.jonasjones.dev/v1/kcomebacks/filter/daterange?start=2023-12-1&end=2023-12-16&limit=50&offset=0
response = requests.get(f"http://api.jonasjones.dev/v1/kcomebacks/filter/daterange?start={seven_days_ago}&end={today}&limit=50&offset=0")
# Check if the request was successful
if response.status_code != 200:
print(f"Failed to fetch data. Status code: {response.status_code}")
exit()
# Parse the JSON response
data = response.json()
data = data['results']
# check if there are 50 or more comebacks
if len(data) >= 50:
# request with offset 50
response = requests.get(f"http://api.jonasjones.dev/v1/kcomebacks/filter/daterange?start={seven_days_ago}&end={today}&limit=50&offset=50")
# Check if the request was successful
if response.status_code != 200:
print(f"Failed to fetch data. Status code: {response.status_code}")
exit()
# Parse the JSON response
data2 = response.json()
# join the lists
data += data2['results']
# Create the message content
content = "# Here are the comebacks from this week:\n"
for i in data:
content += f"{i['date']} > {i['title']} - {i['artist']}: {i['links'] if i['links'] != [] else '*No Links*'}\n"
# Message content
message = {
"content": content,
}
# Make the POST request to the webhook URL
response = requests.post(webhook_url, data=json.dumps(message), headers={"Content-Type": "application/json"})
# Check if the request was successful
if response.status_code == 204:
print("Webhook sent successfully!")
else:
print(f"Failed to send webhook. Status code: {response.status_code}")
if __name__ == "__main__":
send_webhook()

View file

@ -6,6 +6,7 @@ import re
import json
import time
import sys
import rpop_webhook
def fetch_main_reddit_wiki_page(subreddit_name, page_name):
@ -86,10 +87,10 @@ def convert_monthly_content_to_json(content, year, month):
parts[3] = parts[3][1:]
if (parts[3].startswith("[") and parts[3].endswith(")")):
parts[3] = parts[3][1:parts[3].find("](")]
if (parts[3].startswith("*[") and parts[3].endswith(")*")):
parts[3] = parts[3][2:parts[3].find("](")]
releasetype = []
# parse the release type
@ -172,19 +173,19 @@ def convert_monthly_content_to_json(content, year, month):
else:
# if the song links are not provided, replace the string with an empty list
parts[6] = []
# add the reddit link to the list of links
reddit = parts.pop(5)
if reddit != "":
parts[5].append(reddit)
# remove the "th", "st", "nd", "rd" from the day
parts[0] = parts[0].replace('th', '').replace('st', '').replace('nd', '').replace('rd', '')
# make the links an empty list if it's null
if parts[5] == [None]:
parts[5] = []
# create a json entry from the parsed data
json_entry = {
"date": f"{year}-{month}-{parts[0]}",
@ -195,7 +196,7 @@ def convert_monthly_content_to_json(content, year, month):
"links": parts[5]
}
json_data.append(json_entry)
except Exception as e:
@ -247,6 +248,7 @@ def fetch_monthly_page(wiki_link, subreddit_name):
return None
UPLOAD_TO_CDN = True if "--cdn" in sys.argv else False
SEND_WEBHOOK = False if "--no-webhook" in sys.argv else False if "-nwh" in sys.argv else True
# reddit infos
subreddit_name = "kpop"
@ -314,7 +316,7 @@ if content:
# save json_data to file
with open(f"rkpop_data.json", "w") as f:
f.write(json.dumps(json_data, indent=4))
print("Fetched", len(json_data) - 1, "entries.")
cdn_upload_cmd = "rclone copy rkpop_data.json cdn:cdn/api/kcomebacks/"
@ -325,3 +327,7 @@ if content:
elif input("Upload to cdn? [Y/n]") in ["Y", "y", ""]:
print("Uploading...")
os.system(cdn_upload_cmd)
if SEND_WEBHOOK:
rpop_webhook.send_webhook()