alistair
3 years ago
commit
9f9b752be5
3 changed files with 114 additions and 0 deletions
@ -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' |
@ -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) |
@ -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…
Reference in new issue