Skip to content

Instantly share code, notes, and snippets.

Forked from aaearon/
Last active December 8, 2023 03:13
  • Star 9 You must be signed in to star a gist
  • Fork 5 You must be signed in to fork a gist
Star You must be signed in to star a gist
Save caseyavila/f37abe5490d4abfc83a75e65056bda6c to your computer and use it in GitHub Desktop.
Convert HDHomeRun Prime Listings to M3U Format
#!/usr/bin/env python3
# this script will convert the hdhomerun listings (channels) to
# m3u format for use with external media players. before running
# this script, be sure to modify the <<config>> variable settings
# below.
# Suggested Usage: This script should be run on a cron to keep
# the channel lineup to date. Below is an example of how to execute this script:
# python /path/to/script/ > /path/to/playlist.m3u
# original author Josh Kastang (josh[dot]kastang[at]gmail[dot]com)
# Converted to Python 3 and revised to support Jellyfin by Casey Avila
# - Added automatic finding of HDHomeRun ip address
# - Added ability to opt out of duration
import requests
import json
ip_request = requests.get("");
use_duration = True
config = {
# Uses first HDHomeRun found on network
'hdhr-ip' : json.loads(ip_request.text)[0]["LocalIP"],
'duration' : '7200',
hdhr_url = "http://{}/lineup.json?show=unprotected".format(config['hdhr-ip'])
response_obj = requests.get(hdhr_url)
listings_res = response_obj.text
listings = json.loads(listings_res)
for l in listings:
channel = l['GuideNumber']
name = l['GuideName']
print('#EXTINF:-1 tvg-chno="{}" tvg-name="{}",{}'.format(channel, name, name))
if use_duration:
Copy link

A very handy little script! Thank you. I used it to make an .m3u file to use with Hypnotix on Linux Mint.

Copy link

hmj78 commented Nov 24, 2022

python > hdr.m3u

Traceback (most recent call last):
File "", line 18, in
import requests
ModuleNotFoundError: No module named 'requests'

Copy link

@hmj78 use pip install requests

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment