Skip to content
This repository has been archived by the owner on Jan 9, 2022. It is now read-only.

网易中国大学MOOC视频格式变化了,下载不了了 #37

Open
121786404 opened this issue Oct 13, 2019 · 11 comments
Open

网易中国大学MOOC视频格式变化了,下载不了了 #37

121786404 opened this issue Oct 13, 2019 · 11 comments

Comments

@121786404
Copy link

https://www.icourse163.org/learn/NUDT-1205969803?tid=1206265203

Traceback (most recent call last):
File "mooc.py", line 83, in
main()
File "mooc.py", line 72, in main
mooc.start(args.url, config, cookies)
File "D:\Program\course-crawler\moocs\icourse163.py", line 212, in start
get_resource(term_id)
File "D:\Program\course-crawler\moocs\icourse163.py", line 182, in get_resource
parse_res_list(video_list, rename, parse_resource, playlist.write)
File "D:\Program\course-crawler\moocs\utils.py", line 359, in parse_res_list
res.operation(*operator)
File "D:\Program\course-crawler\moocs\utils.py", line 63, in operation
func(self)
File "D:\Program\course-crawler\moocs\icourse163.py", line 76, in parse_resource
if WORK_DIR.need_download(file_name + ext, CONFIG["overwrite"]):
UnboundLocalError: local variable 'ext' referenced before assignment

video['format'] == 'mp4' 不成立了,变成hls了

@SigureMo
Copy link
Contributor

唔 我看了下这个课程确实不能用,有空我试着改一下,如果急用可以临时使用这个mooc-dl

(仅限临时使用,功能不齐全,而且视频会直接下载,可能出现些小 bug 什么的)

@SigureMo
Copy link
Contributor

算是临时修复了下@1c1d35c8b,但是该修复方式我并不是很满意,因为是使用的旧接口

在去年这个时候网易对视频获取接口进行了变动,旧接口获取的视频 url 全是错误的,但是按照 #27#20 中的方法对视频 url 进行修改是可以获得真实 url 的,但我考虑到这个接口可能在以后某个时刻被彻底放弃掉,就对新接口进行了支持,唯一麻烦的是,新接口需要 cookies ,不过我认为这样更稳妥一些,在几个版本后我彻底删掉了旧接口

现在因为新接口仅支持 m3u8 ,如果不想办法下载并合并的话,新接口是不适合的,所以暂时使用了旧接口

旧接口的使用方法的话,在第一次使用时要求输入 cookies 时按回车即可(注入空的 cookies),如果已经注入了 cookies ,请在运行时增加参数 -c 以重新输入 cookies (也是回车即可)

其实我也是有些其他的解决方案的,比如直接利用上面提到的手机端接口(mooc-dl),但我更倾向于重构整体代码以更好地支持下载器的调用,但限于时间与精力,初步尝试后我还是搁置了,emmmmmm 今后可能也没太多时间关注这边了

@billchenchina
Copy link

再次复现

(venv) $ python mooc.py https://www.icourse163.org/course/BIT-268001
Python语言程序设计 - 北京理工大学
【第0周】课程导学
  0.1 课程基本情况
    【视频】开课彩蛋: 新开始新征程 ...
    【视频】课程定位与目标
    【视频】课程教学安排
    【视频】课程学习建议
    【文档】0.1 课程基本情况
  0.2 全课程内容导学  (必看: 课程内容渐进式体验)
    【视频】课程内容概述
    【视频】课程内容渐进式体验
    【文档】0.2 课程内容导学
(此处由于太长,省略)
------> 实例12-政府工作报告词云源代码.zip
------> 1.1.1 开课彩蛋 新开始新征程 ....mp4
Traceback (most recent call last):
  File "mooc.py", line 87, in <module>
    main()
  File "mooc.py", line 62, in main
    icourse163.start(args.url, config)
  File "/home/billchenchina/桌面/venv/mooc/icourse163.py", line 175, in start
    get_resource(term_id)
  File "/home/billchenchina/桌面/venv/mooc/icourse163.py", line 151, in get_resource
    parse_res_list(video_list, rename, parse_resource, playlist.write)
  File "/home/billchenchina/桌面/venv/mooc/utils.py", line 337, in parse_res_list
    res.operation(*operator)
  File "/home/billchenchina/桌面/venv/mooc/utils.py", line 56, in operation
    func(self)
  File "/home/billchenchina/桌面/venv/mooc/icourse163.py", line 48, in parse_resource
    res_print(file_name + ext)
UnboundLocalError: local variable 'ext' referenced before assignment

@SigureMo
Copy link
Contributor

SigureMo commented Oct 30, 2019

@billchenchina 按我上面的方法重试了吗 更新到我的最新版本 使用参数 -c 清除cookies启动 ,并回车注入空cookies

如果该方法也无效 临时使用上面的 mooc-dl 吧

ps: 学完 Python 可以参与进来呢~我当年也是这门课入门滴:joy:

@billchenchina
Copy link

@billchenchina 按我上面的方法重试了吗 更新到我的最新版本 使用参数-c清除cookies启动 ,并回车注入空cookies

如果该方法也无效 临时使用上面的 mooc-dl吧

