youtube-dlc를 yt-dlp로 변경

This commit is contained in:
joyfuI
2021-01-22 14:56:53 +09:00
parent b443aaeff5
commit 342263d153
5 changed files with 38 additions and 13 deletions

View File

@@ -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 ## API
### 공통사항 ### 공통사항
@@ -133,6 +133,11 @@ API를 제공합니다. 다른 플러그인에서 동영상 정보나 다운로
물론 해당 정보가 없으면 null입니다. 물론 해당 정보가 없으면 null입니다.
## Changelog ## Changelog
v2.3.0
* youtube-dlc를 yt-dlp로 변경
youtube-dlc가 2개월 넘게 커밋이 없어서 youtube-dlc의 포크 프로젝트인 yt-dlp로 변경했습니다.
기존에 youtube-dlc로 사용하던 분들은 yt-dlp로 변경됩니다.
v2.2.0 v2.2.0
* download API의 headers 키 제거 * download API의 headers 키 제거

View File

@@ -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"} {"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"}

View File

@@ -6,6 +6,7 @@ import sys
import platform import platform
import subprocess import subprocess
import traceback import traceback
import sqlite3
# third-party # third-party
@@ -21,7 +22,7 @@ from .model import ModelSetting
class Logic(object): class Logic(object):
db_default = { db_default = {
'db_version': '1', 'db_version': '2',
'youtube_dl_package': '0', 'youtube_dl_package': '0',
'ffmpeg_path': '' if platform.system() != 'Windows' else os.path.join(path_app_root, 'bin', 'Windows', 'ffmpeg.exe'), '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'), '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: if db.session.query(ModelSetting).filter_by(key=key).count() == 0:
db.session.add(ModelSetting(key, value)) db.session.add(ModelSetting(key, value))
db.session.commit() db.session.commit()
# Logic.migration() Logic.migration()
except Exception as e: except Exception as e:
logger.error('Exception:%s', e) logger.error('Exception:%s', e)
logger.error(traceback.format_exc()) logger.error(traceback.format_exc())
@@ -75,3 +76,21 @@ class Logic(object):
except Exception as e: except Exception as e:
logger.error('Exception:%s', e) logger.error('Exception:%s', e)
logger.error(traceback.format_exc()) 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())

View File

@@ -16,12 +16,13 @@ class LogicNormal(object):
youtube_dl_list = [] youtube_dl_list = []
@staticmethod @staticmethod
def get_youtube_dl_package(index=None): def get_youtube_dl_package(index=None, import_pkg=False):
packages = ['youtube-dl', 'youtube-dlc'] packages = ['youtube-dl', 'yt-dlp']
if index is None: import_name = ['youtube_dl', 'youtube_dlc']
return packages if import_pkg:
return import_name if index is None else import_name[int(index)]
else: else:
return packages[int(index)].replace('-', '_') return packages if index is None else packages[int(index)]
@staticmethod @staticmethod
def get_youtube_dl_version(): def get_youtube_dl_version():

View File

@@ -20,7 +20,7 @@ package_name = __name__.split('.')[0]
logger = get_logger(package_name) logger = get_logger(package_name)
from .logic import Logic from .logic import Logic
from .logic_normal import LogicNormal 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 from .model import ModelSetting
######################################################### #########################################################
@@ -45,7 +45,7 @@ menu = {
} }
plugin_info = { plugin_info = {
'version': '2.2.0', 'version': '2.3.0',
'name': 'youtube-dl', 'name': 'youtube-dl',
'category_name': 'vod', 'category_name': 'vod',
'developer': 'joyfuI', 'developer': 'joyfuI',
@@ -57,7 +57,7 @@ plugin_info = {
def plugin_load(): def plugin_load():
Logic.plugin_load() Logic.plugin_load()
global YOUTUBE_DL_PACKAGE 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(): def plugin_unload():
Logic.plugin_unload() Logic.plugin_unload()