“自音版”小马宝莉折腾记

家里小公主喜欢小马宝莉,汪汪队等动画片,但为了保护视力,也不能一直给她看啊。于是在喜马拉雅里面寻找故事给她听,可她又提出新要求,要听动画原声,还发明了一个词汇,叫“自音”,说要听“小马宝莉自音”的。“自音”就是自己说话发音的,不要听别人讲的。

其实难不倒技术宅老爹,只要给老爹时间,不就是“自音”的么,这还不简单。

下载视频网站上的视频有个大杀器叫 you-get,这个脚本宇宙无敌,支持各种视频网站上的链接解析和下载。为了避免问题,必须使用github上的最新版本,谁让视频网站三天两头修改视频链接加密算法呢。

有了这个脚本,还需要一些自动化工具,一集一集的下载视频太累了,不是技术宅的风格。要下载,就要连锅端,下就下整部剧。那么问题来了,怎么获得整部剧集的链接?在Youku上找来找去,还真有个简单的方法。

我们在youku上搜索视频,如果直接点进去,那么一般是会直接进入播放第一集或者某一集的界面。这里不太方便获取每一集的播放链接。我们需要一个界面,列出了每一集的播放链接。这个界面就在“剧情简介”-》“查看详情”的一个链接里面,这个页面的格式类似: http://list.youku.com/show/id_z289c519a05cb11e69e2a.html?spm=a2h0k.8191407.0.0 ,在这里里面有“剧集列表”,我们需要找到得到这个剧集列表的方法。

用chrome F12调试一下页面,不难发现这个剧集列表是js调用一个类似链接获取的:

http://list.youku.com/show/episode?id=306170&stage=reload_21&callback=jQuery111207579820662716203_1504226273929&_=1504226273934

这里我们试着自己调用一下该链接,发现会返回具体的剧集信息。看看每个字段都是啥含义?id估计是这部剧集的id,stage可以看到是起始编号,callback是不是可以随便写?果然,callback设置成别的值不影响结果。

id的获取可以从该页面的源码中得到,找 “showid=xxxxx” 得到xxxxx的ID即可。

有了这些信息,写一个工具爬下来整部剧集轻而易举了。

至于怎么写这个工具,不用多说了,我都写好放在这里 了。

动画片都端下来了,弄成“自音版”还费啥劲,随手一个调用ffmpeg的脚本就搞定了。

1
2
3
4
5
6
7
8
9
10
11
12
#!/bin/bash
for file in ./*.mp4
do
audio=$(basename "$file" .mp4)
ffmpeg -i "$file" -f mp3 -ab 192000 -vn "$audio.mp3"
done
for file in ./*.flv
do
audio=$(basename "$file" .flv)
ffmpeg -i "$file" -f mp3 -ab 192000 -vn "$audio.mp3"
done

目测一大堆“自音版”动画片已经在路上。。。。。。