Browse Source

commit everything

master
alistair 3 years ago
commit
9f9b752be5
  1. 4
      config.py
  2. 71
      fserver.py
  3. 39
      reform.py

4
config.py

@ -0,0 +1,4 @@ @@ -0,0 +1,4 @@
import os
class Config(object):
SECRET_KEY = os.environ.get('SECRET_KEY') or 'you-will-never-guess'

71
fserver.py

@ -0,0 +1,71 @@ @@ -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)

39
reform.py

@ -0,0 +1,39 @@ @@ -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
Loading…
Cancel
Save