2012-11-27 03:59:18 +01:00
|
|
|
import os
|
|
|
|
import unittest
|
|
|
|
|
2016-09-19 21:46:06 +02:00
|
|
|
from streamlink import Streamlink, PluginError, NoPluginError
|
|
|
|
from streamlink.plugins import Plugin
|
|
|
|
from streamlink.stream import *
|
2012-11-27 03:59:18 +01:00
|
|
|
|
|
|
|
class TestPluginStream(unittest.TestCase):
|
|
|
|
def setUp(self):
|
2016-09-19 21:46:06 +02:00
|
|
|
self.session = Streamlink()
|
2012-11-27 03:59:18 +01:00
|
|
|
|
|
|
|
def assertDictHas(self, a, b):
|
|
|
|
for key, value in a.items():
|
|
|
|
self.assertEqual(b[key], value)
|
|
|
|
|
2012-12-11 17:35:34 +01:00
|
|
|
def _test_akamaihd(self, surl, url):
|
2012-11-27 03:59:18 +01:00
|
|
|
channel = self.session.resolve_url(surl)
|
|
|
|
streams = channel.get_streams()
|
|
|
|
|
|
|
|
self.assertTrue("live" in streams)
|
|
|
|
|
|
|
|
stream = streams["live"]
|
|
|
|
self.assertTrue(isinstance(stream, AkamaiHDStream))
|
2012-12-11 17:35:34 +01:00
|
|
|
self.assertEqual(stream.url, url)
|
2012-11-27 03:59:18 +01:00
|
|
|
|
|
|
|
def _test_hls(self, surl, url):
|
|
|
|
channel = self.session.resolve_url(surl)
|
|
|
|
streams = channel.get_streams()
|
|
|
|
|
|
|
|
self.assertTrue("live" in streams)
|
|
|
|
|
|
|
|
stream = streams["live"]
|
|
|
|
self.assertTrue(isinstance(stream, HLSStream))
|
|
|
|
self.assertEqual(stream.url, url)
|
|
|
|
|
|
|
|
def _test_rtmp(self, surl, url, params):
|
|
|
|
channel = self.session.resolve_url(surl)
|
|
|
|
streams = channel.get_streams()
|
|
|
|
|
|
|
|
self.assertTrue("live" in streams)
|
|
|
|
|
|
|
|
stream = streams["live"]
|
|
|
|
self.assertTrue(isinstance(stream, RTMPStream))
|
|
|
|
self.assertEqual(stream.params["rtmp"], url)
|
|
|
|
self.assertDictHas(params, stream.params)
|
|
|
|
|
2013-06-22 00:49:14 +02:00
|
|
|
def _test_http(self, surl, url, params):
|
|
|
|
channel = self.session.resolve_url(surl)
|
|
|
|
streams = channel.get_streams()
|
|
|
|
|
|
|
|
self.assertTrue("live" in streams)
|
|
|
|
|
|
|
|
stream = streams["live"]
|
|
|
|
self.assertTrue(isinstance(stream, HTTPStream))
|
|
|
|
self.assertEqual(stream.url, url)
|
|
|
|
self.assertDictHas(params, stream.args)
|
|
|
|
|
2012-11-27 03:59:18 +01:00
|
|
|
def test_plugin(self):
|
|
|
|
self._test_rtmp("rtmp://hostname.se/stream",
|
|
|
|
"rtmp://hostname.se/stream", dict())
|
|
|
|
|
|
|
|
self._test_rtmp("rtmp://hostname.se/stream live=1 num=47",
|
|
|
|
"rtmp://hostname.se/stream", dict(live=True, num=47))
|
|
|
|
|
2013-11-03 17:06:14 +01:00
|
|
|
self._test_rtmp("rtmp://hostname.se/stream live=1 qarg='a \\'string' noq=test",
|
2012-11-27 11:36:25 +01:00
|
|
|
"rtmp://hostname.se/stream", dict(live=True, qarg='a \'string', noq="test"))
|
2012-11-27 03:59:18 +01:00
|
|
|
|
2013-09-26 17:42:28 +02:00
|
|
|
self._test_hls("hls://https://hostname.se/playlist.m3u8",
|
|
|
|
"https://hostname.se/playlist.m3u8")
|
|
|
|
|
|
|
|
self._test_hls("hls://hostname.se/playlist.m3u8",
|
2012-11-27 03:59:18 +01:00
|
|
|
"http://hostname.se/playlist.m3u8")
|
|
|
|
|
|
|
|
self._test_akamaihd("akamaihd://http://hostname.se/stream",
|
2012-12-11 17:35:34 +01:00
|
|
|
"http://hostname.se/stream")
|
2012-11-27 03:59:18 +01:00
|
|
|
|
2013-09-26 17:42:28 +02:00
|
|
|
self._test_akamaihd("akamaihd://hostname.se/stream",
|
|
|
|
"http://hostname.se/stream")
|
|
|
|
|
2013-06-22 00:49:14 +02:00
|
|
|
self._test_http("httpstream://http://hostname.se/auth.php auth=('test','test2')",
|
|
|
|
"http://hostname.se/auth.php", dict(auth=("test", "test2")))
|
|
|
|
|
2013-09-26 17:42:28 +02:00
|
|
|
self._test_http("httpstream://hostname.se/auth.php auth=('test','test2')",
|
|
|
|
"http://hostname.se/auth.php", dict(auth=("test", "test2")))
|
|
|
|
|
2013-11-03 17:06:14 +01:00
|
|
|
self._test_http("httpstream://https://hostname.se/auth.php verify=False params={'key': 'a value'}",
|
|
|
|
"https://hostname.se/auth.php?key=a+value", dict(verify=False, params=dict(key='a value')))
|
|
|
|
|
2013-09-26 17:42:28 +02:00
|
|
|
|
2013-06-22 00:49:14 +02:00
|
|
|
|
|
|
|
|
2012-11-27 03:59:18 +01:00
|
|
|
if __name__ == "__main__":
|
|
|
|
unittest.main()
|