internlm/SWE-Fixer-Train-110K huggingface dataset:
Repository: streamlink/streamlink

Issue:
Fox.com.tr not work with Streamlink
## **Checklist**

- [x] This is a bug report.
- [ ] This is a feature request.
- [ ] ] This is a plugin (improvement) request.
- [ ] I have read the contribution guidelines.

##  **Description**

 i cant see anything at fox.com.tr 
 i have test it with this links but i became black screen 

## **Reproduction steps / Explicit stream URLs to test**

https://www.fox.com.tr/canli-yayin


Discussion:
This is not the livestreamer repo.
thats right but its a plugin from streamlink look here 

Plugins

This is a list of the currently built in plugins and what URLs and features they support. Streamlink's primary focus is live streams, so VOD support is limited.

Name | URL(s) | Live | VOD | Notes
foxtr | fox.com.tr | Yes | No

https://streamlink.github.io/plugin_matrix.html



Resolving patch:
diff --git a/src/streamlink/plugins/foxtr.py b/src/streamlink/plugins/foxtr.py
--- a/src/streamlink/plugins/foxtr.py
+++ b/src/streamlink/plugins/foxtr.py
@@ -12,7 +12,7 @@ class FoxTR(Plugin):
     Support for Turkish Fox live stream: http://www.fox.com.tr/canli-yayin
     """
     url_re = re.compile(r"https?://www.fox.com.tr/canli-yayin")
-    playervars_re = re.compile(r"desktop\s*:\s*\[\s*\{\s*src\s*:\s*'(.*?)'", re.DOTALL)
+    playervars_re = re.compile(r"source\s*:\s*\[\s*\{\s*videoSrc\s*:\s*'(.*?)'", re.DOTALL)
 
     @classmethod
     def can_handle_url(cls, url):


Test patch:
Repository: streamlink/streamlink

Issue:
Kanal7, dogan (teve2) plugins defective!
Hi beardypig,

kanal7 and teve2 (dogan.py) are not working since 1 month ago.

ecanlitvizle from the canlitv.py needs a little fix too (changing ecanlitvizle.net to ecanlitvizle.tv)

Hope you will read here :)

Greetings
rotarum




Discussion:
i wait too but ecanli dont work 
hi, ecanlitvizle has changed the domain again and is now known as https://www.ecanlitvizle.live/
in this case canlitv.py needs to be altered again.

Resolving patch:
diff --git a/src/streamlink/plugins/dogan.py b/src/streamlink/plugins/dogan.py
--- a/src/streamlink/plugins/dogan.py
+++ b/src/streamlink/plugins/dogan.py
@@ -25,6 +25,7 @@ class Dogan(Plugin):
     playerctrl_re = re.compile(r'''<div[^>]*?ng-controller=(?P<quote>["'])(?:Live)?PlayerCtrl(?P=quote).*?>''', re.DOTALL)
     data_id_re = re.compile(r'''data-id=(?P<quote>["'])(?P<id>\w+)(?P=quote)''')
     content_id_re = re.compile(r'"content(?:I|i)d", "(\w+)"')
+    item_id_re = re.compile(r"_itemId\s+=\s+'(\w+)';")
     content_api = "/actions/content/media/{id}"
     new_content_api = "/action/media/{id}"
     content_api_schema = validate.Schema({
@@ -47,6 +48,7 @@ def _get_content_id(self):
         # find the contentId
         content_id_m = self.content_id_re.search(res.text)
         if content_id_m:
+            self.logger.debug("Found contentId by contentId regex")
             return content_id_m.group(1)
 
         # find the PlayerCtrl div
@@ -56,8 +58,15 @@ def _get_content_id(self):
             player_ctrl_div = player_ctrl_m.group(0)
             content_id_m = self.data_id_re.search(player_ctrl_div)
             if content_id_m:
+                self.logger.debug("Found contentId by player data-id regex")
                 return content_id_m.group("id")
 
+        # find the itemId var
+        item_id_m = self.item_id_re.search(res.text)
+        if item_id_m:
+            self.logger.debug("Found contentId by itemId regex")
+            return item_id_m.group(1)
+
     def _get_hls_url(self, content_id):
         # make the api url relative to the current domain
         if "cnnturk" in self.url or "teve2.com.tr" in self.url:


Test patch:
Repository: streamlink/streamlink

Issue:
BritTV in need of password ? 
 - [x] I have read the contribution guidelines.
 
Brit TV won't open for me any more, could it be it needs One's credentials ? 
How would that look ? --brittv-username=xxxx  --brittv-password=xxxx ?
(Tested of course).
```
C:\Users\Ordval>call streamlink.exe "http://brittv.co.uk/watch/?channel=1" best
[cli][info] Found matching plugin brittv for URL http://brittv.co.uk/watch/?channel=1
[cli][info] Waiting for streams, retrying every 1.0 second(s)
```

```
C:\Users\Ordval>call streamlink.exe  -l debug --http-header User-Agent=Chrome/54.0.2840.59 "https://brittv.co.uk/watch/?channel=1" best
[cli][debug] OS:   Windows 10
[cli][debug] Python:        3.5.2
[cli][debug] Streamlink: 0.11.0
[cli][debug] Requests(2.18.4), Socks(1.6.7), Websocket(0.47.0)
[cli][info] Found matching plugin brittv for URL https://brittv.co.uk/watch/?channel=1
[plugin.brittv][debug] Found js key: aHR0cDovL2IxYTJmODdjLmFyY2guYmx1d2FyZS50di9kYWcxLm0zdTg/c2lkPWV6ZCZjaWQ9YmJjMSZhdXRoPWMzUnBiV1U5TVRVeU5EUXlNVEEzTnlaMllXeHBaR2wwZVQwekptRm5iajB3Sm1OdmJtWTlkVEFtYzJsbmJqMDBZVEk1WVdFeE4yRmtNamswWWpWaFpqWXlaR1JpWkRnek5qZGtObUl6Wmc9PQ==
error: No playable streams found on this URL: https://brittv.co.uk/watch/?channel=1 
```
Opens on website.  The temporary:
`call streamlink.exe hls://"http://b1a2f87c.arch.bluware.tv/dag1.m3u8?sid=ezd&cid=bbc1&auth=c3RpbWU9MTUyNDQwMzQ5OCZ2YWxpZGl0eT0zJmFnbj0wJmNvbmY9dTAmc2lnbj00ZWY4NTExMjNmODBlOGU5MmVjZWE1ZWUzZDc4YzQ0Mg==" best `
will play.


Discussion:

Resolving patch:
diff --git a/src/streamlink/plugins/brittv.py b/src/streamlink/plugins/brittv.py
--- a/src/streamlink/plugins/brittv.py
+++ b/src/streamlink/plugins/brittv.py
@@ -10,7 +10,7 @@
 class BritTV(Plugin):
     url_re = re.compile(r"https?://(?:www\.)?brittv\.co.uk/watch/")
     js_re = re.compile(r"""/js/brittv\.player\.js\.php\?key=([^'"]+)['"]""")
-    player_re = re.compile(r"file: '(http://[^']+)'")
+    player_re = re.compile(r'''src\s*:\s*(?P<quote>['"])(https?://.+?)(?P=quote)''')
 
     @classmethod
     def can_handle_url(cls, url):
@@ -24,6 +24,7 @@ def _get_streams(self):
             js_url = m.group(0)
             res = http.get(urljoin(self.url, js_url))
 
+            self.logger.debug("Looking for stream URL...")
             for url in self.player_re.findall(res.text):
                 if "adblock" not in url:
                     yield "live", HLSStream(self.session, url)


Test patch:
Repository: streamlink/streamlink

Issue:
FILMON HLS Problem with Sat1 
- [x] This is a bug report.

### Description

The Channel Sat1 on Filmon can not be played with Streamlink

### Expected / Actual behavior

Normally all streams from FilmOn can be played via the streamlink. The channel Sat1 is played via the HLS protocol

### Reproduction steps / Explicit stream URLs to test

http://www.filmon.com/tv/sat-1-schweiz

### Logs

```
127.0.0.1 - - [25/Mar/2018 21:23:39] "GET /http://www.filmon.com/tv/rts-deux HTTP/1.1" 200 -
127.0.0.1 - - [25/Mar/2018 21:23:39] URL: http://www.filmon.com/tv/rts-deux Quality: best
[streamlinksrv][info] Streams:
[u'low', u'high', 'worst', 'best']
127.0.0.1 - - [25/Mar/2018 21:23:45] "GET /http://www.filmon.com/tv/sat-1-schweiz HTTP/1.1" 200 -
127.0.0.1 - - [25/Mar/2018 21:23:45] URL: http://www.filmon.com/tv/sat-1-schweiz Quality: best
[streamlinksrv][error] Plugin error: Unable to open URL: http://www.filmon.com/api-v2/channel/sat-1-schweiz?protocol=hls (404 Client Error: Not Found for url: http://www.filmon.com/api-v2/channel/sat-1-schweiz?protocol=hls)
[streamlinksrv][info] Closing currently open stream...
[streamlinksrv][error] Got exception: End Of Data!
```




Discussion:

Resolving patch:
diff --git a/src/streamlink/plugins/filmon.py b/src/streamlink/plugins/filmon.py
--- a/src/streamlink/plugins/filmon.py
+++ b/src/streamlink/plugins/filmon.py
@@ -89,16 +89,17 @@ def vod(self, vod_id):
 class Filmon(Plugin):
     url_re = re.compile(r"""https?://(?:\w+\.)?filmon.(?:tv|com)/
         (?:
-            (tv|channel)/(?P<channel>[^/]+)|
+            tv/|
+            channel/(?P<channel>\d+)|
             vod/view/(?P<vod_id>\d+)-|
             group/
         )
     """, re.VERBOSE)
 
-    _channel_id_re = re.compile(r'channel_id\s*?=\s*"(\d+)"')
+    _channel_id_re = re.compile(r"""channel_id\s*=\s*(?P<quote>['"]?)(?P<value>\d+)(?P=quote)""")
     _channel_id_schema = validate.Schema(
         validate.transform(_channel_id_re.search),
-        validate.any(None, validate.get(1))
+        validate.any(None, validate.get("value"))
     )
 
     quality_weights = {
@@ -136,6 +137,7 @@ def _get_streams(self):
         else:
             if not channel:
                 channel = http.get(self.url, schema=self._channel_id_schema)
+                self.logger.debug("Found channel ID: {0}", channel)
             data = self.api.channel(channel)
             for stream in data["streams"]:
                 yield stream["quality"], FilmOnHLS(self.session, channel=channel, quality=stream["quality"])


Test patch:
Repository: streamlink/streamlink

Issue:
itvplayer error

### Checklist

- [x] This is a bug report.
- [ ] This is a feature request.
- [ ] This is a plugin (improvement) request.
- [ ] I have read the contribution guidelines.

### Description
streamlink was opening itvplayer on all channels until the other day. i have updated to the latest version 0.11.0. this is on ubuntu 14.04
computer is located in the uk so should work uk

### Expected / Actual behavior
actual behavior error is
[cli][info] streamlink is running as root! Be careful!
[cli][info] Found matching plugin itvplayer for URL www.itv.com/hub/itv2
error: Unable to open URL: http://mercury.itv.com/PlaylistService.svc?wsdl (403 Client Error: Forbidden for url: http://mercury.itv.com/PlaylistService.svc?wsdl)
...

### Reproduction steps / Explicit stream URLs to test

1. ...www.itv.com/hub/itv2
2. ...
3. ...

### Logs

_Logs are always required for a bug report, use `-l debug` [(help)](https://streamlink.github.io/cli.html#cmdoption-l)
Make sure to **remove username and password**
You can upload your logs to https://gist.github.com/ or_

```
REPLACE THIS TEXT WITH YOUR LOG
```

### Comments, screenshots, etc.

...


[Love Streamlink? Please consider supporting our collective. Thanks!](https://opencollective.com/streamlink/donate)



Discussion:

Resolving patch:
diff --git a/src/streamlink/plugins/itvplayer.py b/src/streamlink/plugins/itvplayer.py
--- a/src/streamlink/plugins/itvplayer.py
+++ b/src/streamlink/plugins/itvplayer.py
@@ -38,7 +38,7 @@ def channel_id(self):
     def production_id(self):
         if self._stream not in CHANNEL_MAP:
             res = http.get(self.url, verify=False)
-            production_id_match = re.findall(r"&productionId=(.*?)['&\"]", res.text, flags=re.DOTALL)
+            production_id_match = re.findall(r'data-video-production-id="(.+?)"', res.text)
             if production_id_match:
                 return unquote(production_id_match[0])
             else:
@@ -53,14 +53,14 @@ def _get_streams(self):
 
         headers = {'Content-Length': '{0:d}'.format(len(soap_message)),
                    'Content-Type': 'text/xml; charset=utf-8',
-                   'Host': 'mercury.itv.com',
+                   'Host': 'secure-mercury.itv.com',
                    'Origin': 'http://www.itv.com',
                    'Referer': 'http://www.itv.com/Mercury/Mercury_VideoPlayer.swf?v=null',
                    'SOAPAction': "http://tempuri.org/PlaylistService/GetPlaylist",
                    'User-Agent': ITV_PLAYER_USER_AGENT,
                    "X-Requested-With": "ShockwaveFlash/16.0.0.305"}
 
-        res = http.post("http://mercury.itv.com/PlaylistService.svc?wsdl",
+        res = http.post("https://secure-mercury.itv.com/PlaylistService.svc?wsdl",
                         headers=headers,
                         data=soap_message)
 


Test patch:
Repository: streamlink/streamlink

Issue:
raiplay.it error: Forbidden for url
### Checklist

- [x] This is a bug report.
- [ ] This is a feature request.
- [ ] This is a plugin (improvement) request.
- [ ] I have read the contribution guidelines.

### Description

When I'm trying to stream any raiplay.it live TV station I always get a "Forbidden for url" error. However, when I'm using Firefox to visit a Rai TV stream, the stream is opened up correctly.

### Reproduction steps / Explicit stream URLs to test

Link / command to test: streamlink https://www.raiplay.it/dirette/rai2

### Logs

[cli][debug] OS:         Linux-4.13.0-38-generic-x86_64-with-Ubuntu-17.10-artful
[cli][debug] Python:     3.6.3
[cli][debug] Streamlink: 0.11.0
[cli][debug] Requests(2.18.4), Socks(1.6.7), Websocket(0.47.0)
[cli][info] Found matching plugin raiplay for URL https://www.raiplay.it/dirette/rai2
[plugin.raiplay][debug] Found channel: rai2
error: Unable to open URL: http://mediapolis.rai.it/relinker/relinkerServlet.htm?cont=180116 (403 Client Error: Forbidden for url: http://mediapolis.rai.it/relinker/relinkerServlet.htm?cont=180116)

### Comments, screenshots, etc.

In order to access the RAI streaming channels you need an Italian IP address. However there is one channel which is also accessible outside of Italy which is RaiNews24: https://www.raiplay.it/dirette/rainews24
If you use this channel you get the same error / behavior.


Discussion:

Resolving patch:
diff --git a/src/streamlink/plugins/raiplay.py b/src/streamlink/plugins/raiplay.py
--- a/src/streamlink/plugins/raiplay.py
+++ b/src/streamlink/plugins/raiplay.py
@@ -2,7 +2,7 @@
 import re
 
 from streamlink.plugin import Plugin
-from streamlink.plugin.api import http
+from streamlink.plugin.api import http, useragents
 from streamlink.plugin.api import validate
 from streamlink.stream import HLSStream
 
@@ -29,7 +29,7 @@ def _get_streams(self):
         self.logger.debug("Found channel: {0}", channel)
         stream_url = http.get(self.url, schema=self.stream_schema)
         if stream_url:
-            return HLSStream.parse_variant_playlist(self.session, stream_url)
+            return HLSStream.parse_variant_playlist(self.session, stream_url, headers={"User-Agent": useragents.CHROME})
 
 
 __plugin__ = RaiPlay


Test patch:
Repository: streamlink/streamlink

Issue:
[patch] Support https on tvcatchup.com
The problem:
```
tmp (lonefox): streamlink https://tvcatchup.com/watch/bbcone best
error: No plugin can handle URL: https://tvcatchup.com/watch/bbcone
```

The solution:
```
diff -bur streamlink-0.12.1-orig/src/streamlink/plugins/tvcatchup.py streamlink-0.12.1/src/streamlink/plugins/tvcatchup.py
--- streamlink-0.12.1-orig/src/streamlink/plugins/tvcatchup.py	2018-05-07 18:01:30.000000000 +0300
+++ streamlink-0.12.1/src/streamlink/plugins/tvcatchup.py	2018-05-26 08:54:47.000000000 +0300
@@ -5,7 +5,7 @@
 from streamlink.stream import HLSStream
 
 USER_AGENT = "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2228.0 Safari/537.36"
-_url_re = re.compile(r"http://(?:www\.)?tvcatchup.com/watch/\w+")
+_url_re = re.compile(r"https?://(?:www\.)?tvcatchup.com/watch/\w+")
 _stream_re = re.compile(r'''source.*?(?P<q>["'])(?P<stream_url>https?://.*m3u8\?.*clientKey=.*?)(?P=q)''')
 
 

```


Discussion:

Resolving patch:
diff --git a/src/streamlink/plugins/tvcatchup.py b/src/streamlink/plugins/tvcatchup.py
--- a/src/streamlink/plugins/tvcatchup.py
+++ b/src/streamlink/plugins/tvcatchup.py
@@ -5,7 +5,7 @@
 from streamlink.stream import HLSStream
 
 USER_AGENT = "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2228.0 Safari/537.36"
-_url_re = re.compile(r"http://(?:www\.)?tvcatchup.com/watch/\w+")
+_url_re = re.compile(r"https?://(?:www\.)?tvcatchup.com/watch/\w+")
 _stream_re = re.compile(r'''source.*?(?P<q>["'])(?P<stream_url>https?://.*m3u8\?.*clientKey=.*?)(?P=q)''')
 
 


Test patch:
diff --git a/tests/test_plugin_tvcatchup.py b/tests/test_plugin_tvcatchup.py
new file mode 100644
--- /dev/null
+++ b/tests/test_plugin_tvcatchup.py
@@ -0,0 +1,16 @@
+import unittest
+
+from streamlink.plugins.tvcatchup import TVCatchup
+
+
+class TestPluginTVCatchup(unittest.TestCase):
+    def test_can_handle_url(self):
+        # should match
+        self.assertTrue(TVCatchup.can_handle_url("http://tvcatchup.com/watch/bbcone"))
+        self.assertTrue(TVCatchup.can_handle_url("http://www.tvcatchup.com/watch/five"))
+        self.assertTrue(TVCatchup.can_handle_url("https://www.tvcatchup.com/watch/bbctwo"))
+
+        # shouldn't match
+        self.assertFalse(TVCatchup.can_handle_url("http://www.tvplayer.com/"))
+        self.assertFalse(TVCatchup.can_handle_url("http://www.tvcatchup.com/"))
+        self.assertFalse(TVCatchup.can_handle_url("http://www.youtube.com/"))
\ No newline at end of file
Repository: streamlink/streamlink

Issue:
Vaughnlive RTMP port changed from 1935 to 2935
Very brief bug, very simple fix.

rtmp_server_map for all requests uses 192.240.105.171:1935 and doesn't work. (No data returned from stream)
rtmp_server_map change all requests to 192.240.105.171:2935 works for me.



Discussion:
Thanks for the info @jshir, did you want to create a PR?
Sure, can you authorize me on this repository then?

Resolving patch:
diff --git a/src/streamlink/plugins/vaughnlive.py b/src/streamlink/plugins/vaughnlive.py
--- a/src/streamlink/plugins/vaughnlive.py
+++ b/src/streamlink/plugins/vaughnlive.py
@@ -40,10 +40,10 @@ class VaughnLive(Plugin):
                                                                                                    range(1, 6))]
     origin = "https://vaughnlive.tv"
     rtmp_server_map = {
-        "594140c69edad": "192.240.105.171:1935",
-        "585c4cab1bef1": "192.240.105.171:1935",
-        "5940d648b3929": "192.240.105.171:1935",
-        "5941854b39bc4": "192.240.105.171:1935"
+        "594140c69edad": "192.240.105.171:2935",
+        "585c4cab1bef1": "192.240.105.171:2935",
+        "5940d648b3929": "192.240.105.171:2935",
+        "5941854b39bc4": "192.240.105.171:2935"
     }
     name_remap = {"#vl": "live", "#btv": "btv", "#pt": "pt", "#igb": "instagib", "#vtv": "vtv"}
     domain_map = {"vaughnlive": "#vl", "breakers": "#btv", "instagib": "#igb", "vapers": "#vtv", "pearltime": "#pt"}


Test patch:
Repository: streamlink/streamlink

Issue:
Problem with '--quiet' or '--json' options
### Checklist

- [x] This is a bug report.
- [ ] This is a feature request.
- [ ] This is a plugin (improvement) request.
- [ ] I have read the contribution guidelines.

### Description

With previous versions, add '--json' option to command line print JSON information without traditional debug info : `[console][info] ....`
Today, these debug lines are constantly present, whether the '--quiet' option is there or not

### Expected / Actual behavior

print desired information with the correct options

### Reproduction steps / Explicit stream URLs to test

1. `streamlink "https://rmcsport.bfmtv.com/mediaplayer/live-bfm-sport/" --json`
2. observe first line in the console output `[console][info] Found matching plugin bfmtv for URL https://rmcsport.bfmtv.com/mediaplayer/live-bfm-sport/`



Discussion:
ok. I've to specify `-l none` ...
so quiet alias doesn't work

Resolving patch:
diff --git a/src/streamlink_cli/main.py b/src/streamlink_cli/main.py
--- a/src/streamlink_cli/main.py
+++ b/src/streamlink_cli/main.py
@@ -663,10 +663,6 @@ def setup_console(output):
     # All console related operations is handled via the ConsoleOutput class
     console = ConsoleOutput(output, streamlink)
 
-    # We don't want log output when we are printing JSON or a command-line.
-    if not any(getattr(args, attr) for attr in QUIET_OPTIONS):
-        console.set_level(args.loglevel)
-
     if args.quiet_player:
         log.warning("The option --quiet-player is deprecated since "
                     "version 1.4.3 as hiding player output is now "
@@ -955,7 +951,12 @@ def main():
         console_out = sys.stderr
     else:
         console_out = sys.stdout
-    setup_logging(console_out, args.loglevel)
+
+    # We don't want log output when we are printing JSON or a command-line.
+    silent_log = any(getattr(args, attr) for attr in QUIET_OPTIONS)
+    log_level = args.loglevel if not silent_log else "none"
+    setup_logging(console_out, log_level)
+
     setup_streamlink()
     # load additional plugins
     setup_plugins(args.plugin_dirs)
@@ -963,8 +964,11 @@ def main():
     # call setup args again once the plugin specific args have been added
     setup_args(parser)
     setup_config_args(parser)
+
     # update the logging level if changed by a plugin specific config
-    logger.root.setLevel(args.loglevel)
+    log_level = args.loglevel if not silent_log else "none"
+    logger.root.setLevel(log_level)
+
     setup_console(console_out)
     setup_http_session()
     check_root()


Test patch:
Repository: streamlink/streamlink

Issue:
Remove 9anime.to
As discussed over here: https://github.com/streamlink/streamlink/issues/1110#issuecomment-400687075 9anime.to isn't worth supporting at this point and is broken so I'm proposing we remove it.



Discussion:

Resolving patch:
diff --git a/src/streamlink/plugins/nineanime.py b/src/streamlink/plugins/nineanime.py
--- a/src/streamlink/plugins/nineanime.py
+++ b/src/streamlink/plugins/nineanime.py
@@ -1,69 +1 @@
-import re
-from streamlink.plugin import Plugin
-from streamlink.plugin.api import http
-from streamlink.plugin.api import useragents
-from streamlink.plugin.api import validate
-from streamlink.stream import HTTPStream
-from streamlink.compat import urlparse
-
-
-class NineAnime(Plugin):
-    _episode_info_url = "//9anime.to/ajax/episode/info"
-
-    _info_schema = validate.Schema({
-        "grabber": validate.url(),
-        "params": {
-            "id": validate.text,
-            "token": validate.text,
-            "options": validate.text,
-        }
-    })
-
-    _streams_schema = validate.Schema({
-        "token": validate.text,
-        "error": None,
-        "data": [{
-            "label": validate.text,
-            "file": validate.url(),
-            "type": "mp4"
-        }]
-    })
-
-    _url_re = re.compile(r"https?://9anime.to/watch/(?:[^.]+?\.)(\w+)/(\w+)")
-
-    @classmethod
-    def can_handle_url(cls, url):
-        return cls._url_re.match(url) is not None
-
-    def add_scheme(self, url):
-        # update the scheme for the grabber url if required
-        if url.startswith("//"):
-            url = "{0}:{1}".format(urlparse(self.url).scheme, url)
-        return url
-
-    @Plugin.broken(1110)
-    def _get_streams(self):
-        match = self._url_re.match(self.url)
-        film_id, episode_id = match.groups()
-
-        headers = {
-            "Referer": self.url,
-            "User-Agent": useragents.FIREFOX
-        }
-
-        # Get the info about the Episode, including the Grabber API URL
-        info_res = http.get(self.add_scheme(self._episode_info_url),
-                            params=dict(update=0, film=film_id, id=episode_id),
-                            headers=headers)
-        info = http.json(info_res, schema=self._info_schema)
-
-        # Get the data about the streams from the Grabber API
-        grabber_url = self.add_scheme(info["grabber"])
-        stream_list_res = http.get(grabber_url, params=info["params"], headers=headers)
-        stream_data = http.json(stream_list_res, schema=self._streams_schema)
-
-        for stream in stream_data["data"]:
-            yield stream["label"], HTTPStream(self.session, stream["file"])
-
-
-__plugin__ = NineAnime
+# Plugin removed - https://github.com/streamlink/streamlink/issues/1862


Test patch: