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:
DarkCat09 2024-05-06 21:07:19 +04:00
parent 1eb1e2c827
commit d0ed29e685
Signed by: DarkCat09
GPG key ID: 0A26CD5B3345D6E3

View file

@ -36,6 +36,9 @@ create_ydl_fn = {
ydl_fn_keys = create_ydl_fn.keys()
# need process=True for track title in extract_info output
NP_YDLS = {'yandex'}
class Downloader:
@ -51,6 +54,7 @@ class Downloader:
}
self.cur_ydl: YoutubeDL | None = None
self.cur_site = ''
self.progress_cb = progress_cb
self.lyrics_cb = lyrics_cb
@ -71,6 +75,7 @@ class Downloader:
ydl.params['cookiefile'] = str(cookies)
self.cur_ydl = ydl
self.cur_site = site
def get_cur_ydl(self) -> YoutubeDL:
@ -86,12 +91,13 @@ class Downloader:
Downloader._target_get_playlist_items,
self.get_cur_ydl(),
url,
self.cur_site in NP_YDLS,
)
@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:
raise RuntimeError('ydl.extract_info returned None')
return [