second commit
This commit is contained in:
104
env/lib/python3.11/site-packages/m3u8/__init__.py
vendored
Normal file
104
env/lib/python3.11/site-packages/m3u8/__init__.py
vendored
Normal file
@ -0,0 +1,104 @@
|
||||
# Copyright 2014 Globo.com Player authors. All rights reserved.
|
||||
# Use of this source code is governed by a MIT License
|
||||
# license that can be found in the LICENSE file.
|
||||
|
||||
import os
|
||||
from urllib.parse import urljoin, urlsplit
|
||||
|
||||
from m3u8.httpclient import DefaultHTTPClient
|
||||
from m3u8.model import (
|
||||
M3U8,
|
||||
ContentSteering,
|
||||
DateRange,
|
||||
DateRangeList,
|
||||
IFramePlaylist,
|
||||
ImagePlaylist,
|
||||
Key,
|
||||
Media,
|
||||
MediaList,
|
||||
PartialSegment,
|
||||
PartialSegmentList,
|
||||
PartInformation,
|
||||
Playlist,
|
||||
PlaylistList,
|
||||
PreloadHint,
|
||||
RenditionReport,
|
||||
RenditionReportList,
|
||||
Segment,
|
||||
SegmentList,
|
||||
ServerControl,
|
||||
Skip,
|
||||
Start,
|
||||
Tiles,
|
||||
)
|
||||
from m3u8.parser import ParseError, parse
|
||||
|
||||
__all__ = (
|
||||
"M3U8",
|
||||
"Segment",
|
||||
"SegmentList",
|
||||
"PartialSegment",
|
||||
"PartialSegmentList",
|
||||
"Key",
|
||||
"Playlist",
|
||||
"IFramePlaylist",
|
||||
"Media",
|
||||
"MediaList",
|
||||
"PlaylistList",
|
||||
"Start",
|
||||
"RenditionReport",
|
||||
"RenditionReportList",
|
||||
"ServerControl",
|
||||
"Skip",
|
||||
"PartInformation",
|
||||
"PreloadHint",
|
||||
"DateRange",
|
||||
"DateRangeList",
|
||||
"ContentSteering",
|
||||
"ImagePlaylist",
|
||||
"Tiles",
|
||||
"loads",
|
||||
"load",
|
||||
"parse",
|
||||
"ParseError",
|
||||
)
|
||||
|
||||
|
||||
def loads(content, uri=None, custom_tags_parser=None):
|
||||
"""
|
||||
Given a string with a m3u8 content, returns a M3U8 object.
|
||||
Optionally parses a uri to set a correct base_uri on the M3U8 object.
|
||||
Raises ValueError if invalid content
|
||||
"""
|
||||
|
||||
if uri is None:
|
||||
return M3U8(content, custom_tags_parser=custom_tags_parser)
|
||||
else:
|
||||
base_uri = urljoin(uri, ".")
|
||||
return M3U8(content, base_uri=base_uri, custom_tags_parser=custom_tags_parser)
|
||||
|
||||
|
||||
def load(
|
||||
uri,
|
||||
timeout=None,
|
||||
headers={},
|
||||
custom_tags_parser=None,
|
||||
http_client=DefaultHTTPClient(),
|
||||
verify_ssl=True,
|
||||
):
|
||||
"""
|
||||
Retrieves the content from a given URI and returns a M3U8 object.
|
||||
Raises ValueError if invalid content or IOError if request fails.
|
||||
"""
|
||||
if urlsplit(uri).scheme:
|
||||
content, base_uri = http_client.download(uri, timeout, headers, verify_ssl)
|
||||
return M3U8(content, base_uri=base_uri, custom_tags_parser=custom_tags_parser)
|
||||
else:
|
||||
return _load_from_file(uri, custom_tags_parser)
|
||||
|
||||
|
||||
def _load_from_file(uri, custom_tags_parser=None):
|
||||
with open(uri, encoding="utf8") as fileobj:
|
||||
raw_content = fileobj.read().strip()
|
||||
base_uri = os.path.dirname(uri)
|
||||
return M3U8(raw_content, base_uri=base_uri, custom_tags_parser=custom_tags_parser)
|
Reference in New Issue
Block a user