解决高校学生和教授黑板难的对策

bb-unsucked的Python项目详细描述


黑板未锁定

crummy用于修复crummy软件的名称

如果你是ODU的学生或教员,我相信你并不陌生 每天浪费2-3个小时试图通过黑板找到或张贴作业。

我很关心学生的看法,但我希望这个实验能 证明对教授也有用。目标是围绕现有的 黑板基础设施,并提供一个cli api来访问所有重要的功能 它通常被困在4-5个链接和总共20-30秒的浏览器加载时间之后。

具体目标

  • [X]登录BB
  • [X]仅列出当前学期的课程(隐藏不相关的课程)
  • [X]列出所有公告
  • [X]列出给定班级的作业
  • 当教授们把作业放在不同的地方时,这必须是一种聪明的做法
  • []提交作业文件
  • []查看/张贴到讨论板
  • []缓存和后台程序操作,以防止大多数数据访问都必须访问网络

依赖关系

Python3 requests,和BeautifulSoup,两者都可以是 通过pip3

安装

用法

最快的设置是在某个地方保存最近黑板会话的.har文件, 然后运行

# Install the package
pip3 install --user bb_unsucked
# Read authentication details from .har
python3 -m bb_unsucked build-cache downloads/my-session.har
# use the __main__.py program to list all of your classes
python3 -m bb_unsucked ls

在脚本中

文件demo_usage_in_script.py有更多示例,但hello world是:

importbb_unsuckedbb=bb_unsucked.BBUnsucked()formy_classinbb.classes():print(f"I am in {my_class.course_id}")

身份验证

要执行身份验证步骤,最可靠的方法是 保存最近黑板会话的.har文件。bb_unsucked是 能够从文件recent_request.har中解析身份验证会话cookie。

how to save a .har from a browser

配置

bb-unsucked首先从/etc/bb-unsucked/config.ini读取配置指令 然后从$HOME/.bb-unsucked/config.ini开始。两个文件都不需要存在, 但如果要重写参数,默认配置内容将是

[DEFAULT]
base_domain = https://www.blackboard.odu.edu
cookies_file = /j/.bb-unsucked/cookies.bin
agressive_caching = False
courses_cache_file = /j/.bb-unsucked/courses-cache.bin
courses_max_cache_s = 604800
announcements_cache_file = /j/.bb-unsucked/announcements-cache.bin
announcements_max_cache_s = 21600

如您所见,base_domain默认为odu的黑板实例, 但这可以更改为指向任何黑板实例。

我的配置将各种缓存文件列在/j/(我的主目录)下 因为当使用默认值时bb-unsucked将动态生成 值为cookies_filecourses_cache_fileannouncements_cache_file

编译cython二进制文件

一些速度演示者希望尽可能优化性能,特别是。 如果bb-unsucked将在其他脚本中使用。此回购协议包含 执行make bb-unsucked时生成二进制文件bb-unsucked

在读取时,二进制文件的性能比python模块更好 不需要网络访问的缓存数据。它通过插入一些代码来实现这一点, cython_main_interpose.c,在cython输出的生成的.c文件中。

此代码负责尝试在没有 需要跳转到python运行时。很好的例子是打印帮助文本和列表类, 这个模块需要200毫秒,二进制代码需要2毫秒。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
JBossJava进程内存持续增长   Java postincrement(++)在作为参数传递时表现不符合预期   TableView列的java编辑值   java根据springboot@Scheduled注释使用的条件动态修改调度程序计时   java无法将jsp表单值设置为类变量   java ParseQuery from字段未保存   java为什么日历返回月份。是否获取(Calendar.MONTH)上个月而不是当前月?   java无法获取api密钥的md5指纹   java通用DAO和嵌套属性支持   javapomi的版本已经改变了。从OJDBC6到OJDBC8的xml。使用新版本OJDBC8执行某些查询时出现锁定问题   java IntelliJ颜色方案定制   java从第三方读取Linux存储库   amazon s3在AWS s3 Java SDK中设置对象元数据   java一对多映射比