youtube-dlc를 yt-dlp로 변경
This commit is contained in:
@@ -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 키 제거
|
||||||
|
|
||||||
|
|||||||
@@ -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"}
|
||||||
23
logic.py
23
logic.py
@@ -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())
|
||||||
|
|||||||
@@ -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():
|
||||||
|
|||||||
@@ -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()
|
||||||
|
|||||||
Reference in New Issue
Block a user