Skip to main content

Use Pydantic models to work with the YouTube API.

Project description

youtube-pydantic-models

A Python library that contains the most popular YouTube models based on Pydantic. If you are working with the YouTube API, youtube-pydantic-models can help you validate, manipulate, and retrieve data.
Use the YoutubeClient class to get data about channels, playlists, videos and more.
The YouTube API returns data using camel case, but you can choose to return data using camel case or snake case. With the parameter by_alias=True, data is returned using camel case. When using the model, every parameter is accessed using snake case.

Features

  • Validate YouTube API responses using Pydantic models
  • Convert data between camel case and snake case
  • Easy-to-use interface for common YouTube resources
  • Make requests to YouTube API using the client

Requirements

  • Python 3.7+
  • A YouTube Data API Key

Installation

You can install the library using pip:

pip install youtube-pydantic-models

Example usage

YoutubeClient

from youtube_pydantic_models import YoutubeClient

client = YoutubeClient("MY_API_KEY")
channel = client.get_channel(
    id="UC_x5XG1OV2P6uZZ5FSM9Ttw",
    part="snippet, statistics"
)

if channel:
    print(channel.id) # -> UC_x5XG1OV2P6uZZ5FSM9Ttw

Channel Model

import requests
from youtube_pydantic_models import YoutubeChannelResource

params = {
    'id': "UC_x5XG1OV2P6uZZ5FSM9Ttw",
    'key': "YOUR_API_KEY",
    'part': "snippet, contentDetails"
}
response = requests.get(
    "https://www.googleapis.com/youtube/v3/channels",
    params=params
).json()

channel = YoutubeChannelResource(**response)
print(channel.id)
print(channel.snippet.custom_url)
channel_dict = channel.model_dump(
    by_alias=True,
    exclude_none=True
)

Playlist Model

import requests
from youtube_pydantic_models import YoutubePlaylistResource

params = {
    'channelId': "UC_x5XG1OV2P6uZZ5FSM9Ttw",
    'key': "YOUR_API_KEY",
    'part': "snippet, player"
}
response = requests.get(
    "https://www.googleapis.com/youtube/v3/playlists",
    params=params
).json()

playlist = YoutubePlaylistResource(**response)
print(playlist.snippet.channel_title)
print(playlist.player.embed_html)
playlist_dict = playlist.model_dump(
    by_alias=True,
    exclude_none=True
)

Video Model

import requests
from youtube_pydantic_models import YoutubeVideoResource

params = {
    'id': "PJm8WNajZtw",
    'key': "YOUR_API_KEY",
    'part': "statistics"
}
response = requests.get(
    "https://www.googleapis.com/youtube/v3/videos",
    params=params
).json()

video = YoutubeVideoResource(**response)
print(video.id)
print(video.statistics.view_count)
video_dict = video.model_dump(
    by_alias=True,
    exclude_none=True
)

Search Model

import requests
from youtube_pydantic_models import YoutubeSearchResource

params = {
    'channelId': "UC_x5XG1OV2P6uZZ5FSM9Ttw",
    'key': "YOUR_API_KEY",
    'part': "id, snippet"
}
response = requests.get(
    "https://www.googleapis.com/youtube/v3/search",
    params=params
).json()

resource = YoutubeSearchResource(**response)
print(resource.id.kind)
print(resource.snippet.thumbnails.default.url)
resource_dict = resource.model_dump(
    by_alias=True,
    exclude_none=True
)

Contributing

Contributions are welcome! Please open an issue or submit a pull request on GitHub.

License

This project is licensed under the MIT License.

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

youtube_pydantic_models-0.2.2.tar.gz (12.8 kB view details)

Uploaded Source

Built Distribution

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

youtube_pydantic_models-0.2.2-py3-none-any.whl (12.7 kB view details)

Uploaded Python 3

File details

Details for the file youtube_pydantic_models-0.2.2.tar.gz.

File metadata

  • Download URL: youtube_pydantic_models-0.2.2.tar.gz
  • Upload date:
  • Size: 12.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.10.12

File hashes

Hashes for youtube_pydantic_models-0.2.2.tar.gz
Algorithm Hash digest
SHA256 6583c03498a6d99ebe00d63661a70482e126383bcc64224022cd4000af495aef
MD5 299147656fa9aec550a66a4b8a10bf28
BLAKE2b-256 56fc44a38bf9f765b4088d2cd1026e3544e4468938db2e99ded637456d570f4f

See more details on using hashes here.

File details

Details for the file youtube_pydantic_models-0.2.2-py3-none-any.whl.

File metadata

File hashes

Hashes for youtube_pydantic_models-0.2.2-py3-none-any.whl
Algorithm Hash digest
SHA256 f972ed4a2ccb614819b24ac4d8ef9a2f3b2749a777f31c5cdc4de9c69925d9c9
MD5 0fb6a0e0ea2ecaa581854830d3c57c44
BLAKE2b-256 fca42f996a19c5f03d2becb3fa6c30f5840ddaed9ac5748deb15415545235d8f

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