initial
This commit is contained in:
commit
a888a74c45
3
.gitignore
vendored
Normal file
3
.gitignore
vendored
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
config.json
|
||||||
|
.idea/
|
||||||
|
venv/
|
5
config.json.example
Normal file
5
config.json.example
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
{
|
||||||
|
"username": "testuser",
|
||||||
|
"password": "testpassword",
|
||||||
|
"webhook": "https://discord.com/webhook/abc/def"
|
||||||
|
}
|
81
main.py
Normal file
81
main.py
Normal file
@ -0,0 +1,81 @@
|
|||||||
|
import requests
|
||||||
|
from bs4 import BeautifulSoup
|
||||||
|
import mechanize
|
||||||
|
import time
|
||||||
|
import datetime
|
||||||
|
import traceback
|
||||||
|
import json
|
||||||
|
|
||||||
|
with open("config.json", "r") as fp:
|
||||||
|
config = json.load(fp)
|
||||||
|
|
||||||
|
USERNAME = config["username"]
|
||||||
|
PASSWORD = config["password"]
|
||||||
|
WEBHOOK_URL = config["webhook"]
|
||||||
|
|
||||||
|
|
||||||
|
def loop():
|
||||||
|
login_url = "https://www.giantswd.org/forum/ucp.php?mode=login"
|
||||||
|
logout_url = "https://www.giantswd.org/forum/ucp.php?mode=logout"
|
||||||
|
newposts_url = "https://www.giantswd.org/forum/search.php?search_id=unreadposts"
|
||||||
|
|
||||||
|
# Login
|
||||||
|
print("Logging in...")
|
||||||
|
br = mechanize.Browser()
|
||||||
|
br.open(login_url)
|
||||||
|
br.select_form(id="login")
|
||||||
|
br["username"] = USERNAME
|
||||||
|
br["password"] = PASSWORD
|
||||||
|
br.submit()
|
||||||
|
|
||||||
|
# Get new posts
|
||||||
|
print("Getting new posts...")
|
||||||
|
newposts_resp = br.open(newposts_url)
|
||||||
|
newposts_html = newposts_resp.get_data()
|
||||||
|
bs = BeautifulSoup(newposts_html, features="html5lib")
|
||||||
|
all_newposts = bs.find_all("dl", attrs={"class": "topic_unread"})
|
||||||
|
for newpost in all_newposts:
|
||||||
|
newpost_title = newpost.find(class_="topictitle").contents[0]
|
||||||
|
newpost_link = newpost.find(class_="topictitle")["href"]
|
||||||
|
newpost_username = newpost.find(class_="username").contents[0]
|
||||||
|
newpost_link_real = "https://www.giantswd.org/forum/%s" % (newpost_link[2:])
|
||||||
|
|
||||||
|
print("%s has created a new post %s (%s)" % (newpost_username, newpost_title, newpost_link_real))
|
||||||
|
|
||||||
|
webhook_data = {
|
||||||
|
"embeds": [
|
||||||
|
{
|
||||||
|
"title": "A new message has been posted!",
|
||||||
|
"description": "**%s** has posted a new message: [**%s**](%s)" % (newpost_username, newpost_title, newpost_link_real),
|
||||||
|
"color": 55039,
|
||||||
|
"author": {
|
||||||
|
"name": "GiantsWD forums"
|
||||||
|
},
|
||||||
|
"footer": {
|
||||||
|
"text": ""
|
||||||
|
},
|
||||||
|
"timestamp": datetime.datetime.now().isoformat()
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
requests.post(WEBHOOK_URL, json=webhook_data)
|
||||||
|
|
||||||
|
# Mark all read
|
||||||
|
print("Mark all read...")
|
||||||
|
a = bs.find("a", class_="mark-read")
|
||||||
|
mark_read_url = a["href"]
|
||||||
|
br.open(mark_read_url)
|
||||||
|
|
||||||
|
# Logout
|
||||||
|
print("Logout...")
|
||||||
|
br.open(logout_url)
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
while True:
|
||||||
|
try:
|
||||||
|
loop()
|
||||||
|
except:
|
||||||
|
traceback.print_exc()
|
||||||
|
print("Sleeping...")
|
||||||
|
time.sleep(3600)
|
Loading…
Reference in New Issue
Block a user