Optimize extract_info: no process=True for YouTube
For YT, processing separate videos greatly increases extract_info time, but unnecessary when obtaining only track title. For Yandex, processing is much faster, and we NEED it to get title.
This commit is contained in:
parent
1eb1e2c827
commit
d0ed29e685
1 changed files with 8 additions and 2 deletions
|
@ -36,6 +36,9 @@ create_ydl_fn = {
|
||||||
|
|
||||||
ydl_fn_keys = create_ydl_fn.keys()
|
ydl_fn_keys = create_ydl_fn.keys()
|
||||||
|
|
||||||
|
# need process=True for track title in extract_info output
|
||||||
|
NP_YDLS = {'yandex'}
|
||||||
|
|
||||||
|
|
||||||
class Downloader:
|
class Downloader:
|
||||||
|
|
||||||
|
@ -51,6 +54,7 @@ class Downloader:
|
||||||
}
|
}
|
||||||
|
|
||||||
self.cur_ydl: YoutubeDL | None = None
|
self.cur_ydl: YoutubeDL | None = None
|
||||||
|
self.cur_site = ''
|
||||||
|
|
||||||
self.progress_cb = progress_cb
|
self.progress_cb = progress_cb
|
||||||
self.lyrics_cb = lyrics_cb
|
self.lyrics_cb = lyrics_cb
|
||||||
|
@ -71,6 +75,7 @@ class Downloader:
|
||||||
ydl.params['cookiefile'] = str(cookies)
|
ydl.params['cookiefile'] = str(cookies)
|
||||||
|
|
||||||
self.cur_ydl = ydl
|
self.cur_ydl = ydl
|
||||||
|
self.cur_site = site
|
||||||
|
|
||||||
def get_cur_ydl(self) -> YoutubeDL:
|
def get_cur_ydl(self) -> YoutubeDL:
|
||||||
|
|
||||||
|
@ -86,12 +91,13 @@ class Downloader:
|
||||||
Downloader._target_get_playlist_items,
|
Downloader._target_get_playlist_items,
|
||||||
self.get_cur_ydl(),
|
self.get_cur_ydl(),
|
||||||
url,
|
url,
|
||||||
|
self.cur_site in NP_YDLS,
|
||||||
)
|
)
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def _target_get_playlist_items(ydl: YoutubeDL, url: str) -> list[str]:
|
def _target_get_playlist_items(ydl: YoutubeDL, url: str, process: bool) -> list[str]:
|
||||||
|
|
||||||
info = ydl.extract_info(url, download=False, process=True)
|
info = ydl.extract_info(url, download=False, process=process)
|
||||||
if info is None:
|
if info is None:
|
||||||
raise RuntimeError('ydl.extract_info returned None')
|
raise RuntimeError('ydl.extract_info returned None')
|
||||||
return [
|
return [
|
||||||
|
|
Loading…
Add table
Reference in a new issue