v1.3.2 파일명에 경로 지정 시 이미 존재하는 경로면 에러가 발생하는 문제 수정
파일명에 경로 지정 시 이미 존재하는 경로면 에러가 발생하는 문제 수정 celery 적용
This commit is contained in:
@@ -71,8 +71,8 @@ API에선 직접 비트레이트를 설정할 수 있습니다.
|
||||
`save_path` | 저장 폴더 경로. 미지정 시 사용자 설정 | X | String
|
||||
`format_code` | 동영상 포맷. 포맷 지정은 https://github.com/ytdl-org/youtube-dl/blob/master/README.md#format-selection 참고. 미지정 시 최고 화질 | X | String
|
||||
`preferedformat` | 변환할 비디오 포맷. 가능한 포맷은 https://ffmpeg.org/general.html#File-Formats 참고. 미지정 시 변환하지 않음 | X | String
|
||||
`preferredcodec` | 추출할 오디오 코덱. 가능한 값은 `"mp3"`, `"aac"`, `"flac"`, `"m4a"`, `"opus"`, `"vorbis"`, `"wav"`. 미지정 시 추출하지 않음 | X | String
|
||||
`preferredquality` | 추출한 오디오의 비트레이트. `preferredcodec` 키가 있을 때만 유효. 기본값: `"192"` | X | String
|
||||
`preferredcodec` | 추출할 오디오 코덱. 가능한 값은 `"best"`, `"mp3"`, `"aac"`, `"flac"`, `"m4a"`, `"opus"`, `"vorbis"`, `"wav"`. 미지정 시 추출하지 않음 | X | String
|
||||
`preferredquality` | 추출한 오디오의 비트레이트. 0 ~ 9 사이의 VBR 퀄리티 값(0에 가까울수록 좋음) 혹은 특정 비트레이트 값. `preferredcodec` 키가 있을 때만 유효. 기본값: `"192"` | X | String
|
||||
`start` | 다운로드 준비 후 바로 다운로드를 시작할지 여부. 기본값: `false` | X | Boolean
|
||||
#### Response
|
||||
키 | 설명 | 타입
|
||||
@@ -130,6 +130,10 @@ API에선 직접 비트레이트를 설정할 수 있습니다.
|
||||
물론 해당 정보가 없으면 null입니다.
|
||||
|
||||
## Changelog
|
||||
v1.3.2
|
||||
* 파일명에 경로 지정 시 이미 존재하는 경로면 에러가 발생하는 문제 수정
|
||||
* celery 적용
|
||||
|
||||
v1.3.1
|
||||
|
||||
v1.3.0
|
||||
|
||||
@@ -1 +1 @@
|
||||
{"description": "\uc720\ud29c\ube0c, \ub124\uc774\ubc84TV \ub4f1 \ub3d9\uc601\uc0c1 \uc0ac\uc774\ud2b8\uc5d0\uc11c \ub3d9\uc601\uc0c1 \ub2e4\uc6b4\ub85c\ub4dc", "name": "youtube-dl", "more": "", "version": "1.3.1", "home": "https://github.com/joyfuI/youtube-dl", "category_name": "vod", "developer": "joyfuI"}
|
||||
{"description": "\uc720\ud29c\ube0c, \ub124\uc774\ubc84TV \ub4f1 \ub3d9\uc601\uc0c1 \uc0ac\uc774\ud2b8\uc5d0\uc11c \ub3d9\uc601\uc0c1 \ub2e4\uc6b4\ub85c\ub4dc", "name": "youtube-dl", "more": "", "version": "1.3.2", "home": "https://github.com/joyfuI/youtube-dl", "category_name": "vod", "developer": "joyfuI"}
|
||||
2
model.py
2
model.py
@@ -6,7 +6,7 @@ import os
|
||||
# third-party
|
||||
|
||||
# sjva 공용
|
||||
from framework import db, app, path_app_root
|
||||
from framework import app, db, path_app_root
|
||||
|
||||
# 패키지
|
||||
from .plugin import package_name
|
||||
|
||||
@@ -4,9 +4,8 @@ from __future__ import unicode_literals
|
||||
# python
|
||||
import os
|
||||
import traceback
|
||||
import shutil
|
||||
import tempfile
|
||||
import glob
|
||||
# import glob2
|
||||
from threading import Thread
|
||||
import json
|
||||
from datetime import datetime
|
||||
@@ -15,9 +14,24 @@ from enum import Enum
|
||||
# third-party
|
||||
import youtube_dl
|
||||
|
||||
# 패키지
|
||||
# sjva 공용, 패키지
|
||||
import framework.common.celery as celery_shutil
|
||||
from .plugin import logger
|
||||
|
||||
try:
|
||||
import glob2
|
||||
except Exception as e:
|
||||
import subprocess
|
||||
import platform
|
||||
# glob2 설치
|
||||
logger.debug('glob2 install')
|
||||
if platform.system() == 'Windows': # 윈도우일 때
|
||||
pip = 'pip.exe'
|
||||
else:
|
||||
pip = 'pip'
|
||||
logger.debug(subprocess.check_output([pip, 'install', 'glob2'], universal_newlines=True))
|
||||
import glob2
|
||||
|
||||
class Status(Enum):
|
||||
READY = 0
|
||||
START = 1
|
||||
@@ -111,15 +125,20 @@ class Youtube_dl(object):
|
||||
with youtube_dl.YoutubeDL(ydl_opts) as ydl:
|
||||
ydl.download([self.url])
|
||||
if self.status == Status.FINISHED: # 다운로드 성공
|
||||
for i in glob.glob(self.temp_path + '/*'):
|
||||
shutil.move(i, self.save_path) # 파일 이동
|
||||
for i in glob2.glob(self.temp_path + '/**/*'):
|
||||
path = i.replace(self.temp_path, self.save_path, 1)
|
||||
if os.path.isdir(i):
|
||||
if not os.path.isdir(path):
|
||||
os.mkdir(path)
|
||||
continue
|
||||
celery_shutil.move(i, path) # 파일 이동
|
||||
self.status = Status.COMPLETED
|
||||
except Exception as e:
|
||||
self.status = Status.ERROR
|
||||
logger.error('Exception:%s', e)
|
||||
logger.error(traceback.format_exc())
|
||||
finally:
|
||||
shutil.rmtree(self.temp_path, ignore_errors=True) # 임시폴더 삭제
|
||||
celery_shutil.rmtree(self.temp_path) # 임시폴더 삭제
|
||||
self.end_time = datetime.now()
|
||||
|
||||
def stop(self):
|
||||
|
||||
Reference in New Issue
Block a user