Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/ShevonKuan/yuektang_ppt2pdf

将雨课堂中的课件导出为pdf
https://github.com/ShevonKuan/yuektang_ppt2pdf

Last synced: about 2 months ago
JSON representation

将雨课堂中的课件导出为pdf

Awesome Lists containing this project

README

        

# 雨课堂课件下载器
Shevon Kuan

- 目前支持大部分雨课堂

----

## 心路历程

超级讨厌雨课堂的课件导出功能.说是保护老师的版权,实则在每一张课件上加上了自己的logo,这叫保护老师的版权?是你想吞占老师的成果,打上自己的名字吧.老师的课件为啥不写老师的名字,偏偏写上雨课堂?

为此,作者开发了这个简单的软件.

雨课堂的课件打印页面是动态生成的,而且会与后端联系获取sessionid所对应的处于打开状态的课件id.我首先考虑的是,逐行阅读该逻辑所对应的js文件(几万行),使用python重现该逻辑,以实现对动态页面的爬取.缺点:
- 需要访问系统敏感目录获取浏览器对应的cookies文件以获取`sessionid`和`crftoken`.
- 模拟网页渲染过程需要的逻辑复杂,花费了大量的精力去实现后发现爬取速度非常慢,这远比直接看网页慢,不实际.

然后我考虑使用浏览器模拟操作的方法使用`selenium`库,缺点:
- 过程十分不友好,需要用户重复登录,并且会产生较多的无必要的页面刷新和跳转以重新获取domain等cookie键值对.
- 每一次爬取后需要重新调用beautifulsoup进行分析,即每导出一个pdf就需要重新运行一次程序(或循环体),既不美观又不高效

最后,我使用了油猴脚本结合本地`flask`服务器的方式.巧妙结合了JavaScript对页面dom元素的操作能力和python极其丰富的功能.提出**前端侵入性脚本辅助python进行爬虫**的全新爬虫形式.

## 使用说明(需要启动后端,该方法已弃用)

1. 下载并解压releases中最新的软件包,将`YuKeTang_Print2PDF.js`添加到油猴控制台或者使用greasyfork链接进行添加

2. 双击打开`课件打印服务器.exe`,第一次使用请放行防火墙
3. 打开对应的课件页面点解打印后将会跳转到`https://changjiang.yuketang.cn/web/print`该链接,在该页面打印的地方将会出现`脚本打印`的按钮,点击即可运行,状态可以在`课件打印服务器.exe`的窗口中看到.

## 使用说明(建议使用)

1. 使用greasyfork链接进行添加,该版本使用`jsPDF`在线生成pdf,不需要启动后端.
2. 打开对应的课件页面点解打印后将会跳转到`https://changjiang.yuketang.cn/web/print`该链接,在该页面打印的地方将会出现`脚本打印`的按钮,点击即可运行,状态可以在`课件打印服务器.exe`的窗口中看到.