I’ve been going through my physical DVD collection and getting rid of discs if I have a digital copy. My primary digital provider is Vudu, who makes this practically impossible to do easily — there is no way to get a list of your movies and the movie list isn’t easily searchable because it only shows poster images, not titles.

Sounds like a problem Python can solve!

I wrote a simple script that will login to Vudu and dump out a CSV of all your movies. It’ll include: title, video quality, Vudu movie ID, MPAA rating, Rotten Tomatoes score, Length, URL of poster image, release date, and a description of the movie.

It should be pretty easy to use — download it, plop in your email address and password, then run it. My Macbook Pro had all the modules I use, so I believe they should be installed by default (the only non-dist library is requests, so that would only be the possible sticking point).

View the code on gist.

This article has 4 Comments

  1. Hi,

    Just wondering if you still use this script? I just gave it a try and got some “bad handshake” errors.

    requests.exceptions.SSLError: (“bad handshake: Error([(‘SSL routines’, ‘SSL23_GET_SERVER_HELLO’, ‘unknown protocol’)],)”,)

    Any ideas what’s what I might try to get this working?


    1. I tried recently and it was failing, likely because of changes to the Vudu site (it’s not using any sort of official API).

      You’re getting a different error though. What version of Python and what platform are you running on? I think it’s probably something out of date. It could also be if you’re behind a captive portal or something else that’s intercepting the connection, though that would be unusual. Also possible is your install is more up to date and I was doing something wrong that used to work but doesn’t anymore.

      One thing you can try is adding :443 to the base URL, so:
      BASE_URL = ‘https://api.vudu.com:443/api2/’
      on the off chance that for some reason it’s trying to connect to the wrong port (which would give you that error).

  2. I just tried this today and it throws this error:
    invalidArgumentInvalid request{some random number}

    Do you happen to have a list of what the API structure looks like? If we had that we may be able to pull the data back.

  3. It worked for me earlier now I get this.
    Traceback (most recent call last):
    File “C:\Users\user\Desktop\New folder (3)\vudu.py”, line 137, in
    File “C:\Users\user\Desktop\New folder (3)\vudu.py”, line 31, in main
    session_key = response[‘sessionKey’][0][‘sessionKey’][0]
    KeyError: ‘sessionKey’

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.