piped_api
Piped API client (Python)
A Python API wrapper for Piped. This can essentially be used as an alternative way to access YouTube's API, without needing to use an API key.
Installation
pip install piped-api
Quickstart
Getting started is very easy:
from piped_api import PipedClient
CLIENT = PipedClient()
# Print out the first audio stream URL for a video:
video = CLIENT.get_video(video_id)
audio_stream = video.get_streams('audio')[0]
print(f"Audio stream URL: {audio_stream.url} ({audio_stream.mime_type})")
You can find more examples in the tests
folder.
Why?
The creation of this package was primarily fueled by the same type of motivation Piped has.
Google's API is not very easy-to-use - you must obtain some JSON thingy to use it, and it is very low-level and not very user-friendly. On the other hand, this package accessed the Piped API, which has a much more high-level API and doesn't need an account or API keys.
It is not meant to be a replacement for the official YouTube API, but it can help you to cut the strings that Google attaches to you when using their API.
Useful links
🎁 Support me
I create free software to benefit people. If this project helps you and you like it, consider supporting me by donating via cryptocurrency:
Crypto | Address |
---|---|
Bitcoin | E-mail me |
Ethereum | 0x12C598b3bC084710507c9d6d19C9434fD26864Cc |
Litecoin | LgHQK1NQrRQ56AKvVtSxMubqbjSWh7DTD2 |
Dash | Xe7TYoRCYPdZyiQYDjgzCGxR5juPWV8PgZ |
Zcash: | t1Pesobv3SShMHGfrZWe926nsnBo2pyqN3f |
Dogecoin: | DALxrKSbcCXz619QqLj9qKXFnTp8u2cS12 |
Ripple: | rNQsgQvMbbBAd957XyDeNudA4jLH1ANERL |
Monero: | 48TfTddnpgnKBn13MdJNJwHfxDwwGngPgL3v6bNSTwGaXveeaUWzJcMUVrbWUyDSyPDwEJVoup2gmDuskkcFuNG99zatYFS |
Bitcoin Cash: | qzx6pqzcltm7ely24wnhpzp65r8ltrqgeuevtrsj9n |
Ethereum Classic: | 0x383Dc3B83afBD66b4a5e64511525FbFeb2C023Db |
More cryptocurrencies are supported. If you are interested in donating with a different one, please E-mail me. No other forms of donation are currently supported.
View Source
import typing as t from pathlib import Path from .client import PipedClient from .models.comments import Comments # For pdoc: README_PATH = Path(__file__).parent.parent.absolute() / Path('README.md') try: with open(README_PATH, 'r', encoding="UTF-8") as readme: __readme__ = readme.read() except: __readme__ = "Failed to read README.md!" __doc__ = __readme__ # Supress unused-import warnings: if t.TYPE_CHECKING: _ = [PipedClient, Comments]