Skip to main content

Fast and simple API for YouTube and YouTube Music

Project description

"""

YouTube & YouTube Music API

A powerful, lightweight, and high-performance API for accessing YouTube and YouTube Music content, metadata, and streams. Designed for simplicity and flexibility, this library provides full access to YouTube sources, including videos, playlists, metadata, and more. """

Features

- Fetch videos, playlists, and metadata from YouTube and YouTube Music.

- Retrieve lyrics, related tracks, and detailed metadata.

from typing import Union, List, Dict, Any

Core Functions

async def get_video_id(q: str, is_youtube: bool) -> Union[str, Dict[str, str]]: """ Retrieves the YouTube video ID for a given song or title.

Parameters:
- q (str): The search query (e.g., song name or title).
- is_youtube (bool): If true, searches YouTube; otherwise, searches YouTube Music.

Returns:
- str | Dict: The video ID or an error object.
"""
pass

async def get_youtube_list(id: str) -> Union[Dict[str, Any], Dict[str, str]]: """ Fetches metadata and tracks for a YouTube playlist.

Parameters:
- id (str): The ID of the YouTube playlist.

Returns:
- Dict: Playlist metadata and track list or an error object.
"""
pass

async def get_youtube_music_list(id: str) -> Union[Dict[str, Any], Dict[str, str]]: """ Fetches metadata and tracks for a YouTube Music playlist.

Parameters:
- id (str): The ID of the YouTube Music playlist.

Returns:
- Dict: Playlist metadata and track list or an error object.
"""
pass

async def youtube_music_search(q: str, method: str = 'songs') -> Union[List[Any], Dict[str, str]]: """ Searches YouTube Music for songs, artists, albums, or playlists.

Parameters:
- q (str): The search query.
- method (str): The search category (songs, artists, albums, etc.).

Returns:
- List | Dict: An array of search results or an error object.
"""
pass

async def get_related_and_lyrics(id: str) -> Union[Dict[str, Any], Dict[str, str]]: """ Fetches related tracks, playlist queue, and lyrics for a given video ID.

Parameters:
- id (str): The YouTube video ID.

Returns:
- Dict: Related tracks, playlist queue, and lyrics data or an error object.
"""
pass

async def get_lyrics(id: str) -> Union[str, Dict[str, str]]: """ Fetches lyrics for a specific video ID.

Parameters:
- id (str): The YouTube video ID.

Returns:
- str | Dict: Lyrics or an error object.
"""
pass

async def get_yt_music_related(id: str) -> Union[Any, Dict[str, str]]: """ Fetches related tracks for YouTube Music based on the provided ID.

Parameters:
- id (str): The ID of the track.

Returns:
- Any | Dict: Related track details or an error object.
"""
pass

async def get_artist(id: str) -> Union[Any, Dict[str, str]]: """ Fetches information about an artist.

Parameters:
- id (str): The artist ID.

Returns:
- Any | Dict: Artist details or an error object.
"""
pass

async def get_album(id: str) -> Union[Any, Dict[str, str]]: """ Fetches information about an album.

Parameters:
- id (str): The album ID.

Returns:
- Any | Dict: Album details or an error object.
"""
pass

async def get_track_data(id: str) -> Union[Dict[str, Any], Dict[str, str]]: """ Fetches detailed track data, including artist, album, duration, and poster information.

Parameters:
- id (str): The track ID.

Returns:
- Dict: Track metadata and details or an error object.
"""
pass

async def get_podcast(id: str) -> Union[Any, Dict[str, str]]: """ Fetches details about a podcast.

Parameters:
- id (str): The podcast ID.

Returns:
- Any | Dict: Podcast details or an error object.
"""
pass

CLI Script

import argparse import asyncio from hydra_youtube_api import get_data, filter_formats, get_lyrics

async def main(): parser = argparse.ArgumentParser(description="Fast and simple API for YouTube and YouTube Music.") parser.add_argument("video_id", help="YouTube video ID") parser.add_argument("--formats", action="store_true", help="List available formats") parser.add_argument("--lyrics", action="store_true", help="Fetch lyrics for the video") args = parser.parse_args()

video_id = args.video_id

if args.formats:
    # Fetch and list available formats
    data = await get_data(video_id, client_name="ios")
    formats = filter_formats(data, filter_type="all")
    for fmt in formats:
        print(f"Format: {fmt.get('mimeType')}, Resolution: {fmt.get('width')}x{fmt.get('height')}, Bitrate: {fmt.get('bitrate')}")

if args.lyrics:
    # Fetch and display lyrics
    lyrics = await get_lyrics(video_id)
    if lyrics:
        print("Lyrics:")
        print(lyrics)
    else:
        print("No lyrics found.")

if name == "main": asyncio.run(main())

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

hydra_youtube_api-1.1.3.tar.gz (15.2 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

hydra_youtube_api-1.1.3-py3-none-any.whl (15.1 kB view details)

Uploaded Python 3

File details

Details for the file hydra_youtube_api-1.1.3.tar.gz.

File metadata

  • Download URL: hydra_youtube_api-1.1.3.tar.gz
  • Upload date:
  • Size: 15.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.0.1 CPython/3.13.1

File hashes

Hashes for hydra_youtube_api-1.1.3.tar.gz
Algorithm Hash digest
SHA256 28a0e1f9e595a3442e2f16c0978e524db0bc82b5aeee1f3d8430a8fc7d13dda9
MD5 1171ae0227170ce5f03522e0f1ff820e
BLAKE2b-256 b23968c27f9ede66ca31b742e94842fb76dff4ca0b1cb274723d9d6b9ea083bb

See more details on using hashes here.

File details

Details for the file hydra_youtube_api-1.1.3-py3-none-any.whl.

File metadata

File hashes

Hashes for hydra_youtube_api-1.1.3-py3-none-any.whl
Algorithm Hash digest
SHA256 e5dcb76506be9146ebdd4424978642475d6128a52c439fd1aa6a4c733624a5b0
MD5 d6b1cf344afabd52c721a52820e21bec
BLAKE2b-256 8d52f2860da4444391e3b5d2febd1392b381c5fc00c0c8faa3b1e7aec5842058

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page