mirror of
				https://github.com/KevinMidboe/spotify-downloader.git
				synced 2025-10-29 18:00:15 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			56 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			56 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
 |