mirror of
https://github.com/KevinMidboe/spotify-downloader.git
synced 2025-10-29 18:00:15 +00:00
65 lines
1.8 KiB
Python
65 lines
1.8 KiB
Python
from pafy import backend_youtube_dl
|
|
import pafy
|
|
|
|
from spotdl import internals
|
|
|
|
|
|
def _getbestthumb(self):
|
|
url = self._ydl_info["thumbnails"][0]["url"]
|
|
if url:
|
|
return url
|
|
|
|
part_url = "https://i.ytimg.com/vi/%s/" % self.videoid
|
|
# Thumbnail resolution sorted in descending order
|
|
thumbs = (
|
|
"maxresdefault.jpg",
|
|
"sddefault.jpg",
|
|
"hqdefault.jpg",
|
|
"mqdefault.jpg",
|
|
"default.jpg",
|
|
)
|
|
for thumb in thumbs:
|
|
url = part_url + thumb
|
|
if self._content_available(url):
|
|
return url
|
|
|
|
|
|
def _process_streams(self):
|
|
for format_index in range(len(self._ydl_info["formats"])):
|
|
try:
|
|
self._ydl_info["formats"][format_index]["url"] = self._ydl_info["formats"][
|
|
format_index
|
|
]["fragment_base_url"]
|
|
except KeyError:
|
|
pass
|
|
return backend_youtube_dl.YtdlPafy._old_process_streams(self)
|
|
|
|
|
|
@classmethod
|
|
def _content_available(cls, url):
|
|
return internals.content_available(url)
|
|
|
|
|
|
class PatchPafy:
|
|
"""
|
|
These patches have not been released by pafy on PyPI yet but
|
|
are useful to us.
|
|
"""
|
|
|
|
def patch_getbestthumb(self):
|
|
# https://github.com/mps-youtube/pafy/pull/211
|
|
pafy.backend_shared.BasePafy._bestthumb = None
|
|
pafy.backend_shared.BasePafy._content_available = _content_available
|
|
pafy.backend_shared.BasePafy.getbestthumb = _getbestthumb
|
|
|
|
def patch_process_streams(self):
|
|
# https://github.com/mps-youtube/pafy/pull/230
|
|
backend_youtube_dl.YtdlPafy._old_process_streams = (
|
|
backend_youtube_dl.YtdlPafy._process_streams
|
|
)
|
|
backend_youtube_dl.YtdlPafy._process_streams = _process_streams
|
|
|
|
def patch_insecure_streams(self):
|
|
# https://github.com/mps-youtube/pafy/pull/235
|
|
pafy.g.def_ydl_opts["prefer_insecure"] = False
|