streamlink/tests/plugin/testplugin.py

79 lines
2.2 KiB
Python

import re
from io import BytesIO
from streamlink import NoStreamsError
from streamlink.options import Options
from streamlink.plugin import pluginargument, pluginmatcher
from streamlink.plugins import Plugin
from streamlink.stream.hls import HLSStream
from streamlink.stream.http import HTTPStream
from streamlink.stream.stream import Stream
class TestStream(Stream):
__shortname__ = "test"
def open(self):
return BytesIO(b"x" * 8192 * 2)
@pluginmatcher(re.compile(
r"https?://test\.se",
))
@pluginargument(
"bool",
action="store_true",
)
@pluginargument(
"password",
sensitive=True,
metavar="PASSWORD",
)
class TestPlugin(Plugin):
options = Options({
"a_option": "default",
})
id = "test-id-1234-5678"
author = "Tѥst Āuƭhǿr"
category = None
title = "Test Title"
def _get_streams(self):
if "empty" in self.url:
return
if "UnsortableStreamNames" in self.url:
def gen():
for _ in range(3):
yield "vod", HTTPStream(self.session, "http://test.se/stream")
return gen()
if "NoStreamsError" in self.url:
raise NoStreamsError
streams = {}
streams["test"] = TestStream(self.session)
streams["hls"] = HLSStream(self.session, "http://test.se/playlist.m3u8")
streams["http"] = HTTPStream(self.session, "http://test.se/stream")
streams["240p"] = HTTPStream(self.session, "http://test.se/stream")
streams["360p"] = HTTPStream(self.session, "http://test.se/stream")
streams["1080p"] = HTTPStream(self.session, "http://test.se/stream")
streams["350k"] = HTTPStream(self.session, "http://test.se/stream")
streams["800k"] = HTTPStream(self.session, "http://test.se/stream")
streams["1500k"] = HTTPStream(self.session, "http://test.se/stream")
streams["3000k"] = HTTPStream(self.session, "http://test.se/stream")
streams["480p"] = [
HTTPStream(self.session, "http://test.se/stream"),
HLSStream(self.session, "http://test.se/playlist.m3u8"),
]
return streams
__plugin__ = TestPlugin