A lot of colleges use Canvas as place for professors to post their homework assignments and files. I decided because of the widespread popularity of the service as well as how applicable it was to my life, build a system to sync the Canvas files to my computer.
Luckily for me, a developer named perslev, had already written such a program on Github, see: https://github.com/perslev/CanvasSync. I used his program and found it pretty good.
However, I discovered one flaw with it: it only downloads a file if it newly appeared on Canvas. This means you may download version 1 of an assignment and the professor updates it to version 2 and you still have version 1 on your computer because CanvasSync does not care that the file was updated. It was written with the assumption that files once on Canvas, don’t get updated again.
Therefore, I made it a task for myself to looking into perslev’s Python code and make modifications so that it not only downloads new files that appear on Canvas, but also files that have been modified. And it worked, see my fork: https://github.com/jnbli/CanvasSync.