{"id":37073760,"url":"https://github.com/theresurgence/canopto","last_synced_at":"2026-01-14T08:39:35.237Z","repository":{"id":62592958,"uuid":"535478519","full_name":"theresurgence/canopto","owner":"theresurgence","description":"canopto is a tool to sync course files and videos from the Canvas LMS hosted by the National University of Singapore (NUS).","archived":false,"fork":false,"pushed_at":"2022-12-01T15:51:32.000Z","size":59,"stargazers_count":3,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2026-01-04T12:39:26.868Z","etag":null,"topics":["canvas-lms","nus","panopto","python3"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/theresurgence.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2022-09-12T01:55:33.000Z","updated_at":"2024-10-30T05:20:04.000Z","dependencies_parsed_at":"2023-01-22T10:30:30.499Z","dependency_job_id":null,"html_url":"https://github.com/theresurgence/canopto","commit_stats":null,"previous_names":[],"tags_count":4,"template":false,"template_full_name":null,"purl":"pkg:github/theresurgence/canopto","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/theresurgence%2Fcanopto","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/theresurgence%2Fcanopto/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/theresurgence%2Fcanopto/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/theresurgence%2Fcanopto/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/theresurgence","download_url":"https://codeload.github.com/theresurgence/canopto/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/theresurgence%2Fcanopto/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28414672,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-14T08:38:59.149Z","status":"ssl_error","status_checked_at":"2026-01-14T08:38:43.588Z","response_time":107,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["canvas-lms","nus","panopto","python3"],"created_at":"2026-01-14T08:39:34.670Z","updated_at":"2026-01-14T08:39:35.227Z","avatar_url":"https://github.com/theresurgence.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# canopto\n\ncanopto is a tool to sync course files and videos from the Canvas LMS hosted by the National\nUniversity of Singapore (NUS). Files are downloaded using the Canvas LMS Rest APIs, while videos are\nobtained from Panopto, which NUS uses to store course videos.\n**Credentials are only used for authenticating with NUS Canvas servers.**\n\nContributions and suggestions are welcome!\n\n## Usage\n\n- Open a terminal window (Linux/MacOS)\n- For windows, open a command prompt (search for `cmd` in the search bar)\n- Enter the following command\n\n```commandline\ncanopto\n```\n\nIf using the executable for windows, simply double click to launch it.\n\n## Installation\n\n### Install using Python/pipx\n\n- If you have python3 on your computer, are using an OS that has it by default (MacOS, Linux)\n- pipx is recommended over directly using pip to install canopto, to run it in an isolated environment.\n- For the commands below, use `python3` or `python` if one does not work.\n- Similarly, `pip3` or `pip`\n- You can easily upgrade using `pipx upgrade canopto`\n\n#### Windows and Linux\n\n```commandline\npython -m pip install --user pipx\npython -m pipx ensurepath\npipx install canopto\npipx upgrade canopto \n```\n\n- You might need to close the current cmd window and open a new one after running `python -m pipx ensure path`\n\n#### MacOS\n\n  ```commandline\n  brew install pipx\n  pipx ensurepath\n  pipx install canopto\n  pipx upgrade canopto\n  ```\n\n### Download from executable\n\nTODO\n\n## Running from the source\n\n```commandline\ngit clone https://github.com/theresurgence/canopto\ncd canopto\npython -m venv venv\nsource venv/bin/activate  # Linux or MacOS\nsource venv/Scripts/activate # Windows\npip install -r requirements.txt\npython src/canopto/\n```\n\n## FAQ\n\n**1. How are my login credentials stored?**\n\n- Your username and password is stored locally and securely on your computer using the python keyring library.\n  For more information please check out [keyring]('https://pypi.org/project/keyring/').\n- **Credentials are only used for authenticating with NUS Canvas servers.**\n\n**2. Video downloads seem to take very long!**\n\n- Videos can be large, and can easily be a few hundred MBs each. Please wait patiently.\n\n**3. If my download is interrupted, can I continue from where I left off?**\n\n- Yes, you can end downloads abruptly and resume them at any time.\n  Partially downloaded files have a `.part` file extension, which will be removed\n  once the download is fully complete.\n\n**4. Will my annotated files be overwritten?**\n\n- No, if the file has been full downloaded to your computer (no more `.part` extension), it will be ignored.\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftheresurgence%2Fcanopto","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftheresurgence%2Fcanopto","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftheresurgence%2Fcanopto/lists"}