{"id":24502571,"url":"https://github.com/btlmd/mooc_automated","last_synced_at":"2025-10-30T23:07:59.325Z","repository":{"id":107983856,"uuid":"462177853","full_name":"Btlmd/MOOC_Automated","owner":"Btlmd","description":"A selenium script to watch the videos on tsinghua.yuketang.cn","archived":false,"fork":false,"pushed_at":"2022-05-16T04:20:27.000Z","size":26,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-03-15T08:13:26.151Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Btlmd.png","metadata":{"files":{"readme":"readme.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2022-02-22T07:03:39.000Z","updated_at":"2023-08-11T06:02:07.000Z","dependencies_parsed_at":"2023-05-15T00:30:11.468Z","dependency_job_id":null,"html_url":"https://github.com/Btlmd/MOOC_Automated","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/Btlmd/MOOC_Automated","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Btlmd%2FMOOC_Automated","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Btlmd%2FMOOC_Automated/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Btlmd%2FMOOC_Automated/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Btlmd%2FMOOC_Automated/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Btlmd","download_url":"https://codeload.github.com/Btlmd/MOOC_Automated/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Btlmd%2FMOOC_Automated/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":264016713,"owners_count":23544623,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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":[],"created_at":"2025-01-21T23:12:28.357Z","updated_at":"2025-10-30T23:07:59.210Z","avatar_url":"https://github.com/Btlmd.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# MOOC Automated\n一个串行播放慕课的脚本。它会自动逐个播放全部视频，文字和考试维持不动。\n\n选择题答案被发送给了前端，可以用开发者工具查看。\n\n**声明：这个脚本只是用来熟悉`selenium`的使用。其存在和公开并不代表我曾经跳过了、或者鼓励任何人跳过任何必要的教学环节。**\n\n## 准备工作\n1. 安装浏览器和浏览器对应办版本的驱动\n2. `pip install -r requirements.txt`\n### Firefox\n- 从 https://github.com/mozilla/geckodriver/releases 下载 geckodriver，将驱动加入环境变量。\n- 默认启动FireFox\n### Chrome\n- 从 http://chromedriver.storage.googleapis.com/index.html 下载ChromeDriver，将驱动加入环境变量。\n- `main.py --chrome` 启动Chrome\n- ChromeDriver可能会输出很多错误信息，但这不影响脚本的运行。\n\n## 使用过程\n1. 运行 `main.py`，它会自动启动浏览器。\n2. 微信扫码登录，打开相应课程，找到待播放的视频。\n3. 打开你想要播放的第一个**视频**。（注意是视频，而不是文字/考试）\n4. 关闭所有其他页面。\n5. 给脚本发送回车。\n6. 等待脚本退出。\n\n## 你可能想问\n- 为什么看起来没有动静了？\n    - 为了适应各种不良网络环境（比如xx假日酒店只有**1MB/s**、还不是很稳定阴间网络），我配置了几秒的`implicit wait`。\n\n- 那为什么不用`expected_conditions/WebDriverWait` ?\n    - 我太菜了，用它们写出来的不太鲁棒，干脆暴力等待，反正自动播放也不耗使用者的时间 \\doge.\n    \n- 为什么不能自动完成文本内容？\n    - 因为我没能成功在”下一单元”元素上触发`click`事件。如果用url直接进入页面，它总会留在上一个状态没法出来。\n\n## 为什么不并行\n有一种显然的办法可以几乎瞬间看完全部慕课：打开所有视频，等1h，关闭浏览器。如果网络、内存足够，你的慕课完成了。现有一些这样的脚本。\n\n对于并行播放，也许`***`是一个令人担忧的问题。\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbtlmd%2Fmooc_automated","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbtlmd%2Fmooc_automated","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbtlmd%2Fmooc_automated/lists"}