Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions setup.cfg
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,7 @@ package_dir =
ustvgo_iptv = .
install_requires =
aiohttp>=3.8.1
aiohttp-remotes>=1.2.0
tqdm>=4.64.0
netifaces>=0.11.0
furl>=2.1.3
Expand Down
9 changes: 5 additions & 4 deletions ustvgo_iptv.py
Original file line number Diff line number Diff line change
Expand Up @@ -131,10 +131,10 @@ async def retrieve_stream_url(channel: Channel, max_retries: int = 5) -> Optiona
return None


def render_playlist(channels: List[Channel], host: str, use_uncompressed_tvguide: bool) -> str:
def render_playlist(channels: List[Channel], scheme: str, host: str, use_uncompressed_tvguide: bool) -> str:
"""Render master playlist."""
with io.StringIO() as f:
base_url = furl(netloc=host, scheme='http')
base_url = furl(netloc=host, scheme=scheme)
tvg_compressed_ext = '' if use_uncompressed_tvguide else '.gz'
tvg_url = base_url / f'tvguide.xml{tvg_compressed_ext}'

Expand All @@ -143,7 +143,7 @@ def render_playlist(channels: List[Channel], host: str, use_uncompressed_tvguide
if channel.get('stream_url'):
tvg_logo = base_url / 'logos' / (channel['stream_id'] + '.png')
stream_url = (furl(channel['stream_url'])
.set(netloc=host, scheme='http')
.set(netloc=host, scheme=scheme)
# No need to expose auth key to the master playlist
.remove(args=['wmsAuthSign'])
.tostr(query_dont_quote='='))
Expand Down Expand Up @@ -187,7 +187,7 @@ async def playlist_server(port: int, parallel: bool, tvguide_base_url: str,
async def master_handler(request: web.Request) -> web.Response:
"""Master playlist handler."""
return web.Response(
text=render_playlist(channels, request.host, use_uncompressed_tvguide)
text=render_playlist(channels, request.scheme, request.host, use_uncompressed_tvguide)
)

async def logos_handler(request: web.Request) -> web.Response:
Expand Down Expand Up @@ -358,6 +358,7 @@ def __str__(self) -> str:
logger.info(f'Serving http://{ip_address}:{port}/tvguide.xml')

app = web.Application()
await setup(app, XForwardedRelaxed())
app.router.add_get('/', master_handler) # master shortcut
app.router.add_get('/ustvgo.m3u8', master_handler) # master
app.router.add_get('/tvguide.xml', tvguide_handler) # tvguide
Expand Down