Skip to main content

No project description provided

Project description

Official repository: https://github.com/coletdjnz/yt-dlp-get-pot

PO Token Plugin Framework for yt-dlp

What is a PO Token?

A plugin framework for yt-dlp that allows the YouTube extractor to request Proof of Origin (PO) Tokens from an external source when needed. It allows for multiple providers to co-exist and provide PO Tokens for different scenarios.

For example, one plugin could support fetching PO Tokens for logged-out users, while another supports fetching PO Tokens for logged-in users.

To use, a user will need both the client plugin (this plugin) and one or more provider plugins installed.

Installing

[!IMPORTANT] This repository only contains the client-side plugin for yt-dlp! It does not contain an implementation to retrieve PO tokens. You will need to install a provider plugin in addition to this plugin.

You may be able to find provider plugins in the yt-dlp-plugins-get-pot topic.

Requires yt-dlp 2024.09.27 or above.

If yt-dlp is installed through pip or pipx, you can install the plugin with the following:

pip/pipx

pipx inject yt-dlp yt-dlp-get-pot

or

python3 -m pip install -U yt-dlp-get-pot

Manual install

  1. Download the latest release zip from releases

  2. Add the zip to one of the yt-dlp plugin locations

    • User Plugins

      • ${XDG_CONFIG_HOME}/yt-dlp/plugins (recommended on Linux/macOS)
      • ~/.yt-dlp/plugins/
      • ${APPDATA}/yt-dlp/plugins/ (recommended on Windows)
    • System Plugins

      • /etc/yt-dlp/plugins/
      • /etc/yt-dlp-plugins/
    • Executable location

      • Binary: where <root-dir>/yt-dlp.exe, <root-dir>/yt-dlp-plugins/

For more locations and methods, see installing yt-dlp plugins

If installed correctly, you should see the GetPOT YouTubeIE plugin override in yt-dlp -v output:

[debug] Extractor Plugins: GetPOT (YoutubeIE)

Developing a Provider plugin

The provider plugin assumes this plugin is installed. You can define it as a Python dependency in your plugin package, or users can install it manually.

  1. Create a new plugin (you can use the yt-dlp sample plugins template).
  2. Create a new python file under yt_dlp_plugins.extractor (recommend naming it getpot_<name>.py).
  3. In the plugin file, define a Provider that extends yt_dlp_plugins.extractor.getpot.GetPOTProvider.
  4. Implement _get_pot method to retrieve the PO Token from your source.

It should look something like:

from yt_dlp_plugins.extractor.getpot import GetPOTProvider, register_provider

@register_provider
class MyProviderRH(GetPOTProvider):
   _PROVIDER_NAME = 'myprovider'
   _SUPPORTED_CLIENTS = ('web', )
   
   def _get_pot(self, client, ydl, visitor_data=None, data_sync_id=None, **kwargs):
        # Implement your PO Token retrieval here
        return 'PO_TOKEN'

See getpot_example.py for a more in-depth example.

When yt-dlp attempts to get a PO Token, it will call out to available providers. This is the Fetching PO Token for <client> client line you see in the verbose log.

Debugging

To check that your provider is being loaded, run yt-dlp with the -v flag and a YouTube video, and look for the PO Token Providers line in the output. You should see your provider listed:

[debug] [GetPOT] PO Token Providers: <PROVIDER_NAME>

You can use --print-traffic to see if your provider is being called.

For general plugin debugging tips, consult the yt-dlp plugin development wiki.

Tips

  • Your implementation should consider caching the PO Token for the given parameters to avoid unnecessary requests.
  • If publishing to GitHub, add the yt-dlp-plugins-get-pot topic to your repository to help users find your provider plugin.
  • If publishing to PyPI, add the yt-dlp-plugins-get-pot keyword to your package to help users find your provider plugin.
  • The PO Token Guide has more information on PO Tokens.
  • Advanced: A Provider is a customized yt-dlp HTTP Request Handler, so any parameters and functions that are available to the RequestHandler are also available to a Provider. Check out yt_dlp.networking.common.RequestHandler to see more.

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

yt_dlp_get_pot-0.2.0.tar.gz (9.3 kB view details)

Uploaded Source

Built Distribution

yt_dlp_get_pot-0.2.0-py3-none-any.whl (7.7 kB view details)

Uploaded Python 3

File details

Details for the file yt_dlp_get_pot-0.2.0.tar.gz.

File metadata

  • Download URL: yt_dlp_get_pot-0.2.0.tar.gz
  • Upload date:
  • Size: 9.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/5.1.1 CPython/3.12.6

File hashes

Hashes for yt_dlp_get_pot-0.2.0.tar.gz
Algorithm Hash digest
SHA256 4582b567b47ca8735f3724f7f962664b7e43711aa2208e7673b7826cf5d82af4
MD5 a671f0e0d1de2b6c5c500988f6e15b90
BLAKE2b-256 a09035d9ffde611396902119ae801e7df7a78bfd822d9d9ebcd443eb190ea2c5

See more details on using hashes here.

File details

Details for the file yt_dlp_get_pot-0.2.0-py3-none-any.whl.

File metadata

File hashes

Hashes for yt_dlp_get_pot-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 49614c3f592ce486c80175549056098078539651553072ef657f00ed66bf9cfe
MD5 d48ca50599937c14796228256ce502d2
BLAKE2b-256 131d9b4c2bcc5849862fb193c6218c4c65f171c6a1b18f0db5bc2e929f75d3cb

See more details on using hashes here.

Supported by

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