We are currently solving the following issue within our repository. Here is the issue text:
--- BEGIN ISSUE ---
cybergame.tv plugin not work for livestreams
`[cli][info] Found matching plugin cybergame for URL http://cybergame.tv/sharkisfinetoo/`
`[cli][info] Available streams: 720p (worst, best)`
`[cli][info] Opening stream: 720p (rtmp)`
`[cli][error] No data returned from stream`
For stream
`http://cybergame.tv/<channel>`
Internet Download Manager  produces a link like
`rtmp://cybergametv.cdnvideo.ru/cybergame//<channel>`
VODs fine.

--- END ISSUE ---

Below are some code segments, each from a relevant file. One or more of these files may contain bugs.
--- BEGIN FILES ---
Path: `src/streamlink/plugins/cybergame.py`
Content:
```
1 import re
2 
3 from streamlink.compat import urlparse
4 from streamlink.plugin import Plugin
5 from streamlink.plugin.api import http, validate
6 from streamlink.stream import RTMPStream
7 
8 PLAYLIST_URL = "http://api.cybergame.tv/p/playlist.smil"
9 
10 _url_re = re.compile("""
11     http(s)?://(\w+\.)?cybergame.tv
12     (?:
13         /videos/(?P<video_id>\d+)
14     )?
15     (?:
16         /(?P<channel>[^/&?]+)
17     )?
18 """, re.VERBOSE)
19 
20 _playlist_schema = validate.Schema(
21     validate.union({
22         "base": validate.all(
23             validate.xml_find("./head/meta"),
24             validate.get("base"),
25             validate.url(scheme="rtmp")
26         ),
27         "videos": validate.all(
28             validate.xml_findall(".//video"),
29             [
30                 validate.union({
31                     "src": validate.all(
32                         validate.get("src"),
33                         validate.text
34                     ),
35                     "height": validate.all(
36                         validate.get("height"),
37                         validate.text,
38                         validate.transform(int)
39                     )
40                 })
41             ]
42         )
43     })
44 )
45 
46 
47 class Cybergame(Plugin):
48     @classmethod
49     def can_handle_url(self, url):
50         return _url_re.match(url)
51 
52     def _get_playlist(self, **params):
53         res = http.get(PLAYLIST_URL, params=params)
54         playlist = http.xml(res, schema=_playlist_schema)
55         streams = {}
56         for video in playlist["videos"]:
57             name = "{0}p".format(video["height"])
58             stream = RTMPStream(self.session, {
59                 "rtmp": "{0}/{1}".format(playlist["base"], video["src"]),
60                 "app": urlparse(playlist["base"]).path[1:],
61                 "pageUrl": self.url,
62                 "rtmp": playlist["base"],
63                 "playpath": video["src"],
64                 "live": True
65             })
66             streams[name] = stream
67 
68         return streams
69 
70     def _get_streams(self):
71         match = _url_re.match(self.url)
72         video_id = match.group("video_id")
73         channel = match.group("channel")
74 
75         if video_id:
76             return self._get_playlist(vod=video_id)
77         elif channel:
78             return self._get_playlist(channel=channel)
79 
80 __plugin__ = Cybergame
81
```
--- END FILES ---

Please first localize the bug based on the issue statement, and then generate a patch according to the `git diff` format fenced by three backticks.

Here is an example:

```diff
diff --git a/examples/server_async.py b/examples/server_async.py
--- a/examples/server_async.py
+++ b/examples/server_async.py
@@ -313,4 +313,4 @@
 
 
 if __name__ == "__main__":
-    asyncio.run(run_async_server("."), debug=True)
+    asyncio.run(run_async_server(), debug=True)
diff --git a/examples/server_sync.py b/examples/server_sync.py
--- a/examples/server_sync.py
+++ b/examples/server_sync.py
@@ -313,5 +313,5 @@
 
 
 if __name__ == "__main__":
-    server = run_sync_server(".")
+    server = run_sync_server()
     server.shutdown()

```

diff --git a/src/streamlink/plugins/cybergame.py b/src/streamlink/plugins/cybergame.py
--- a/src/streamlink/plugins/cybergame.py
+++ b/src/streamlink/plugins/cybergame.py
@@ -5,6 +5,7 @@
 from streamlink.plugin.api import http, validate
 from streamlink.stream import RTMPStream
 
