Repository: streamlink/streamlink

Issue:
plugins.vkplay: vkplay.live has moved to another domain (live.vkplay.ru)
### Checklist

- [X] This is a [plugin issue](https://streamlink.github.io/plugins.html) and not [a different kind of issue](https://github.com/streamlink/streamlink/issues/new/choose)
- [X] [I have read the contribution guidelines](https://github.com/streamlink/streamlink/blob/master/CONTRIBUTING.md#contributing-to-streamlink)
- [X] [I have checked the list of open and recently closed plugin issues](https://github.com/streamlink/streamlink/issues?q=is%3Aissue+label%3A%22plugin+issue%22)
- [X] [I have checked the commit log of the master branch](https://github.com/streamlink/streamlink/commits/master)

### Streamlink version

streamlink 6.7.2

### Description

https://vk.com/wall-212496568_91026

yesterday, vkplay live changed its domain. if you specify the old domain in the link to the stream, then everything still works, but on the site itself there are links to a new domain, to which the existing plugin does not respond.

I just tried to change the updated part of the domain in the plugin code (vkplay.live -> live.vkplay.ru ), and everything seems to be working well. It's a bit difficult for me to create a pull request, but here's the corrected plugin on gist:
https://gist.github.com/oexlkinq/eef0a260dddad473c5febafd91b980d9

the old domain is also listed in the documentation (https://streamlink.github.io/plugins.html#vkplay)

### Debug log

```text
streamlink https://live.vkplay.ru/ruwarface 720p --loglevel=debug
[cli][debug] OS:         Linux-6.8.1-arch1-1-x86_64-with-glibc2.39
[cli][debug] Python:     3.11.8
[cli][debug] OpenSSL:    OpenSSL 3.2.1 30 Jan 2024
[cli][debug] Streamlink: 6.7.2
[cli][debug] Dependencies:
[cli][debug]  certifi: 2024.2.2
[cli][debug]  exceptiongroup: 1.2.0
[cli][debug]  isodate: 0.6.1
[cli][debug]  lxml: 5.1.0
[cli][debug]  pycountry: 23.12.11
[cli][debug]  pycryptodome: 3.20.0
[cli][debug]  PySocks: 1.7.1
[cli][debug]  requests: 2.31.0
[cli][debug]  trio: 0.25.0
[cli][debug]  trio-websocket: 0.11.1
[cli][debug]  typing-extensions: 4.10.0
[cli][debug]  urllib3: 1.26.18
[cli][debug]  websocket-client: 1.7.0
[cli][debug] Arguments:
[cli][debug]  url=https://live.vkplay.ru/ruwarface
[cli][debug]  stream=['720p']
[cli][debug]  --loglevel=debug
error: No plugin can handle URL: https://live.vkplay.ru/ruwarface
```


Discussion:

Patch:
diff --git a/src/streamlink/plugins/vkplay.py b/src/streamlink/plugins/vkplay.py
index 0d23aba5..528bfac9 100644
--- a/src/streamlink/plugins/vkplay.py
+++ b/src/streamlink/plugins/vkplay.py
@@ -1,6 +1,6 @@
 """
 $description Russian live-streaming platform for gaming and esports, owned by VKontakte.
-$url vkplay.live
+$url live.vkplay.ru
 $type live
 $metadata id
 $metadata author
@@ -20,13 +20,13 @@ log = logging.getLogger(__name__)
 
 
 @pluginmatcher(re.compile(
-    r"https?://vkplay\.live/(?P<channel_name>\w+)/?$",
+    r"https?://(?:live\.vkplay\.ru|vkplay\.live)/(?P<channel_name>\w+)/?$",
 ))
 class VKplay(Plugin):
-    API_URL = "https://api.vkplay.live/v1"
+    API_URL = "https://api.live.vkplay.ru/v1"
 
     def _get_streams(self):
-        self.author = self.match.group("channel_name")
+        self.author = self.match["channel_name"]
         log.debug(f"Channel name: {self.author}")
 
         data = self.session.http.get(


Test patch:
diff --git a/tests/plugins/test_vkplay.py b/tests/plugins/test_vkplay.py
index d995ee8e..3bb7377d 100644
--- a/tests/plugins/test_vkplay.py
+++ b/tests/plugins/test_vkplay.py
@@ -6,10 +6,12 @@ class TestPluginCanHandleUrlVKplay(PluginCanHandleUrl):
     __plugin__ = VKplay
 
     should_match = [
-        "https://vkplay.live/Channel_Name_123",
+        "https://live.vkplay.ru/CHANNEL",
+        "https://vkplay.live/CHANNEL",
     ]
 
     should_not_match = [
+        "https://live.vkplay.ru/",
         "https://vkplay.live/",
         "https://support.vkplay.ru/vkp_live",
         "https://vkplay.live/app/settings/edit",