자막 다운로드 기능(+API) 추가

This commit is contained in:
joyfuI
2021-04-27 21:54:48 +09:00
parent 0cf53d3093
commit d04a71a348
5 changed files with 187 additions and 2 deletions

View File

@@ -41,7 +41,8 @@ if ModelSetting.get_bool('activate_cors'):
menu = {
'main': [package_name, 'youtube-dl'],
'sub': [
['setting', '설정'], ['download', '다운로드'], ['thumbnail', '썸네일 다운로드'], ['list', '목록'], ['log', '로그']
['setting', '설정'], ['download', '다운로드'], ['thumbnail', '썸네일 다운로드'], ['sub', '자막 다운로드'], ['list', '목록'],
['log', '로그']
],
'category': 'vod'
}
@@ -103,6 +104,11 @@ def first_menu(sub):
arg['filename'] = default_filename if default_filename else LogicNormal.get_default_filename()
return render_template('%s_%s.html' % (package_name, sub), arg=arg)
elif sub == 'sub':
default_filename = ModelSetting.get('default_filename')
arg['filename'] = default_filename if default_filename else LogicNormal.get_default_filename()
return render_template('%s_%s.html' % (package_name, sub), arg=arg)
elif sub == 'list':
return render_template('%s_%s.html' % (package_name, sub), arg=arg)
@@ -175,6 +181,21 @@ def ajax(sub):
socketio_emit('add', youtube_dl)
return jsonify([])
elif sub == 'sub':
youtube_dl = LogicNormal.sub(plugin=package_name,
url=request.form['url'],
filename=request.form['filename'],
temp_path=ModelSetting.get('temp_path'),
save_path=ModelSetting.get('save_path'),
all_subs=request.form['all_subs'],
sub_lang=request.form['sub_lang'],
auto_sub=request.form['auto_sub'],
proxy=ModelSetting.get('proxy'),
ffmpeg_path=ModelSetting.get('ffmpeg_path'))
youtube_dl.start()
socketio_emit('add', youtube_dl)
return jsonify([])
elif sub == 'list':
ret = []
for i in LogicNormal.youtube_dl_list:
@@ -316,6 +337,51 @@ def api(sub):
socketio_emit('add', youtube_dl)
return jsonify(ret)
# 자막 다운로드 준비를 요청하는 API
elif sub == 'sub':
key = request.values.get('key')
url = request.values.get('url')
filename = request.values.get('filename', ModelSetting.get('default_filename'))
save_path = request.values.get('save_path', ModelSetting.get('save_path'))
all_subs = request.values.get('all_subs', False)
sub_lang = request.values.get('sub_lang', 'ko')
auto_sub = request.values.get('all_subs', False)
dateafter = request.values.get('dateafter', None)
archive = request.values.get('archive', None)
start = request.values.get('start', False)
cookiefile = request.values.get('cookiefile', None)
ret = {
'errorCode': 0,
'index': None
}
if None in (key, url):
return LogicNormal.abort(ret, 1) # 필수 요청 변수가 없음
if not url.startswith('http'):
return LogicNormal.abort(ret, 2) # 잘못된 동영상 주소
if not filename:
filename = LogicNormal.get_default_filename()
youtube_dl = LogicNormal.sub(plugin=plugin,
url=url,
filename=filename,
temp_path=ModelSetting.get('temp_path'),
save_path=save_path,
all_subs=all_subs,
sub_lang=sub_lang,
auto_sub=auto_sub,
dateafter=dateafter,
archive=archive,
proxy=ModelSetting.get('proxy'),
ffmpeg_path=ModelSetting.get('ffmpeg_path'),
key=key,
cookiefile=cookiefile)
if youtube_dl is None:
return LogicNormal.abort(ret, 10) # 실패
ret['index'] = youtube_dl.index
if start:
youtube_dl.start()
socketio_emit('add', youtube_dl)
return jsonify(ret)
# 다운로드 시작을 요청하는 API
elif sub == 'start':
index = request.values.get('index')