mirror of
https://github.com/chibicitiberiu/ytsm.git
synced 2024-02-24 05:43:31 +00:00
48 lines
1.3 KiB
Python
48 lines
1.3 KiB
Python
from django.conf import settings
|
|
from external.pytaw.pytaw.youtube import YouTube, Channel, Playlist, PlaylistItem, Thumbnail, InvalidURL, Resource, Video
|
|
from typing import Optional
|
|
|
|
|
|
class YoutubeAPI(YouTube):
|
|
|
|
@staticmethod
|
|
def build_public() -> 'YoutubeAPI':
|
|
return YoutubeAPI(key=settings.YOUTUBE_API_KEY)
|
|
|
|
# @staticmethod
|
|
# def build_oauth() -> 'YoutubeAPI':
|
|
# flow =
|
|
# credentials =
|
|
# service = build(API_SERVICE_NAME, API_VERSION, credentials)
|
|
|
|
|
|
def default_thumbnail(resource: Resource) -> Optional[Thumbnail]:
|
|
"""
|
|
Gets the default thumbnail for a resource.
|
|
Searches in the list of thumbnails for one with the label 'default', or takes the first one.
|
|
:param resource:
|
|
:return:
|
|
"""
|
|
thumbs = getattr(resource, 'thumbnails', None)
|
|
|
|
if thumbs is None or len(thumbs) <= 0:
|
|
return None
|
|
|
|
return next(
|
|
(i for i in thumbs if i.id == 'default'),
|
|
thumbs[0]
|
|
)
|
|
|
|
|
|
def best_thumbnail(resource: Resource) -> Optional[Thumbnail]:
|
|
"""
|
|
Gets the best thumbnail available for a resource.
|
|
:param resource:
|
|
:return:
|
|
"""
|
|
thumbs = getattr(resource, 'thumbnails', None)
|
|
|
|
if thumbs is None or len(thumbs) <= 0:
|
|
return None
|
|
|
|
return max(thumbs, key=lambda t: t.width * t.height) |