王宏利
浙江省温州中学 325600
摘 要:随着信息技术发展和智能手机的普及,“互联网+教育”理念的深化,研究移动线上线下混合式教学模式对推进教育信息化进程意义重大。分析当前国内线上学习的应用情况,结合钉钉的一些特色功能,探讨基于高中新课程新教材中Python程序实现如何获取钉钉平台的教育教学视频,最后总结基于python爬取钉钉平台上的直播回放视频,并给出一些建议和解决方法。
关键词:钉钉;python爬虫;教育资源;移动学习
0 引言
Python语言是一种生态语言,是一种简洁且强大的开源脚本语言,python语言简单易学,更多偏向于大家所使用的自然语言,使得它更加的简单,易于上手,在编程格式上也没有其它语言那般的严格,对于初学者而言,更加的便捷。
基于钉钉的特色功能,在学校已有网络教学平台的基础上,对现有数字教学资源进行整合、优化,同时根据移动学习的特点,增加学习资源推送、学习过程跟踪、学习评价、互动答疑等功能,最终构建一个强交互、重体验的移动学习平台。
1 钉钉平台教学现状
根据上级教育部门提出的关于疫情防控情况下利用教育信息化平台停学不停课的要求,笔者全程参与“停学不停课”的新型教学模式,从而也引发一些思考,钉钉的线上教学存在如下问题:
一是在线上直播上课流畅度不够,导致孩子们看到的网课传输延迟音视频不同步,听课效果不理想。教师与学生之间隔着屏幕,只能进行冰冷的知识讲解,不能传达师生的讲课热情。二是由于网课基本以教师讲学生听为主要手段,师生互动性差,师生上课缺少课堂氛围,教师不能及时掌握学生学情,无法进行课堂管理,学生不能自律。三是学生自身水平有差异,部分学生觉得线上老师讲课太慢,知识量不够,想要保存视频和快速播放学习。
钉钉直播群视频是可以在线回放,但不能达到理想的快进学习模式。那么能否将这些优秀的教育资源视频下载保存到个人电脑或移动设备上,需要的时候随时调取学习,更好地防止视频到期限后会消失掉。
钉钉群直播平台是提供视频下载的功能,但群管理员往往都关闭了下载功能,只有群管理本人是可以下载视频的。那么,在这种情况下笔者就思考基于Python爬虫技术来达到下载群视频的需求呢?答案是肯定的,既然正常的下载方法被关闭,那么就利用python强大的爬虫技术来试试吧。
2 钉钉资源获取实践
2.1实践环境准备
根据实际需求准备一台PC电脑安装win7系统,fiddler抓包软件,钉钉PC客户端6.0版本以上,媒体ffmpeg软件或copy命令,python3.7环境以及requests、natsort、time、os库。新建一个python文件ding_video.py,在python文件所在位置新建一个dingvideo文件夹来存放视频数据。
2.2方法思路分析
根据观察,在网站观看视频的时候,并不是一次性将所有视频内容全部请求完,而是把它分为了很多小段视频,每次请求一小段。这一规则几乎应用于所有的视频网站和视频软件,所以想要爬取视频的时候,并不能一次性爬取到视频的全部,测试钉钉视频爬取下来是一小段一小段分开有序号的ts文件;所以在抓取视频的时候,首先得获取到每一个小节视频的URL地址,然后去请求它,将所有小节的ts文件保存下来,然后再使用ffmpeg软件将所有ts格式文件按序号转换合并成单个MP4视频,理清这个思路后,接下来通过编写python代码开始实际的操作。
2.3视频抓取分析
首先,需要先获取到每个小节视频的URL地址,由于不是在浏览器当中,所以就要用到 fiddler来对钉钉客户端的视频进行数据包抓取;打开 fiddler 抓包软件,然后登陆钉钉 PC 客户端,钉钉登录要选浏览器代理模式登录,否则 fiddler软件里看不到钉钉视频数据,找到你想要下载的群直播回放视频。
然后,任选一个视频并播放,我们就可以在fiddler软件当中看到抓取到的数据包,找到记录数据包中...bc0567fa2876_merge.m3u8就包含此视频的所有序号的ts小视频的url地址,...bc0567fa2876/1.ts就是当前视频开始的第一小段视频URL地址;可以选中序号为94的这条数据包,然后在右边“检查”中的“原始”当中打开GET后面的链接,会提示你下载一个文件,将这个文件下载到本地,并将此文件重命名为idkeys.txt用于接下来python语句的调用,使用记事本打开,可以看到当前视频每一个小节的URL地址。
观察发现当前这些url地址是不完整的,因为他们前面省略了关键的部分内容,根据当前抓取某个视频的url为https://dtliving-sz.dingtalk.com/live_hp/,实际操作中不同的钉钉群视频或不同区域可能获取到的地址是不一样的,以实际获取到的地址为依据。
最后,在视频数据包,观察到小段视频打开GET后面的链接与多个小段视频url格式都是这类情况,刚好省略了前面的一部分内容。
2.4 Python代码书写
理清上述内容和规则之后,接下来准备基于python语言的强大模块功能进入到代码书写的环节。
首先,利用IDLE (Python 3.7 )打开和创建ding_video.py 文件,导入 requests 库,然后将我们刚才获取到的94号数据包里面的下载 URL 地址写入,再写入请求头,由于我们暂时不知道它需要哪些请求头的参数,所以我们索性将 fiddler 上所有的请求头参数都写上,先打印一下状态码,看是否可以请求成功。
然后,运行程序之后,有些情况下会看到一个 SSL 的报错,这是因为网站可能并没有设置好 HTTPS 证书,或者网站的 HTTPS 证书不被 CA 机构认可,这时候,这些网站可能就会出现 SSL 证书错误的提示,这个时候,一般只需要在 requests.get 的参数里面加上“verify=False”即可。
最后,就是请求这个 URL 地址,开始下载所有小段视频文件到dingvideo文件夹。就是先读取idkeys.txt文件里面的内容,利用正则表达式将我们所需要的每小节视频的 URL 地址提取出来,再将缺少的部分拼接上,这里缺少的url地址就是https://dtliving-sz.dingtalk.com/live_hp/,拼接好代码,成功之后就开始请求url即可开始下载所有小视频。通过上述思路,利用python的语言去实现,限于篇幅文字,代码不做详细解释。
2.5媒体视频整合
等待下载完成在文件夹当中就可以看所有 ts格式 文件。ffmpeg是一个开源的音视频转码工具,它提供了录制、转换以及流化音视频的完整解决方案,可以转码、压制、提取、截取、合并、录屏等。打开windows里的cmd窗口,使用ffmpeg软件命令格式ffmpeg -f concat -safe 0 -i name.txt -c copy new.mp4,将所有的ts文件转换生成new.MP4 格式,至此就完成了对钉钉群某个回放视频的下载保存格式整合的工作,即可以在电脑端随时调取mp4视频学习。
3结束语
2020年春季的一场突如其来的新冠疫情席卷了全球,本着“停课不停学,确保教学质量”的原则,笔者学校采取校长和教师统一指导、分级落实的有效举措,积极组织广大教师有序开展网络教学工作。疫情之下的线上教学实践,让每一位参与其中的教师都对线上教学有了全新的认识,从传统单一的线下教学模式向适应新时期教学改革发展要求的“线上+线下”混合式教学模式的全面推进奠定了基础,提供了宝贵的经验,也可以有效应用到今后的教学实践中。
参考文献
[1]汤显峰,陈亮.以钉钉为基础的移动学习环境研究与设计 计算机时代 2021.4,113-116
[2]嵩天,礼欣,黄天羽.Python语言程序设计基础(第2版)[M].高等教育出版社,2017.
[3]崔庆才.Python3网络爬虫开发实战 2018.4
[4]熊育婷.从线上教学实践到混合式教学模式改革的思考.计算机教育 2021.04,11-14