Skip to main content

pyhulu

Build Status License: GPL v3

Python library for interacting with the E2E encrypted Hulu API

Usage

First, initialize the HuluClient class with a device code, device key, and cookies:

client = pyhulu.HuluClient(device_code, device_key, cookies)

device_code is a three-digit string or integer (doesn't matter) denoting the device you will make requests as.

device_key is a 16-byte AES key that corresponds to the device code you're using. This is used to decrypt the device config response.

cookies can either be a cookie jar object or a dict of cookie key / value pairs. This is passed to the requests library, so whatever it takes will work. Examples here: http://docs.python-requests.org/en/master/user/quickstart/#cookies.

With the initialized client object, you can use the load_playlist() method:

client.load_playlist(video_id)

video_id is either a string or integer denoting the video ID to request a playlist for. This is NOT the ID in the /watch/ URL! If you view the page source of a /watch/ page, you'll find \"content_id\" which has the actual video ID used by the API.

This method returns a dict of the playlist response, which contains stream and license URLs.

Device Codes and Keys

PC

  • Device code: 159
  • Device key (hex): 6ebfc84f3c304217b20fd9a66cb5957f

Example Code

import pyhulu
from http.cookiejar import MozillaCookieJar

cj = MozillaCookieJar('cookies.txt')
cj.load()

client = pyhulu.HuluClient('159', bytes.fromhex('6ebfc84f3c304217b20fd9a66cb5957f'), cj)
print(client.load_playlist(61085964))

Installation

To install, either clone the repository and run python setup.py install or run pip install pyhulu.

To-Do

  • Add unit tests
  • Add to PyPI
  • Add documentation

Metadata

Release files for pyhulu 1.1.2

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Built distribution (wheel)

Table of built distributions (wheels) for pyhulu 1.1.2
File Interpreter ABI Platform
pyhulu-1.1.2-py3-none-any.whl Python 3 none any Details

Release files / pyhulu-1.1.2-py3-none-any.whl

Download URL pyhulu-1.1.2-py3-none-any.whl
Size 17.1 kB
Tags Python 3
SHA-256 checksum
How to use checksums
b42aaf2c976d00b7cc562de33a2302c420e04cf8f4c2d9803ca8b2baf8f9ac8f
BLAKE2b-256 checksum
How to use checksums
31109d44b07c299093cdf292eeed21bd2cde3126775caa7041eeb307fb92331f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/1.13.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/41.0.1 requests-toolbelt/0.9.1 tqdm/4.32.2 CPython/3.7.4

Release history Release notifications | RSS feed

This release

1.1.2 This release

1 release file

1.1.1

1 release file

1.1.0

2 release files

1.0.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page