ps: 学完 Python 可以参与进来呢~我当年也是这门课入门滴

也无效呢~而且在 mooc.py 里面

from mooc import icourse163

好像少一行
cookies = store_cookies('icourse163.json')
加上也没用😂😂
之前我就用 mooc-dl 来着😂被你 redirect 到的这里
(会参与进来的)

@SigureMo
Copy link
Contributor

SigureMo commented Oct 30, 2019

我想起来啦,mooc-dl 你提过 pr 来着,我说头像有点熟悉的感觉~

不过你看的貌似不是我的分支呢,我的分支看这里,因为 Foair 销声匿迹好久了(我开始关注这个项目之后他就……不见了,之后只出现过一次),我只能在我的分支上做些小修复

如果真的旧接口也无效的话,我只能将比较稳定的手机端接口接进来了(也就是 mooc-dl)

@billchenchina
Copy link

我想起来啦,mooc-dl 你提过 pr 来着,我说头像有点熟悉的感觉~

不过你看的貌似不是我的分支呢,我的分支看这里,因为 Foair 销声匿迹好久了(我开始关注这个项目之后他就……不见了,之后只出现过一次),我只能在我的分支上做些小修复

如果真的旧接口也无效的话,我只能将比较稳定的手机端接口接进来了(也就是 mooc-dl)

介个貌似也不是很星QAQ
image

刚刚做了一下输出调试 qwq,
video['videoUrl']http://jdvodrvfb210d.vod.126.net/mooc-video/nos/hls/{yyyy}/{mm}/{dd}/{something}.m3u8?ak={something} 格式的,video['format']hls

@SigureMo
Copy link
Contributor

我想起来啦,mooc-dl 你提过 pr 来着,我说头像有点熟悉的感觉~
不过你看的貌似不是我的分支呢,我的分支看这里,因为 Foair 销声匿迹好久了(我开始关注这个项目之后他就……不见了,之后只出现过一次),我只能在我的分支上做些小修复
如果真的旧接口也无效的话,我只能将比较稳定的手机端接口接进来了(也就是 mooc-dl)

介个貌似也不是很星QAQ
image

刚刚做了一下输出调试 qwq,
video['videoUrl']http://jdvodrvfb210d.vod.126.net/mooc-video/nos/hls/{yyyy}/{mm}/{dd}/{something}.m3u8?ak={something} 格式的,video['format']hls

行吧……我试了,中 M 真的彻底要拥抱 hls 了应该,这个把每一段下载下来不难、合并也不难,但是不适合放在这个框架里,因为这个框架是同时支持视频自行下载(Video.txt)和即时下载(aria2)的,而且自行下载优先,如果想要支持 m3u8 的话就必须放弃自行下载这种方式,这一点我不是特别想改

后续我可能会把 mooc-dl 接口放进来,但因为它暂时仅支持爱课程账号登录(暂时我只做到了这个)其实有点不太方便,像 mooc-dl 那种内置账号并不是特别合适,所以我的推荐是暂时先用 mooc-dl 过一段时间观察一下我再考虑合并的事

另外,移动端端接口真的好稳定的说,我去年初学那会儿开始到现在近 2 年了,PC 端大改了 2 次了都,移动端还是可用 😂

@czt475297133
Copy link

你好~~我想问下移动端的接口你是在哪里找的?

@czt475297133
Copy link

我想起来啦,mooc-dl 你提过 pr 来着,我说头像有点熟悉的感觉~
不过你看的貌似不是我的分支呢,我的分支看这里,因为 Foair 销声匿迹好久了(我开始关注这个项目之后他就……不见了,之后只出现过一次),我只能在我的分支上做些小修复
如果真的旧接口也无效的话,我只能将比较稳定的手机端接口接进来了(也就是 mooc-dl)

介个貌似也不是很星QAQ
image
刚刚做了一下输出调试 qwq,
video['videoUrl']http://jdvodrvfb210d.vod.126.net/mooc-video/nos/hls/{yyyy}/{mm}/{dd}/{something}.m3u8?ak={something} 格式的,video['format']hls

行吧……我试了,中 M 真的彻底要拥抱 hls 了应该,这个把每一段下载下来不难、合并也不难,但是不适合放在这个框架里,因为这个框架是同时支持视频自行下载(Video.txt)和即时下载(aria2)的,而且自行下载优先,如果想要支持 m3u8 的话就必须放弃自行下载这种方式,这一点我不是特别想改

后续我可能会把 mooc-dl 接口放进来,但因为它暂时仅支持爱课程账号登录(暂时我只做到了这个)其实有点不太方便,像 mooc-dl 那种内置账号并不是特别合适,所以我的推荐是暂时先用 mooc-dl 过一段时间观察一下我再考虑合并的事

另外,移动端端接口真的好稳定的说,我去年初学那会儿开始到现在近 2 年了,PC 端大改了 2 次了都,移动端还是可用 😂

你好~~我想问下移动端的接口你是在哪里找的?

@SigureMo
Copy link
Contributor

@czt475297133 使用 Fiddler 抓包,详情自行搜索引擎搜索「移动端抓包」

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

No branches or pull requests

4 participants