From a4155142fc13199dde689492eaafbb485fbd20e8 Mon Sep 17 00:00:00 2001 From: codey Date: Tue, 13 Aug 2024 10:50:11 -0400 Subject: [PATCH] resolves #16 --- endpoints/yt.py | 46 ++++++++++++++++++++++++++++++++++++++++++++++ main.py | 2 ++ 2 files changed, 48 insertions(+) create mode 100644 endpoints/yt.py diff --git a/endpoints/yt.py b/endpoints/yt.py new file mode 100644 index 0000000..9c88bb1 --- /dev/null +++ b/endpoints/yt.py @@ -0,0 +1,46 @@ +#!/usr/bin/env python3.12 + +import importlib +from fastapi import FastAPI +from pydantic import BaseModel + +class ValidYTSearchRequest(BaseModel): + """ + - **t**: title to search + """ + + t: str = "rick astley - never gonna give you up" + + +class YT(FastAPI): + """YT Endpoints""" + def __init__(self, app: FastAPI, util, constants): # pylint: disable=super-init-not-called + self.app = app + self.util = util + self.constants = constants + self.ytsearch = importlib.import_module("youtube_search_async").YoutubeSearch() + + self.endpoints = { + "yt_video_search": self.yt_video_search_handler, + #tbd + } + + for endpoint, handler in self.endpoints.items(): + app.add_api_route(f"/{endpoint}/", handler, methods=["POST"]) + + async def yt_video_search_handler(self, data: ValidYTSearchRequest): + """ + /yt_video_search/ + Search for YT Video by Title (closest match returned) + """ + + title = data.t + yts_res = await self.ytsearch.search(title) + yt_video_id = yts_res[0].get('id', False) + + return { + 'video_id': yt_video_id, + 'extras': yts_res[0] + } + + diff --git a/main.py b/main.py index 12defdf..8228e82 100644 --- a/main.py +++ b/main.py @@ -56,6 +56,8 @@ randmsg_endpoint = importlib.import_module("endpoints.rand_msg").RandMsg(app, ut lyric_search_endpoint = importlib.import_module("endpoints.lyric_search").LyricSearch(app, util, constants) # Below provides numerous LastFM-fed endpoints lastfm_endpoints = importlib.import_module("endpoints.lastfm").LastFM(app, util, constants) +# Below: YT endpoint(s) +yt_endpoints = importlib.import_module("endpoints.yt").YT(app, util, constants)