Pluto for Channels

Back to working again!

Looks like Pluto is now requiring account log in on some live channels. Hoping for a docker update to allow us to log in.

2 Likes

Some more recent detail to add to what I posted a couple of months ago about this and others started talking about going back six months now...

From the article:

Paramount has emphasized that this is not a full lockdown; unregistered users retain broad access to the catalog, and the restrictions vary by region and device as part of an A/B test. Early feedback... highlights frustration, with many describing the prompts as intrusive pop-ups that interrupt channel surfing. Some report the limitation appearing inconsistently, affecting Roku devices more frequently than mobile apps, leading to speculation about phased rollouts.

Thus, it sounds like it's all still in flux and different depending on who and where you are, which might make it difficult to implement a universal solution. Still, it'll require a way to login through the API, which I'll turn to @joagomez to confirm if its a possibility right now.

1 Like

I'm working on a fork that I still need to finish testing. I added username and password support as well as support for German Pluto feeds.

2 Likes

If anyone tries to run it and it breaks, don't be too surprised. I'm pushing untested code on some of the updates for the next day or two. I already had python indentation errors twice :slightly_frowning_face:.

2 Likes

Thank so much for taking on the update.
I will be watching how things proceed.

Sorry to keep posting in this thread, but it seems to be working as expected. You can verify your credentials are returning a valid token by navigating to the container with the port you are using like this:

http://<your_server_ip>:<port>/<country_code>/token

e.g. http://127.0.0.1:7777/us_east/token

If a very long token is returned, it works. If Error is returned, you have an issue with your username or password.

I have the container online and it appears to be working. The password on my account had to be changed becuase it was too long or had stuff the docker didn't like.
Let's see how it plays.

If the username and password is wrapped in single quotes, e.g. 'password', they will be interpreted as literal characters and should avoid issues with characters that have special meanings.

Edit: Thanks for the feedback @rpaulmerrell I'll make sure to mention the single quotes in the readme file. I am also working on some improvements that will hopefully speed up the the script and lower the resource usage when it loads the guide data. I will test those before I push the update. I would hate to create a bunch of new issues that weren't there before.

Thanks for the great help.
the verification of my valid token worked out great so i know it is logging into Pluto.
I will test and see what happens.

1 Like

I have a test version that could use some testers. I made a lot of changes that should improve its performance, but could also cause issues on some setups. Some of the changes include instead of pulling the Pluto guide data one chunk at a time, it now pulls it 10 chunks simultaneously. It no longer holds the entire multi-megabyte EPG in memory while it's building, now it processes the guide data and writes it directly to the .xml file piece by piece. It also builds all the data guides at the beginning, before the server starts to avoid a potential race condition. This test version uses the :test tag rcvaughn2/pluto-for-channels:test

I wouldn't mind giving your test version a try. What's the easiest way to install through Portainer? I'm a bit "Docker-challenged"... :woozy_face:

I'll put a yaml file up on the GitHub page in a little while. Thank you.

Here you go @jsfullam

version: '3.8'

services:
  pluto-for-channels:
    image: rcvaughn2/pluto-for-channels:test
    container_name: pluto-for-channels
    restart: unless-stopped
    ports:
      # Map your desired host port to the container's port 7777
      - "7777:7777"
    environment:
      # Your Pluto TV username. Use single quotes if it contains special characters.
      - PLUTO_USERNAME='YOUR_USERNAME'
      # Your Pluto TV password. Use single quotes if it contains special characters.
      - PLUTO_PASSWORD='YOUR_PASSWORD'
      # Optional: Customize the country codes.
      # Default: 'local,us_east,us_west,ca,uk,fr,de,all'
      - PLUTO_CODE='local,us_east,us_west,ca,uk,fr,de,all'

  1. ​In Portainer, navigate to Stacks.
  2. ​Click Add stack.
  3. ​Give it a name.
  4. ​Choose the Web editor option.
  5. ​Paste the docker-compose.yml content from above into the editor.
  6. ​Edit the environment variables for PLUTO_USERNAME and PLUTO_PASSWORD with your credentials. You can also change the host port if 7777 is already in use on your system.
  7. ​Click Deploy the stack.

When I open the following: http://192.168.1.100:7781/local/token
I receive an error...

Not Found

The requested URL was not found on the server. If you entered the URL manually please check your spelling and try again.

Username and password are correct as verified on Pluto.tv

ports:
      # Map your desired host port to the container's port 7777
      - "7781:7777"
    environment:
      # Your Pluto TV username. Use single quotes if it contains special characters.
      - PLUTO_USERNAME='########@#####.###'
      # Your Pluto TV password. Use single quotes if it contains special characters.
      - PLUTO_PASSWORD=#######
      # Optional: Customize the country codes.
      # Default: 'local,us_east,us_west,ca,uk,fr,de,all'
      - PLUTO_CODE=local

That was removed in one of the updates. I will add a new verify endpoint in just a few minutes. It should tell you in the container log if the tokens were created if you want to verify before I push the update.

Looks to me like it was successful.

[INFO] Running EPG Generation...
New token for local generated at 2025-09-19 22:11:02 +0000
Retrieving local EPG data for 2025-09-19T22:00:00.000Z
Retrieving local EPG data for 2025-09-20T10:00:00.000Z
Retrieving local EPG data for 2025-09-20T22:00:00.000Z
Successfully created epg-local.xml
[INFO] EPG Generation Complete.
⇨ HTTP server started on [::]:7777

Yes it was. Thank you.

I updated both the main and the test branches to version 1.26. To verify if your credentials are correct, you can go to the containers url, e.g. http://127.0.0.1:7778/verify, and get a Credential verification successful! A token was generated. response if it worked, and a Credential verification failed. with an error message if not.

I just fired up the test build and checked out the verification page.
All looks good.

Me too!

Credential verification successful! A token was generated.

@Bobby_Vaughn , is there anything in particular which you would like to have tested?

The biggest things I need to know is what system you are running it on, if the application is functioning correctly and any performance issues or odd resources usage you notice. Thanks.