From 9f9b752be5929aa92a7dcab4274b9ed1023ffb70 Mon Sep 17 00:00:00 2001 From: alistair Date: Fri, 19 Feb 2021 10:18:32 +0000 Subject: [PATCH] commit everything --- config.py | 4 +++ fserver.py | 71 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ reform.py | 39 ++++++++++++++++++++++++++++++ 3 files changed, 114 insertions(+) create mode 100644 config.py create mode 100644 fserver.py create mode 100644 reform.py diff --git a/config.py b/config.py new file mode 100644 index 0000000..5bf854f --- /dev/null +++ b/config.py @@ -0,0 +1,4 @@ +import os + +class Config(object): + SECRET_KEY = os.environ.get('SECRET_KEY') or 'you-will-never-guess' diff --git a/fserver.py b/fserver.py new file mode 100644 index 0000000..f6cbaaa --- /dev/null +++ b/fserver.py @@ -0,0 +1,71 @@ +from flask import Flask, flash, request, redirect, make_response + +from config import Config + +from flask_wtf import FlaskForm +from wtforms import StringField, PasswordField, BooleanField, SubmitField +from wtforms.validators import DataRequired + +app = Flask(__name__) +app.config.from_object(Config) + +from flask_wtf import FlaskForm +from wtforms import StringField, PasswordField, BooleanField, SubmitField +from wtforms.validators import DataRequired + +class URLForm(FlaskForm): + urlfield = StringField('urlfield', validators=[DataRequired()]) + submit = SubmitField('Go') + +from flask import render_template + +import requests +import re + +from reform import reformat_cal + +TIMETABLEURL = "https://timetable.my.uq.edu.au:443/even/rest/calendar/ical/" + +@app.route('/update', methods=['GET']) +def get_cal(): + cd = request.args.get('code') + + if (cd != None): + print(cd) + url = TIMETABLEURL + cd + try: + cal = reformat_cal(url) + except: + return redirect("/?error=fail") + + resp = make_response(cal) + resp.headers["Content-Type"] = "text/calendar; charset=utf-8" + return resp + else: + return redirect("/?error=fail") + +@app.route('/', methods=['GET', 'POST']) +def hello(): + form = URLForm() + if form.validate_on_submit(): + url = form.urlfield.data + code = url.split("/")[-1] + rdr = f"/calfix/update?code={code}" + try: + cal = reformat_cal(TIMETABLEURL + code) + print(cal) + flash("Download/Subscribe link") + flash(rdr) + except: + flash("Invalid calendar link") + flash("/") + +# return redirect(rdr) + +# print('url', url) +# newcal = reformat_cal(url) + + return render_template('index.html', title='cal rewrite', form=form) + +if __name__ == '__main__': + app.run(port=25565) diff --git a/reform.py b/reform.py new file mode 100644 index 0000000..231f523 --- /dev/null +++ b/reform.py @@ -0,0 +1,39 @@ +import requests + + +def reformat_cal(url): + print(url) + req = requests.get(url) + if (req.status_code != 200): + raise ValueError() + + if req.text == "" or req.text == None: + raise ValueError() + + cal = req.text.split("\n") + + for counter, line in enumerate(cal): + if "BEGIN:VEVENT" in line: + summary = None + desc = None + + if "SUMMARY" in line: + summary = counter + continue + + if "DESCRIPTION" in line: + desc = counter + continue + + if "UID" in line: + cal[counter] = "" + + if "END:VEVENT" in line: + course_code = cal[desc].split("_")[0].split(":")[1] + imsummary = cal[summary].split(',') + imsummary[0] = "SUMMARY:" + course_code + cal[summary] = ','.join(imsummary) + + cal = "\n".join(cal) + return cal +