Significantly reduce redundancy

Signed-off-by: Skylar "The Cobra" Widulski <cobra@vern.cc>
This commit is contained in:
Skylar "The Cobra" Widulski 2023-01-21 00:34:18 -05:00
parent ff32a1a35f
commit 3f99b3b6c2
Signed by: cobra
GPG Key ID: 4FD8F812083FF6F9
1 changed files with 6 additions and 36 deletions

42
main.py
View File

@ -6,11 +6,6 @@ import html
import re
from bs4 import BeautifulSoup
ERRROR_MESSAGE = 'Uh oh, could not connect to urban dictionary api'
DEFINE = "https://urbandictionary.com/define.php?term="
AUTHOR = "https://urbandictionary.com/author.php?author="
RANDOM = "https://urbandictionary.com/random.php"
HOME = "https://urbandictionary.com/"
def scrape(url, arg=None):
if arg == None:
@ -21,6 +16,7 @@ def scrape(url, arg=None):
if data.status_code == 200:
our_path = re.sub(r".*://.*/", "/", request.url)
path = re.sub(r".*://.*/", "/", data.url)
print(our_path, path)
if our_path != path:
return f"REDIRECT {path}"
ret = []
@ -39,47 +35,21 @@ def scrape(url, arg=None):
pages = ""
return (ret, pages)
else:
return f"Couldn't get data from the API\n{data.status_code}"
return f"Couldn't get data from Urban Dictionary\n{data.status_code}"
def render(data):
return render_template('index.html', data=data)
app = Flask(__name__, template_folder="templates", static_folder="static")
@app.route('/')
def home():
scraped = scrape(HOME + {True: f"?page={request.args.get('page')}", False: ""} [request.args.get('page') != None])
@app.route('/', defaults={'path': ''})
@app.route('/<path:path>')
def catch_all(path):
scraped = scrape(f"https://urbandictionary.com/{re.sub(r'.*://.*/', '/', request.url)}")
if type(scraped) == str and scraped.startswith("REDIRECT"):
return redirect(scraped.replace("REDIRECT ", ""), 302)
return render(scraped)
@app.route('/define.php')
def define():
if request.args.get('term') != None:
scraped = scrape(DEFINE + request.args.get('term') + {True: f"&page={request.args.get('page')}", False: ""} [request.args.get('page') != None])
if type(scraped) == str and scraped.startswith("REDIRECT"):
return redirect(scraped.replace("REDIRECT ", ""), 302)
else:
return redirect("/", 302)
return render(scraped)
@app.route('/author.php')
def author():
if request.args.get('author') != None:
scraped = scrape(AUTHOR + request.args.get('author') + {True: f"&page={request.args.get('page')}", False: ""} [request.args.get('page') != None])
if type(scraped) == str and scraped.startswith("REDIRECT"):
return redirect(scraped.replace("REDIRECT ", ""), 302)
else:
return redirect("/", 302)
scraped = (scraped[0], str(scraped[1]).replace("»", "»").replace("›", "").replace("«", "«").replace("‹", ""))
return render(scraped)
@app.route('/random.php')
def random():
scraped = scrape(RANDOM)
if type(scraped) == str and scraped.startswith("REDIRECT"):
return redirect(scraped.replace("REDIRECT ", ""), 302)
return render(scraped)
if __name__ == '__main__':
app.run(port=8000)