+LIVE_STREAM_URL = "rtmp://stream1.cybergame.tv:2936/live/"
 PLAYLIST_URL = "http://api.cybergame.tv/p/playlist.smil"
 
 _url_re = re.compile("""
@@ -46,7 +47,7 @@
 
 class Cybergame(Plugin):
     @classmethod
-    def can_handle_url(self, url):
+    def can_handle_url(cls, url):
         return _url_re.match(url)
 
     def _get_playlist(self, **params):
@@ -75,6 +76,10 @@
         if video_id:
             return self._get_playlist(vod=video_id)
         elif channel:
-            return self._get_playlist(channel=channel)
+            return {'live': RTMPStream(
+                self.session,
+                dict(rtmp=LIVE_STREAM_URL, app="live", pageUrl=self.url, playpath=channel, live=True)
+            )}
+
 
 __plugin__ = Cybergame

{"golden_diff": "diff --git a/src/streamlink/plugins/cybergame.py b/src/streamlink/plugins/cybergame.py\n--- a/src/streamlink/plugins/cybergame.py\n+++ b/src/streamlink/plugins/cybergame.py\n@@ -5,6 +5,7 @@\n from streamlink.plugin.api import http, validate\n from streamlink.stream import RTMPStream\n \n+LIVE_STREAM_URL = \"rtmp://stream1.cybergame.tv:2936/live/\"\n PLAYLIST_URL = \"http://api.cybergame.tv/p/playlist.smil\"\n \n _url_re = re.compile(\"\"\"\n@@ -46,7 +47,7 @@\n \n class Cybergame(Plugin):\n     @classmethod\n-    def can_handle_url(self, url):\n+    def can_handle_url(cls, url):\n         return _url_re.match(url)\n \n     def _get_playlist(self, **params):\n@@ -75,6 +76,10 @@\n         if video_id:\n             return self._get_playlist(vod=video_id)\n         elif channel:\n-            return self._get_playlist(channel=channel)\n+            return {'live': RTMPStream(\n+                self.session,\n+                dict(rtmp=LIVE_STREAM_URL, app=\"live\", pageUrl=self.url, playpath=channel, live=True)\n+            )}\n+\n \n __plugin__ = Cybergame\n", "issue": "cybergame.tv plugin not work for livestreams\n`[cli][info] Found matching plugin cybergame for URL http://cybergame.tv/sharkisfinetoo/`\r\n`[cli][info] Available streams: 720p (worst, best)`\r\n`[cli][info] Opening stream: 720p (rtmp)`\r\n`[cli][error] No data returned from stream`\r\nFor stream\r\n`http://cybergame.tv/<channel>`\r\nInternet Download Manager  produces a link like\r\n`rtmp://cybergametv.cdnvideo.ru/cybergame//<channel>`\r\nVODs fine.\n", "before_files": [{"content": "import re\n\nfrom streamlink.compat import urlparse\nfrom streamlink.plugin import Plugin\nfrom streamlink.plugin.api import http, validate\nfrom streamlink.stream import RTMPStream\n\nPLAYLIST_URL = \"http://api.cybergame.tv/p/playlist.smil\"\n\n_url_re = re.compile(\"\"\"\n    http(s)?://(\\w+\\.)?cybergame.tv\n    (?:\n        /videos/(?P<video_id>\\d+)\n    )?\n    (?:\n        /(?P<channel>[^/&?]+)\n    )?\n\"\"\", re.VERBOSE)\n\n_playlist_schema = validate.Schema(\n    validate.union({\n        \"base\": validate.all(\n            validate.xml_find(\"./head/meta\"),\n            validate.get(\"base\"),\n            validate.url(scheme=\"rtmp\")\n        ),\n        \"videos\": validate.all(\n            validate.xml_findall(\".//video\"),\n            [\n                validate.union({\n                    \"src\": validate.all(\n                        validate.get(\"src\"),\n                        validate.text\n                    ),\n                    \"height\": validate.all(\n                        validate.get(\"height\"),\n                        validate.text,\n                        validate.transform(int)\n                    )\n                })\n            ]\n        )\n    })\n)\n\n\nclass Cybergame(Plugin):\n    @classmethod\n    def can_handle_url(self, url):\n        return _url_re.match(url)\n\n    def _get_playlist(self, **params):\n        res = http.get(PLAYLIST_URL, params=params)\n        playlist = http.xml(res, schema=_playlist_schema)\n        streams = {}\n        for video in playlist[\"videos\"]:\n            name = \"{0}p\".format(video[\"height\"])\n            stream = RTMPStream(self.session, {\n                \"rtmp\": \"{0}/{1}\".format(playlist[\"base\"], video[\"src\"]),\n                \"app\": urlparse(playlist[\"base\"]).path[1:],\n                \"pageUrl\": self.url,\n                \"rtmp\": playlist[\"base\"],\n                \"playpath\": video[\"src\"],\n                \"live\": True\n            })\n            streams[name] = stream\n\n        return streams\n\n    def _get_streams(self):\n        match = _url_re.match(self.url)\n        video_id = match.group(\"video_id\")\n        channel = match.group(\"channel\")\n\n        if video_id:\n            return self._get_playlist(vod=video_id)\n        elif channel:\n            return self._get_playlist(channel=channel)\n\n__plugin__ = Cybergame\n", "path": "src/streamlink/plugins/cybergame.py"}], "after_files": [{"content": "import re\n\nfrom streamlink.compat import urlparse\nfrom streamlink.plugin import Plugin\nfrom streamlink.plugin.api import http, validate\nfrom streamlink.stream import RTMPStream\n\nLIVE_STREAM_URL = \"rtmp://stream1.cybergame.tv:2936/live/\"\nPLAYLIST_URL = \"http://api.cybergame.tv/p/playlist.smil\"\n\n_url_re = re.compile(\"\"\"\n    http(s)?://(\\w+\\.)?cybergame.tv\n    (?:\n        /videos/(?P<video_id>\\d+)\n    )?\n    (?:\n        /(?P<channel>[^/&?]+)\n    )?\n\"\"\", re.VERBOSE)\n\n_playlist_schema = validate.Schema(\n    validate.union({\n        \"base\": validate.all(\n            validate.xml_find(\"./head/meta\"),\n            validate.get(\"base\"),\n            validate.url(scheme=\"rtmp\")\n        ),\n        \"videos\": validate.all(\n            validate.xml_findall(\".//video\"),\n            [\n                validate.union({\n                    \"src\": validate.all(\n                        validate.get(\"src\"),\n                        validate.text\n                    ),\n                    \"height\": validate.all(\n                        validate.get(\"height\"),\n                        validate.text,\n                        validate.transform(int)\n                    )\n                })\n            ]\n        )\n    })\n)\n\n\nclass Cybergame(Plugin):\n    @classmethod\n    def can_handle_url(cls, url):\n        return _url_re.match(url)\n\n    def _get_playlist(self, **params):\n        res = http.get(PLAYLIST_URL, params=params)\n        playlist = http.xml(res, schema=_playlist_schema)\n        streams = {}\n        for video in playlist[\"videos\"]:\n            name = \"{0}p\".format(video[\"height\"])\n            stream = RTMPStream(self.session, {\n                \"rtmp\": \"{0}/{1}\".format(playlist[\"base\"], video[\"src\"]),\n                \"app\": urlparse(playlist[\"base\"]).path[1:],\n                \"pageUrl\": self.url,\n                \"rtmp\": playlist[\"base\"],\n                \"playpath\": video[\"src\"],\n                \"live\": True\n            })\n            streams[name] = stream\n\n        return streams\n\n    def _get_streams(self):\n        match = _url_re.match(self.url)\n        video_id = match.group(\"video_id\")\n        channel = match.group(\"channel\")\n\n        if video_id:\n            return self._get_playlist(vod=video_id)\n        elif channel:\n            return {'live': RTMPStream(\n                self.session,\n                dict(rtmp=LIVE_STREAM_URL, app=\"live\", pageUrl=self.url, playpath=channel, live=True)\n            )}\n\n\n__plugin__ = Cybergame\n", "path": "src/streamlink/plugins/cybergame.py"}]}