_swf_url_re = re.compile("swfobject.embedSWF\(\"([^\"]+)\",") _schema = validate.Schema( validate.union({ "urls": validate.all(validate.transform(_file_re.findall), validate.map(unquote), [validate.url()]), "swf": validate.all( validate.transform(_swf_url_re.search), validate.any( None, validate.all( validate.get(1), validate.url(scheme="http", path=validate.endswith("swf"))))) })) class Aliez(Plugin): @classmethod def can_handle_url(self, url): return _url_re.match(url) def _get_streams(self): res = http.get(self.url, schema=_schema) streams = {} for url in res["urls"]: parsed = urlparse(url) if parsed.scheme.startswith("rtmp"): params = {"rtmp": url, "pageUrl": self.url, "live": True}
}, "start_offset": int, "end_offset": int, }) _viewer_info_schema = validate.Schema( {validate.optional("login"): validate.text}, validate.get("login")) _viewer_token_schema = validate.Schema( {validate.optional("token"): validate.text}, validate.get("token")) _quality_options_schema = validate.Schema( { "quality_options": validate.all([{ "quality": validate.any(validate.text, None), "source": validate.url(scheme="https", path=validate.endswith(".mp4")) }]) }, validate.get("quality_options")) def time_to_offset(t): match = _time_re.match(t) if match: offset = int(match.group("hours") or "0") * 60 * 60 offset += int(match.group("minutes") or "0") * 60 offset += int(match.group("seconds") or "0") else: offset = 0 return offset
from ACEStream.PluginsContainer.livestreamer.plugin import Plugin from ACEStream.PluginsContainer.livestreamer.plugin.api import http, validate from ACEStream.PluginsContainer.livestreamer.stream import HLSStream _url_re = re.compile("http(s)?://(www\.)?openrec.tv/(live|movie)/[^/?&]+") _playlist_url_re = re.compile("data-file=\"(?P<url>[^\"]+)\"") _schema = validate.Schema( validate.transform(_playlist_url_re.search), validate.any( None, validate.all( validate.get("url"), validate.url( scheme="http", path=validate.endswith(".m3u8") ) ) ) ) class OPENRECtv(Plugin): @classmethod def can_handle_url(self, url): return _url_re.match(url) def _get_streams(self): playlist_url = http.get(self.url, schema=_schema) if not playlist_url: return
#-plugin-sig:bZV59+RyQvPOCbVd9HsqEq4qOJoPiF971R/eCebwsJpzsJe4fdIcl8+stSvdU307pU0FZ8QwlVIt5NqT+lWIfA/EUDDSSMgg0Iqm9nHXsZtTZEhPD5RxOWBnn++X8jcq71/Zyqnr6Z4YwoDG+qae6B3R9wnqigB7eNCprTE1rNzWLG8pcJkR8vjjnkv2sKrWjeS1F9broeLCYDnEjuQWUwRuT3m8ZNCFdp6m+2SlM7hIWKNfYYwhFlPZkRc7xgklmpAg7VJIWs5Y5c1/JN47z8GHFFthir6eCppciEJHf2EBwtH8mMX7MniZIhBLyPbB8NC6GRLimyk3WSJQlBxi5A== import re from ACEStream.PluginsContainer.livestreamer.plugin import Plugin from ACEStream.PluginsContainer.livestreamer.plugin.api import http, validate from ACEStream.PluginsContainer.livestreamer.stream import HLSStream _url_re = re.compile("http(s)?://(\w+.)?chaturbate.com/[^/?&]+") _playlist_url_re = re.compile("html \+= \"src='(?P<url>[^']+)'\";") _schema = validate.Schema( validate.transform(_playlist_url_re.search), validate.any( None, validate.all( validate.get("url"), validate.url(scheme="http", path=validate.endswith(".m3u8"))))) class Chaturbate(Plugin): @classmethod def can_handle_url(self, url): return _url_re.match(url) def _get_streams(self): playlist_url = http.get(self.url, schema=_schema) if not playlist_url: return return HLSStream.parse_variant_playlist(self.session, playlist_url)
COOKIE_PARAMS = ("devicetype=desktop&" "preferred-player-odm=hlslink&" "preferred-player-live=hlslink") _id_re = re.compile("/(?:program|direkte|serie/[^/]+)/([^/]+)") _url_re = re.compile("https?://(tv|radio).nrk.no/") _api_baseurl_re = re.compile('apiBaseUrl:\s*"(?P<baseurl>[^"]+)"') _schema = validate.Schema( validate.transform(_api_baseurl_re.search), validate.any( None, validate.all(validate.get("baseurl"), validate.url(scheme="http")))) _mediaelement_schema = validate.Schema( {"mediaUrl": validate.url(scheme="http", path=validate.endswith(".m3u8"))}) class NRK(Plugin): @classmethod def can_handle_url(self, url): return _url_re.match(url) def _get_streams(self): # Get the stream type from the url (tv/radio). stream_type = _url_re.match(self.url).group(1).upper() cookie = {"NRK_PLAYER_SETTINGS_{0}".format(stream_type): COOKIE_PARAMS} # Construct API URL for this program. baseurl = http.get(self.url, cookies=cookie, schema=_schema) program_id = _id_re.search(self.url).group(1)
validate.get("login") ) _viewer_token_schema = validate.Schema( { validate.optional("token"): validate.text }, validate.get("token") ) _quality_options_schema = validate.Schema( { "quality_options": validate.all( [{ "quality": validate.any(validate.text, None), "source": validate.url( scheme="https", path=validate.endswith(".mp4") ) }] ) }, validate.get("quality_options") ) def time_to_offset(t): match = _time_re.match(t) if match: offset = int(match.group("hours") or "0") * 60 * 60 offset += int(match.group("minutes") or "0") * 60 offset += int(match.group("seconds") or "0") else: