Add canvas homework retrieval script
This commit is contained in:
parent
bdd76830ed
commit
23e6b4ec88
1
.gitignore
vendored
1
.gitignore
vendored
@ -1 +1,2 @@
|
|||||||
/__pycache__/
|
/__pycache__/
|
||||||
|
/.canvas_auth
|
||||||
|
48
canvas
Executable file
48
canvas
Executable file
@ -0,0 +1,48 @@
|
|||||||
|
#!/usr/bin/env python3
|
||||||
|
|
||||||
|
import subprocess
|
||||||
|
import sys
|
||||||
|
import os
|
||||||
|
import requests
|
||||||
|
|
||||||
|
s = requests.Session()
|
||||||
|
# auth should be in a file called '.canvas_auth' in the same dir
|
||||||
|
# should be of the form 'Bearer <auth code>'
|
||||||
|
with open(os.path.dirname(os.path.realpath(__file__)) + '/.canvas_auth') as f:
|
||||||
|
s.headers.update({"Authorization": f.read().strip()})
|
||||||
|
|
||||||
|
def do_update():
|
||||||
|
courses = s.get("https://canvas.wpi.edu/api/v1/courses",
|
||||||
|
params={'enrollment_state': 'active'}).json()
|
||||||
|
|
||||||
|
did_change = False
|
||||||
|
for course in courses:
|
||||||
|
assignments = s.get(
|
||||||
|
f"https://canvas.wpi.edu/api/v1/courses/{course['id']}/assignments",
|
||||||
|
params={'bucket': 'future'}).json()
|
||||||
|
for assignment in assignments:
|
||||||
|
if assignment['due_at'] is not None:
|
||||||
|
course_code = course['course_code'].split('-')[0]
|
||||||
|
date_str = assignment['due_at'][:10] # just take %Y-%m-%d
|
||||||
|
todo_string = f"(B) +hw class:{course_code} {assignment['name']} due:{date_str}"
|
||||||
|
|
||||||
|
command = ["todo.sh", "listall", todo_string]
|
||||||
|
lines = subprocess.check_output(command).decode(encoding='UTF-8').split('\n')[:-5]
|
||||||
|
if len(lines) < 1: # doesn't exist in todo.txt yet
|
||||||
|
subprocess.call(["todo.sh", "add", todo_string])
|
||||||
|
did_change = True
|
||||||
|
|
||||||
|
if not did_change:
|
||||||
|
print("No changes to make")
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
if len(sys.argv) == 2 and sys.argv[1] == "usage":
|
||||||
|
print(" canvasUpdate\n"
|
||||||
|
" Adds all assignments from canvas that do not already exist")
|
||||||
|
exit(0)
|
||||||
|
|
||||||
|
if len(sys.argv) >= 3:
|
||||||
|
print("Too many arguments!")
|
||||||
|
exit(-1)
|
||||||
|
else:
|
||||||
|
do_update()
|
Loading…
Reference in New Issue
Block a user