bundle.website.sites.thebundle.pages.youtube.page ================================================= .. py:module:: bundle.website.sites.thebundle.pages.youtube.page .. autoapi-nested-parse:: YouTube page routes and websocket download/probe workflow. Attributes ---------- .. autoapisummary:: bundle.website.sites.thebundle.pages.youtube.page.page bundle.website.sites.thebundle.pages.youtube.page.MUSIC_PATH Classes ------- .. autoapisummary:: bundle.website.sites.thebundle.pages.youtube.page.InfoMessage bundle.website.sites.thebundle.pages.youtube.page.CompletedMessage bundle.website.sites.thebundle.pages.youtube.page.FileReadyMessage bundle.website.sites.thebundle.pages.youtube.page.DownloadTrackRequest bundle.website.sites.thebundle.pages.youtube.page.TrackMetadata bundle.website.sites.thebundle.pages.youtube.page.QualityOptionsMessage Functions --------- .. autoapisummary:: bundle.website.sites.thebundle.pages.youtube.page.youtube bundle.website.sites.thebundle.pages.youtube.page.download_track Module Contents --------------- .. py:data:: page .. py:data:: MUSIC_PATH .. py:class:: InfoMessage(/, **data: Any) Bases: :py:obj:`bundle.core.data.Data`, :py:obj:`bundle.website.core.ws_messages.WebSocketDataMixin` UI status message sent over websocket. .. py:attribute:: type :type: Literal['info'] :value: 'info' .. py:attribute:: info_message :type: str .. py:class:: CompletedMessage(/, **data: Any) Bases: :py:obj:`bundle.core.data.Data`, :py:obj:`bundle.website.core.ws_messages.WebSocketDataMixin` Signal that the current probe/download cycle is finished. .. py:attribute:: type :type: Literal['completed'] :value: 'completed' .. py:class:: FileReadyMessage(/, **data: Any) Bases: :py:obj:`bundle.core.data.Data`, :py:obj:`bundle.website.core.ws_messages.WebSocketDataMixin` Provide a ready-to-download file URL to the client. .. py:attribute:: type :type: Literal['file_ready'] :value: 'file_ready' .. py:attribute:: url :type: str .. py:attribute:: filename :type: str .. py:attribute:: format :type: str :value: None .. py:class:: DownloadTrackRequest(/, **data: Any) Bases: :py:obj:`bundle.core.data.Data`, :py:obj:`bundle.website.core.ws_messages.WebSocketDataMixin` Client request payload for YouTube probe/download actions. .. py:attribute:: youtube_url :type: str .. py:attribute:: format :type: str :value: 'mp4' .. py:attribute:: action :type: Literal['probe', 'download'] :value: 'probe' .. py:attribute:: itag :type: int | None :value: None .. py:method:: normalize() Normalize URL and constrain action/format to supported values. .. py:class:: TrackMetadata(/, **data: Any) Bases: :py:obj:`bundle.youtube.track.YoutubeTrackData`, :py:obj:`bundle.website.core.ws_messages.WebSocketDataMixin` Resolved track metadata payload for the frontend. .. py:attribute:: type :type: Literal['metadata'] :value: 'metadata' .. py:class:: QualityOptionsMessage(/, **data: Any) Bases: :py:obj:`bundle.core.data.Data`, :py:obj:`bundle.website.core.ws_messages.WebSocketDataMixin` Optional payload for available quality selections. .. py:attribute:: type :type: Literal['qualities'] :value: 'qualities' .. py:attribute:: options :type: list[bundle.youtube.track.YoutubeStreamOption] :value: None .. py:function:: youtube(request: fastapi.Request) :async: Render the YouTube page. .. py:function:: download_track(websocket: fastapi.WebSocket) :async: Handle probe/download commands and stream progress/results to the UI.