Access YouTube Public Data without YouTubeAPI
OpenTube
Access YouTube Public Data without YouTubeAPI
Table of Contents
Installing
Python 3.6 or higher is required
sh
Linux/macOS
python3 -m pip install -U opentube
sh
Windows
python -m pip install -U opentube
Build from source
sh
pip install git+https://github.com/jnsougata/opentube
Quick Start
py
import opentube
channel = opentube.Channel('@GYROOO') print(channel.metadata)
video = opentube.Video('WVDT4lSozHk') print(video.metadata)
playlist = opentube.Playlist('PL-xXQjd8XQ-xXQjd8XQ-xXQjd8X_Q-') print(playlist.metadata)
search = opentube.Search.video('YouTube Rewind 2018') print(search.metadata)
search = opentube.Search.channel('PewDiePie') print(search.metadata)
search = opentube.Search.playlist('Unlock Your Third Eye') print(search.metadata)
Usage
Channel
| Property | Return Type | Description | |-------------------|------------------|--------------------------------------------------------| | live | bool | Returns True if the channel is live | | streaming_now | str | Returns the video id of the ongoing livestream | | current_streams | List[str] | Returns a list of ids of ongoing livestreams | | old_streams | List[str] | Returns a list of ids of old livestreams | | video_count | int | Returns total number of videos uploaded by the channel | | upcoming | Video | Returns a video object of the upcoming video | | upcomings | List[str] | Returns a list of ids of upcoming videos | | playlists | List[str] | Returns a list of playlist ids | | metadata | Dict[str, Any] | Returns the metadata of the channel in dict format | | last_uploaded | Video | Most recently uploaded video of the channel | | last_streamed | Video | Most recently completed livestream of the channel |
| Method | Return Types | Description | |-------------------------------|--------------|----------------------------------------------------| | uploads(limit: int \| None) | List[str] | Returns a list of video ids of the uploaded videos |
Video
| Properties | Return Types | Description | |------------|------------------|--------------------------------------------------| | metadata | Dict[str, Any] | Returns the metadata of the video in dict format |
Playlist
| Properties | Return Types | Description | |------------|------------------|-----------------------------------------------------| | metadata | Dict[str, Any] | Returns the metadata of the playlist in dict format |
Search
| Method | Return Type | Description | |--------------------------------------------|-------------|-----------------------------------------------------| | channel(name: str) | Channel | Finds a channel with the given keywords | | video(name: str) | Video | Finds a video with the given keywords | | playlist(name: str) | Playlist | Finds a playlist with the given keywords | | channels(name: str, limit: int \| None) | List[str] | Finds all channels that matches the given keywords | | videos(name: str, limit: int \| None) | List[str] | Finds all videos that matches the given keywords | | playlists(name: str, limit: int \| None) | List[str] | Finds all playlists that matches the given keywords |
Possible Exceptions
| Class | Description | |-------------------|-----------------------------------------------------------------| |InvalidURL | Raised when then url is not a valid YouTube endpoint |
| TooManyRequests | Raised when client IP receives soft ban from YouTube |
| RequestError | Raised for any type of request error not handled by the library |