从coursera网站自动下载网课视频(Linux中bash操作)

从coursera.org上下载网课视频比慕课网更简单,只需要获取课程的地址就可以下载,但是由于网速慢的原因,下载比较耗时。直接上操作步骤:

1.准备工作:新建一个文件夹getvideo,进去之后建立一个文本文件urllist,用于存放下载地址列表,方便批量下载。该文件一行一个地址。
2.打开coursera.org,注册登录进去,开始课程!注意不需要付费!以Intro to International Marketing为例,打开https://www.coursera.org/learn/intro-international-marketing后可以看到有3周课程。
从coursera网站自动下载网课视频(Linux中bash操作)_第1张图片
3.点击查看全部,可以看到周1一共有6个视频,但是只有第一个可以点击。
从coursera网站自动下载网课视频(Linux中bash操作)_第2张图片
4.点击第一个视频,进入第一周。在页面最下方会出现这一周所有课程的视频链接。复制这些链接到urllist文件中,一行一个url。以此类推,可以把3周的课程视频链接全部放进去。
从coursera网站自动下载网课视频(Linux中bash操作)_第3张图片
5.新建getcoursera.sh 文件,复制下面的脚本文件。保存,修改属性,添加执行权限。

#!/bin/bash
##########该工具仅限学习交流使用,不可用于其他目的,一切后果自负##########
######################by Nautilus,20200302######################
###################在coursera.org网自动下载所需视频#################

#####urllist 文件需配置地址
#url="https://www.coursera.org/lecture/intro-international-marketing/introduction-to-specialization-RmskU"

function getVideo(){
     
#建立临时文件夹
randompath=$(date +%s%N)$RANDOM
mkdir "./.${randompath}"
cd "./.${randompath}"

##获取文件url
wget -O htmltmp $1

#文件名
title=`grep -oP "videoName\".*?.h1" htmltmp`
title=${title%\<*}
title=${
     title#*\>}
title=${
     title//" "/"_"}

#视频地址
videourl=`grep -oP "mp4VideoUrl.*?.720p.*?.mp4.*?.\"" htmltmp`
videourl=${
     videourl#*mp4VideoUrl\":\"}
videourl=${
     videourl%\"*}
videourl=${videourl//"\\u002F"/"/"}

#字幕地址
suburl1=`grep -oP "zh-CN\":\".*?.srt\"" htmltmp`
suburl1=${suburl1#*zh-CN\":\"}
suburl1=${suburl1%\"*}
suburl1=${suburl1//"\\u002F"/"/"}

suburl2=`grep -oP "\"en\":\".*?.srt\"" htmltmp`
suburl2=${suburl2#*\"en\":\"}
suburl2=${suburl2%\"*}
suburl2=${suburl2//"\\u002F"/"/"}

##下载文件
wget -O "${title}tmp.mp4" $videourl
wget -O zhcn.srt "https://www.coursera.org${suburl1}"
wget -O eng.srt "https://www.coursera.org${suburl2}"

#合并处理
ffmpeg -i "${title}tmp.mp4" -i zhcn.srt -i eng.srt -map 0:v -map 0:a -map 1 -map 2  -c:v copy -c:a copy -c:s mov_text -metadata:s:s:0 language=chn -metadata:s:s:1 language=eng "../${title}.mp4"


#扫尾处理
cd "../"
rm -r "./.${randompath}"
}

###
FILENAME="urllist"
for   i  in  `cat $FILENAME` 
do 
getVideo $i
done

6.执行bash,自动获取所有视频。

注意:该脚本仅供学习参考,不能用于任何非法行为!不当使用,后果自负!

你可能感兴趣的:(Linux,bash,linux,bash,视频处理)