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

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第三方库


热门话题
我们应该在测试java代码时模拟黄瓜测试吗。我们应该在多大程度上使用黄瓜?   Hibernate Weblogic 10.3.4 java。lang.NoSuchMethodError:javax/persistence/spi/PersistenceUnitInfo。getValidationMode()Ljavax/persistence/ValidationMode;   java如何在main()中访问私有静态实例变量   java JMockit无法模拟类的公共final字段   java是否可以返回特定控制器操作的输出(html)?   java如何返回正确类型的列表?   rest-OpenUI/Swagger-java-to-API   java组织。springframework。豆。工厂NoSuchBeanDefinitionException或加载ApplicationContext失败   java使用POST将参数从JSP发送到Servlet   java如何监听特定的按钮按下和主视图用户交互?   java如何让gradle在本地maven repo中覆盖库?   如何在Java中“合并”两个URI?   java如何制作一个方法来移动数组中的字符?   使用来自java的命令启动powershell窗口   java垃圾收集器和匿名类   java如何为CellTable(GWT 2.4)中的ImageResourceCell创建PanelPopup?