diff --git a/README.md b/README.md index a7d04df..9f2102c 100644 --- a/README.md +++ b/README.md @@ -13,8 +13,8 @@ API를 제공합니다. 다른 플러그인에서 동영상 정보나 다운로 다른 플러그인이 멋대로 다운로드를 중지할 수 없도록 다운로드를 요청할 때 임의의 키를 넘겨받습니다. 이 중지 요청 시 키가 일치해야 요청이 실행됩니다. 과연 이걸로 뭔가를 만드실 분이 계실지... -[youtube-dl](https://github.com/ytdl-org/youtube-dl)의 DMCA 테이크다운 이후, 업데이트 속도가 느려진 것 같아서 youtube-dl의 포크 프로젝트인 [youtube-dlc](https://github.com/blackjack4494/yt-dlc)를 추가했습니다. -설정에서 취향껏 골라서 사용하시면 됩니다. +[youtube-dl](https://github.com/ytdl-org/youtube-dl)의 DMCA 테이크다운 사태 이후, 비슷한 상황을 대비하기 위해 youtube-dl의 포크 프로젝트 [youtube-dlc](https://github.com/blackjack4494/yt-dlc)의 포크 프로젝트(...)인 [yt-dlp](https://github.com/pukkandan/yt-dlp)를 추가했습니다. +설정에서 취향껏 골라서 사용하시면 되며 youtube-dl 외에는 곁다리 지원이라 작동하지 않거나 우선순위에서 밀릴 수 있습니다. ## API ### 공통사항 @@ -133,6 +133,11 @@ API를 제공합니다. 다른 플러그인에서 동영상 정보나 다운로 물론 해당 정보가 없으면 null입니다. ## Changelog +v2.3.0 +* youtube-dlc를 yt-dlp로 변경 + youtube-dlc가 2개월 넘게 커밋이 없어서 youtube-dlc의 포크 프로젝트인 yt-dlp로 변경했습니다. + 기존에 youtube-dlc로 사용하던 분들은 yt-dlp로 변경됩니다. + v2.2.0 * download API의 headers 키 제거 diff --git a/info.json b/info.json index 5a7a43f..96e1b2b 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": "2.2.0", "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": "2.3.0", "home": "https://github.com/joyfuI/youtube-dl", "category_name": "vod", "developer": "joyfuI"} \ No newline at end of file diff --git a/logic.py b/logic.py index 4c22076..7f808c7 100644 --- a/logic.py +++ b/logic.py @@ -6,6 +6,7 @@ import sys import platform import subprocess import traceback +import sqlite3 # third-party @@ -21,7 +22,7 @@ from .model import ModelSetting class Logic(object): db_default = { - 'db_version': '1', + 'db_version': '2', 'youtube_dl_package': '0', 'ffmpeg_path': '' if platform.system() != 'Windows' else os.path.join(path_app_root, 'bin', 'Windows', 'ffmpeg.exe'), 'temp_path': os.path.join(path_data, 'download_tmp'), @@ -38,7 +39,7 @@ class Logic(object): if db.session.query(ModelSetting).filter_by(key=key).count() == 0: db.session.add(ModelSetting(key, value)) db.session.commit() - # Logic.migration() + Logic.migration() except Exception as e: logger.error('Exception:%s', e) logger.error(traceback.format_exc()) @@ -75,3 +76,21 @@ class Logic(object): except Exception as e: logger.error('Exception:%s', e) logger.error(traceback.format_exc()) + + @staticmethod + def migration(): + try: + db_version = ModelSetting.get_int('db_version') + connect = sqlite3.connect(os.path.join(path_data, 'db', '%s.db' % package_name)) + + if db_version < 2: + logger.debug('youtube-dlc uninstall') + logger.debug(subprocess.check_output([sys.executable, '-m', 'pip', 'uninstall', '-y', 'youtube-dlc'], universal_newlines=True)) + + connect.commit() + connect.close() + ModelSetting.set('db_version', Logic.db_default['db_version']) + db.session.flush() + except Exception as e: + logger.error('Exception:%s', e) + logger.error(traceback.format_exc()) diff --git a/logic_normal.py b/logic_normal.py index c8267f9..bbcc605 100644 --- a/logic_normal.py +++ b/logic_normal.py @@ -16,12 +16,13 @@ class LogicNormal(object): youtube_dl_list = [] @staticmethod - def get_youtube_dl_package(index=None): - packages = ['youtube-dl', 'youtube-dlc'] - if index is None: - return packages + def get_youtube_dl_package(index=None, import_pkg=False): + packages = ['youtube-dl', 'yt-dlp'] + import_name = ['youtube_dl', 'youtube_dlc'] + if import_pkg: + return import_name if index is None else import_name[int(index)] else: - return packages[int(index)].replace('-', '_') + return packages if index is None else packages[int(index)] @staticmethod def get_youtube_dl_version(): diff --git a/plugin.py b/plugin.py index 1801648..2f7b17d 100644 --- a/plugin.py +++ b/plugin.py @@ -20,7 +20,7 @@ package_name = __name__.split('.')[0] logger = get_logger(package_name) from .logic import Logic from .logic_normal import LogicNormal -YOUTUBE_DL_PACKAGE = LogicNormal.get_youtube_dl_package(Logic.db_default['youtube_dl_package']) +YOUTUBE_DL_PACKAGE = LogicNormal.get_youtube_dl_package(Logic.db_default['youtube_dl_package'], import_pkg=True) from .model import ModelSetting ######################################################### @@ -45,7 +45,7 @@ menu = { } plugin_info = { - 'version': '2.2.0', + 'version': '2.3.0', 'name': 'youtube-dl', 'category_name': 'vod', 'developer': 'joyfuI', @@ -57,7 +57,7 @@ plugin_info = { def plugin_load(): Logic.plugin_load() global YOUTUBE_DL_PACKAGE - YOUTUBE_DL_PACKAGE = LogicNormal.get_youtube_dl_package(ModelSetting.get('youtube_dl_package')) + YOUTUBE_DL_PACKAGE = LogicNormal.get_youtube_dl_package(ModelSetting.get('youtube_dl_package'), import_pkg=True) def plugin_unload(): Logic.plugin_unload()