Repository: streamlink/streamlink

Issue:
https://www.micous.com/ Site closing webcasts
<!--
Thanks for reporting a plugin issue!
USE THE TEMPLATE. Otherwise your plugin issue may be rejected.

First, see the contribution guidelines:
https://github.com/streamlink/streamlink/blob/master/CONTRIBUTING.md#contributing-to-streamlink

Also check the list of open and closed plugin issues:
https://github.com/streamlink/streamlink/issues?q=is%3Aissue+label%3A%22plugin+issue%22

Please see the text preview to avoid unnecessary formatting errors.
-->


## Plugin Issue

<!-- Replace the space character between the square brackets with an x in order to check the boxes -->
- [ ] This is a plugin issue and I have read the contribution guidelines.
- [ ] I am using the latest development version from the master branch.


### Description
I was checking the m3u8 codes for Tango Live so that it would benefit people and maybe we can bring plugins but now I have checked and the mico.us plugin does not work because mico.us is no longer working. It looks like it has turned off broadcasting and playback, I guess only broadcasts can be followed through the application and need to be checked. 
<!-- Explain the plugin issue as thoroughly as you can. -->


### Reproduction steps / Explicit stream URLs to test
this? Please note the exact steps below using the list format supplied. If you need more steps please add them. -->

1. ...https://www.micous.com/
2. ...
3. ...


### Log output

<!--
TEXT LOG OUTPUT IS REQUIRED for a plugin issue!
Use the `--loglevel debug` parameter and avoid using parameters which suppress log output.
https://streamlink.github.io/cli.html#cmdoption-l

Make sure to **remove usernames and passwords**
You can copy the output to https://gist.github.com/ or paste it below.

Don't post screenshots of the log output and instead copy the text from your terminal application.
-->

```
REPLACE THIS TEXT WITH THE LOG OUTPUT
```


### Additional comments, etc.



[Love Streamlink? Please consider supporting our collective. Thanks!](https://opencollective.com/streamlink/donate)



Discussion:

Resolving patch:
diff --git a/src/streamlink/plugins/mico.py b/src/streamlink/plugins/mico.py
deleted file mode 100644
--- a/src/streamlink/plugins/mico.py
+++ /dev/null
@@ -1,72 +0,0 @@
-import logging
-import re
-
-from streamlink.plugin import Plugin
-from streamlink.plugin.api import validate
-from streamlink.stream import HLSStream
-from streamlink.utils import parse_json
-from streamlink.utils.url import update_scheme
-
-log = logging.getLogger(__name__)
-
-
-class Mico(Plugin):
-    author = None
-    category = None
-    title = None
-
-    url_re = re.compile(r'https?://(?:www\.)?micous\.com/live/\d+')
-    json_data_re = re.compile(r'win._profile\s*=\s*({.*})')
-
-    _json_data_schema = validate.Schema(
-        validate.transform(json_data_re.search),
-        validate.any(None, validate.all(
-            validate.get(1),
-            validate.transform(parse_json),
-            validate.any(None, validate.all({
-                'mico_id': int,
-                'nickname': validate.text,
-                'h5_url': validate.all(
-                    validate.transform(lambda x: update_scheme('http:', x)),
-                    validate.url(),
-                ),
-                'is_live': bool,
-            })),
-        )),
-    )
-
-    @classmethod
-    def can_handle_url(cls, url):
-        return cls.url_re.match(url) is not None
-
-    def get_author(self):
-        if self.author is not None:
-            return self.author
-
-    def get_category(self):
-        if self.category is not None:
-            return self.category
-
-    def get_title(self):
-        if self.title is not None:
-            return self.title
-
-    def _get_streams(self):
-        json_data = self.session.http.get(self.url, schema=self._json_data_schema)
-
-        if not json_data:
-            log.error('Failed to get JSON data')
-            return
-
-        if not json_data['is_live']:
-            log.info('This stream is no longer online')
-            return
-
-        self.author = json_data['mico_id']
-        self.category = 'Live'
-        self.title = json_data['nickname']
-
-        return HLSStream.parse_variant_playlist(self.session, json_data['h5_url'])
-
-
-__plugin__ = Mico


Test patch:
diff --git a/tests/plugins/test_mico.py b/tests/plugins/test_mico.py
deleted file mode 100644
--- a/tests/plugins/test_mico.py
+++ /dev/null
@@ -1,23 +0,0 @@
-import unittest
-
-from streamlink.plugins.mico import Mico
-
-
-class TestPluginMico(unittest.TestCase):
-    def test_can_handle_url(self):
-        should_match = [
-            'http://micous.com/live/73750760',
-            'http://www.micous.com/live/73750760',
-            'https://micous.com/live/73750760',
-            'https://www.micous.com/live/73750760',
-        ]
-        for url in should_match:
-            self.assertTrue(Mico.can_handle_url(url))
-
-    def test_can_handle_url_negative(self):
-        should_not_match = [
-            'http://www.micous.com/73750760',
-            'https://example.com/index.html',
-        ]
-        for url in should_not_match:
-            self.assertFalse(Mico.can_handle_url(url))