import re import uuid from streamlink.plugin import Plugin from streamlink.plugin.api import http from streamlink.plugin.api import validate from streamlink.stream import HLSStream API_HLS = "https://www.camvirt.com/get_edge_hls_url_ajax/" _url_re = re.compile(r"https?://(\w+\.)?camvirt\.com/(?P<username>\w+)") _post_schema = validate.Schema( { "url": validate.text, "room_status": validate.text, "success": int } ) class camvirt(Plugin): @classmethod def can_handle_url(cls, url): return _url_re.match(url) def _get_streams(self): match = _url_re.match(self.url) username = match.group("username") CSRFToken = str(uuid.uuid4().hex.upper()[0:32]) headers = { "Content-Type": "application/x-www-form-urlencoded", "X-CSRFToken": CSRFToken, "X-Requested-With": "XMLHttpRequest", "Referer": self.url, } cookies = { "csrftoken": CSRFToken, } post_data = "room_slug={0}&bandwidth=high".format(username) res = http.post(API_HLS, headers=headers, cookies=cookies, data=post_data) data = http.json(res, schema=_post_schema) self.logger.info("Stream status: {0}".format(data["room_status"])) if (data["success"] is True and data["room_status"] == "public" and data["url"]): for s in HLSStream.parse_variant_playlist(self.session, data["url"]).items(): yield s __plugin__ = camvirt
Вчера, 23:20
Вчера, 17:30
Вчера, 14:13
Вчера, 11:21
Вчера, 00:07
30 июня 2026 22:38
30 июня 2026 22:36
30 июня 2026 17:32
30 июня 2026 08:57
30 июня 2026 07:49
30 июня 2026 05:43
29 июня 2026 22:40
29 июня 2026 19:32
29 июня 2026 17:43
14 июня 2026 09:59
10 июня 2026 16:15
31 мая 2026 23:34
31 мая 2026 16:13
30 мая 2026 10:33
29 мая 2026 18:20
29 мая 2026 16:17
28 мая 2026 19:27
27 мая 2026 23:14
27 мая 2026 21:35
24 мая 2026 23:08
24 мая 2026 20:57
15 мая 2026 07:53
15 мая 2026 00:43
14 мая 2026 17:33
14 мая 2026 17:32
7 мая 2026 00:36
21 апреля 2026 00:16
13 апреля 2026 00:13
12 апреля 2026 23:28
11 апреля 2026 23:09
4 апреля 2026 16:11
4 апреля 2026 10:24
25 марта 2026 11:17
25 марта 2026 10:46
24 марта 2026 18:14
5 марта 2026 04:50
25 февраля 2026 18:39
19 февраля 2026 20:48
16 февраля 2026 15:27