Skip to content
This repository has been archived by the owner on Dec 30, 2020. It is now read-only.

Commit

Permalink
Support aria2
Browse files Browse the repository at this point in the history
增加对视频直接送入aria2下载的支持,参数说明如下:
--aria2=<aria2_path>
aria2c程序所在位置,比如:D:/aria2/aria2/aria2c.exe,如果已经加入环境变量可直接使用aria2c.exe
--aria2-webui=<aria2_webui>
aria2-webui所在路径,比如:D:/aria2/webui-aria2/index.html
--aria2-session<aria2_session> aria2-session所在路径,方便保存未完成的任务,比如:D:aria2/aria2/aria2.session
  • Loading branch information
SigureMo committed Nov 17, 2018
1 parent 6f8b7ae commit ae32e96
Show file tree
Hide file tree
Showing 10 changed files with 72 additions and 1 deletion.
6 changes: 5 additions & 1 deletion mooc.py
Expand Up @@ -54,12 +54,16 @@ def main():
parser.add_argument('--no-file', action='store_false', help='不下载附件')
parser.add_argument('--no-text', action='store_false', help='不下载富文本')
parser.add_argument('--no-dpl', action='store_false', help='不生成播放列表')
parser.add_argument('--aria2', default=None, help='aria2路径,配置后自动调用aria2下载视频')
parser.add_argument('--aria2-webui', default=None, help='aria2-webui路径,配置后自动开启webui')
parser.add_argument('--aria2-session', default=None, help='aria2-session路径,配置后将未完成任务保存至session中')

args = parser.parse_args()
resolutions = ['shd', 'hd', 'sd']

config = {'doc': args.no_doc, 'sub': args.no_sub, 'file': args.no_file, 'text': args.no_text, 'dpl': args.no_dpl,
'cookies': args.c, 'rename': args.inter, 'dir': args.d, 'resolution': resolutions.index(args.r.lower())}
'cookies': args.c, 'rename': args.inter, 'dir': args.d, 'resolution': resolutions.index(args.r.lower()),
'aria2': args.aria2, 'aria2-webui': args.aria2_webui, 'aria2-session': args.aria2_session}

if re.match(r'https?://www.icourse163.org/(spoc/)?(course|learn)/', args.url):
from mooc import icourse163
Expand Down
5 changes: 5 additions & 0 deletions mooc/cnmooc.py
Expand Up @@ -138,3 +138,8 @@ def start(url, config, cookies=None):

if CONFIG['doc']:
get_doc(resource[1])

if CONFIG['aria2']:
del FILES['video']
WORK_DIR.change('Videos')
aria2_download(CONFIG['aria2'], WORK_DIR.path, webui=CONFIG['aria2-webui'], session=CONFIG['aria2-session'])
5 changes: 5 additions & 0 deletions mooc/icourse163.py
Expand Up @@ -212,3 +212,8 @@ def start(url, config, cookies):
FILES['video'] = ClassicFile(WORK_DIR.file('Videos.txt'))

get_resource(course_info[0])

if CONFIG['aria2']:
del FILES['video']
WORK_DIR.change('Videos')
aria2_download(CONFIG['aria2'], WORK_DIR.path, webui=CONFIG['aria2-webui'], session=CONFIG['aria2-session'])
5 changes: 5 additions & 0 deletions mooc/icourses.py
Expand Up @@ -74,3 +74,8 @@ def start(url, config):
parse_res_list(video_list, rename, FILES['playlist'].write, parse_video)
else:
parse_res_list(video_list, rename, parse_video)

if CONFIG['aria2']:
del FILES['video']
WORK_DIR.change('Videos')
aria2_download(CONFIG['aria2'], WORK_DIR.path, webui=CONFIG['aria2-webui'], session=CONFIG['aria2-session'])
5 changes: 5 additions & 0 deletions mooc/livedu.py
Expand Up @@ -173,3 +173,8 @@ def start(url, config, cookies=None):

# 获得资源
get_resource(course_info[0])

if CONFIG['aria2']:
del FILES['video']
WORK_DIR.change('Videos')
aria2_download(CONFIG['aria2'], WORK_DIR.path, webui=CONFIG['aria2-webui'], session=CONFIG['aria2-session'])
5 changes: 5 additions & 0 deletions mooc/open_163.py
Expand Up @@ -178,3 +178,8 @@ def start(url, config, cookies=None):

# 获得资源
get_resource(course_info[0])

if CONFIG['aria2']:
del FILES['video']
WORK_DIR.change('Videos')
aria2_download(CONFIG['aria2'], WORK_DIR.path, webui=CONFIG['aria2-webui'], session=CONFIG['aria2-session'])
5 changes: 5 additions & 0 deletions mooc/study_163.py
Expand Up @@ -197,3 +197,8 @@ def start(url, config, cookies=None):

# 获得资源
get_resource(course_info[0])

if CONFIG['aria2']:
del FILES['video']
WORK_DIR.change('Videos')
aria2_download(CONFIG['aria2'], WORK_DIR.path, webui=CONFIG['aria2-webui'], session=CONFIG['aria2-session'])
5 changes: 5 additions & 0 deletions mooc/study_mooc.py
Expand Up @@ -218,3 +218,8 @@ def start(url, config, cookies=None):

# 获得资源
get_resource(course_info[0])

if CONFIG['aria2']:
del FILES['video']
WORK_DIR.change('Videos')
aria2_download(CONFIG['aria2'], WORK_DIR.path, webui=CONFIG['aria2-webui'], session=CONFIG['aria2-session'])
27 changes: 27 additions & 0 deletions mooc/utils.py
Expand Up @@ -4,6 +4,7 @@
import re
import os
import requests
import subprocess

SYS = os.name

Expand Down Expand Up @@ -336,3 +337,29 @@ def parse_res_list(res_list, file, *operator):
else:
for res in res_list:
res.operation(*operator)

def aria2_download(aria2_path, workdir, webui=None, session=None):
input_file = os.path.join(workdir, 'Videos.txt')

if webui:
cmd = '"C:\Program Files (x86)\Google\Chrome\Application\chrome.exe"' \
' --flag-switches-begin' \
' --flag-switches-end' \
' %s' % webui
subprocess.Popen(cmd, shell=True, stdout=subprocess.PIPE)

cmd = '"%s"' \
' --enable-rpc' \
' --rpc-listen-port 6800' \
' --continue' \
' --dir="%s"'\
' --input-file="%s"'\
' --max-concurrent-downloads=20' \
' --max-connection-per-server=10' \
' --rpc-max-request-size=1024M' % (aria2_path, workdir, input_file)

if session:
cmd += ' --save-session=%s' \
' --save-session-interval=60' % session
print('正在使用aria2下载视频...')
subprocess.run(cmd, shell=True, stdout=subprocess.PIPE)
5 changes: 5 additions & 0 deletions mooc/xuetangx.py
Expand Up @@ -208,3 +208,8 @@ def start(url, config, cookies=None):

get_handout(handout)
get_content(courseware)

if CONFIG['aria2']:
del FILES['video']
WORK_DIR.change('Videos')
aria2_download(CONFIG['aria2'], WORK_DIR.path, webui=CONFIG['aria2-webui'], session=CONFIG['aria2-session'])

0 comments on commit ae32e96

Please sign in to comment.