pre-fsdfsd

master
Hey Moon 2022-11-27 14:45:10 -06:00
parent 4aeffe36bb
commit 5c8959ad6b
3 changed files with 8 additions and 105 deletions

4
.gitignore vendored
View File

@ -2,3 +2,7 @@ id
secret
user_agent
rdrama_auth_token
*.md
log
__pycache__/
.ipynb_checkpoints/

View File

@ -1,101 +0,0 @@
import time
import requests
'''
Wrapper around the RDRama API
'''
class RDramaAPIInterface:
def __init__(self, authorization_token, site, sleep : float, https: bool = True) -> None:
self.headers={"Authorization": authorization_token}
self.site = site
self.protocol = "https" if https else "http"
self.sleep = sleep
def make_post(self, title, submission_url, body):
url=f"{self.protocol}://{self.site}/submit"
return self.post(url, data={'title' : title, 'url': submission_url, 'body': body})
'''
Sends a message to a user.
'''
def send_message(self, username, message):
url=f"{self.protocol}://{self.site}/@{username}/message"
return self.post(url, data={'message':message})
'''
Replies to the comment with the given id.
'''
def reply_to_comment(self,parent_fullname, parent_submission, message):
url=f"{self.protocol}://{self.site}/comment"
return self.post(url, data={
'parent_fullname':parent_fullname,
'submission': parent_submission,
"body": message
})
'''
Replies to the comment with the given id.
'''
def reply_to_comment_easy(self,comment_id, parent_submission, message):
return self.reply_to_comment(f"t3_{comment_id}", parent_submission, message)
'''
Gets "all" comments. TODO: Probably need to add pagination support if I want to actually use this
'''
def get_comments(self):
url=f"{self.protocol}://{self.site}/comments"
return self.get(url)
'''
Calls the notifications endpoint
'''
def get_notifications(self, page : int):
url=f"{self.protocol}://{self.site}/notifications?page={page}"
return self.get(url)
def reply_to_direct_message(self, message_id : int, message : str):
url=f"{self.protocol}://{self.site}/reply"
return self.post(url, data = {
'parent_id' : message_id,
'body': message
}, allowed_failures=[500]) #There is a bug (probably) with the site that causes 500 errors to be sent when doing this via json. TODO: Ask Aevann why
def get_comment(self, id):
url=f"{self.protocol}://{self.site}/comment/{id}"
return self.get(url)
def has_url_been_posted(self, the_url):
url=f"{self.protocol}://{self.site}/is_repost"
return self.post(url, {'url': the_url})['permalink'] != ''
'''
I have no clue what this is supposed to do, lol.
'''
def clear_notifications(self):
url=f"{self.protocol}://{self.site}/clear"
return self.post(url, headers=self.headers)
def give_coins(self, user, amount):
url=f"{self.protocol}://{self.site}/@{user}/transfer_coins"
return self.post(url, data={'amount':amount})
def get(self, url, allowed_failures = []):
print(f"[rdrama_api] sleeping for {self.sleep}")
time.sleep(self.sleep)
print(f"[rdrama_api] Awake")
response = requests.get(url, headers=self.headers)
print(f"GET {url} ({response.status_code}) {response.json()}")
if (response.status_code != 200 and response.status_code not in allowed_failures):
raise BaseException(f"GET {url} ({response.status_code}) {response.json()}")
else:
return response.json()
def post(self, url, data, allowed_failures = []):
print(f"[rdrama_api] sleeping for {self.sleep}")
time.sleep(self.sleep)
print(f"[rdrama_api] Awake")
response = requests.post(url, headers=self.headers, data=data)
print(f"POST {url} ({response.status_code}) {data} => {response.json()}")
if (response.status_code != 200 and response.status_code not in allowed_failures):
raise BaseException(f"POST {url} ({response.status_code}) {data} => {response.json()}")
else:
return response.json()

View File

@ -420,7 +420,7 @@ else:
auth = f.read()
https = True
timeout = 10
rdrama = RDramaAPIInterface(auth, website, timeout, https=https)
rdrama = RDramaAPIInterface(auth, website, https=https)
def create_report(submission : Submission, absolute):
file_name = sanitize_sentence(submission.title).replace(" ", "_")
@ -428,6 +428,6 @@ def create_report(submission : Submission, absolute):
f.write(generate_submission_report(submission, absolute))
if __name__ == "__main__":
# print(f"Starting at {datetime.datetime.now()}")
# daily_drama_post(rdrama)
# print(f"Ending at {datetime.datetime.now()}")
print(f"Starting at {datetime.datetime.now()}")
daily_drama_post(rdrama)
print(f"Ending at {datetime.datetime.now()}")