diff --git a/README.md b/README.md index 8e0d029..bd38506 100644 --- a/README.md +++ b/README.md @@ -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 diff --git a/info.json b/info.json index 3c13535..da68468 100644 --- a/info.json +++ b/info.json @@ -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"} \ No newline at end of file +{"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"} \ No newline at end of file diff --git a/model.py b/model.py index 5adf10f..d9af172 100644 --- a/model.py +++ b/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 diff --git a/my_youtube_dl.py b/my_youtube_dl.py index 4a359ea..f70ff6c 100644 --- a/my_youtube_dl.py +++ b/my_youtube_dl.py @@ -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): diff --git a/plugin.py b/plugin.py index dd89be7..a776461 100644 --- a/plugin.py +++ b/plugin.py @@ -36,7 +36,7 @@ menu = { } plugin_info = { - 'version': '1.3.1', + 'version': '1.3.2', 'name': 'youtube-dl', 'category_name': 'vod', 'developer': 'joyfuI',