prompt: We are currently solving the following issue within our repository. Here is the issue text:
  --- BEGIN ISSUE ---
  Can't find "tv3cat" plugin
  ## Plugin Issue
  
  <!-- Replace [ ] with [x] in order to check the box -->
  - [ X ] This is a plugin issue and I have read the contribution guidelines.
  
  
  ### Description
  
  <!-- Explain the plugin issue as thoroughly as you can. -->
  
  A image is worth a thousand words.
  
  ![imatge](https://user-images.githubusercontent.com/7274874/95747957-925c8a80-0c99-11eb-95f9-5d37261e0429.png)
  
  ### Reproduction steps 
  
  <!-- How can we reproduce this? Please note the exact steps below using the list format supplied. If you need more steps please add them. -->
  
  I've just using the "python3-streamlink" package provided by Fedora 32
  
  Thanks!
  
  
  --- 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/tv3cat.py`
  Content:
  ```
  1 import logging
  2 import re
  3 
  4 from streamlink.plugin import Plugin, PluginError
  5 from streamlink.stream import HLSStream
  6 from streamlink.plugin.api import validate
  7 
  8 log = logging.getLogger(__name__)
  9 
  10 
  11 class TV3Cat(Plugin):
  12     _url_re = re.compile(r"http://(?:www.)?ccma.cat/tv3/directe/(.+?)/")
  13     _stream_info_url = "http://dinamics.ccma.cat/pvideo/media.jsp" \
  14                        "?media=video&version=0s&idint={ident}&profile=pc&desplacament=0"
  15     _media_schema = validate.Schema({
  16         "geo": validate.text,
  17         "url": validate.url(scheme=validate.any("http", "https"))
  18     })
  19     _channel_schema = validate.Schema({
  20         "media": validate.any([_media_schema], _media_schema)},
  21         validate.get("media"),
  22         # If there is only one item, it's not a list ... silly
  23         validate.transform(lambda x: x if isinstance(x, list) else [x])
  24     )
  25 
  26     @classmethod
  27     def can_handle_url(cls, url):
  28         return cls._url_re.match(url) is not None
  29 
  30     def _get_streams(self):
  31         match = self._url_re.match(self.url)
  32         if match:
  33             ident = match.group(1)
  34             data_url = self._stream_info_url.format(ident=ident)
  35             stream_infos = self.session.http.json(self.session.http.get(data_url), schema=self._channel_schema)
  36 
  37             for stream in stream_infos:
  38                 try:
  39                     return HLSStream.parse_variant_playlist(self.session, stream['url'], name_fmt="{pixels}_{bitrate}")
  40                 except PluginError:
  41                     log.debug("Failed to get streams for: {0}".format(stream['geo']))
  42                     pass
  43 
  44 
  45 __plugin__ = TV3Cat
  46
  ```
  --- 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()
  
  ```
  
golden_diff: diff --git a/src/streamlink/plugins/tv3cat.py b/src/streamlink/plugins/tv3cat.py
  --- a/src/streamlink/plugins/tv3cat.py
  +++ b/src/streamlink/plugins/tv3cat.py
  @@ -9,7 +9,7 @@
   
   
   class TV3Cat(Plugin):
  -    _url_re = re.compile(r"http://(?:www.)?ccma.cat/tv3/directe/(.+?)/")
  +    _url_re = re.compile(r"https?://(?:www\.)?ccma\.cat/tv3/directe/(.+?)/")
       _stream_info_url = "http://dinamics.ccma.cat/pvideo/media.jsp" \
                          "?media=video&version=0s&idint={ident}&profile=pc&desplacament=0"
       _media_schema = validate.Schema({
  @@ -39,7 +39,6 @@
                       return HLSStream.parse_variant_playlist(self.session, stream['url'], name_fmt="{pixels}_{bitrate}")
                   except PluginError:
                       log.debug("Failed to get streams for: {0}".format(stream['geo']))
  -                    pass
   
   
   __plugin__ = TV3Cat
  
verification_info: {"golden_diff": "diff --git a/src/streamlink/plugins/tv3cat.py b/src/streamlink/plugins/tv3cat.py\n--- a/src/streamlink/plugins/tv3cat.py\n+++ b/src/streamlink/plugins/tv3cat.py\n@@ -9,7 +9,7 @@\n \n \n class TV3Cat(Plugin):\n-    _url_re = re.compile(r\"http://(?:www.)?ccma.cat/tv3/directe/(.+?)/\")\n+    _url_re = re.compile(r\"https?://(?:www\\.)?ccma\\.cat/tv3/directe/(.+?)/\")\n     _stream_info_url = \"http://dinamics.ccma.cat/pvideo/media.jsp\" \\\n                        \"?media=video&version=0s&idint={ident}&profile=pc&desplacament=0\"\n     _media_schema = validate.Schema({\n@@ -39,7 +39,6 @@\n                     return HLSStream.parse_variant_playlist(self.session, stream['url'], name_fmt=\"{pixels}_{bitrate}\")\n                 except PluginError:\n                     log.debug(\"Failed to get streams for: {0}\".format(stream['geo']))\n-                    pass\n \n \n __plugin__ = TV3Cat\n", "issue": "Can't find \"tv3cat\" plugin\n## Plugin Issue\r\n\r\n<!-- Replace [ ] with [x] in order to check the box -->\r\n- [ X ] This is a plugin issue and I have read the contribution guidelines.\r\n\r\n\r\n### Description\r\n\r\n<!-- Explain the plugin issue as thoroughly as you can. -->\r\n\r\nA image is worth a thousand words.\r\n\r\n![imatge](https://user-images.githubusercontent.com/7274874/95747957-925c8a80-0c99-11eb-95f9-5d37261e0429.png)\r\n\r\n### Reproduction steps \r\n\r\n<!-- How can we reproduce this? Please note the exact steps below using the list format supplied. If you need more steps please add them. -->\r\n\r\nI've just using the \"python3-streamlink\" package provided by Fedora 32\r\n\r\nThanks!\r\n\n", "before_files": [{"content": "import logging\nimport re\n\nfrom streamlink.plugin import Plugin, PluginError\nfrom streamlink.stream import HLSStream\nfrom streamlink.plugin.api import validate\n\nlog = logging.getLogger(__name__)\n\n\nclass TV3Cat(Plugin):\n    _url_re = re.compile(r\"http://(?:www.)?ccma.cat/tv3/directe/(.+?)/\")\n    _stream_info_url = \"http://dinamics.ccma.cat/pvideo/media.jsp\" \\\n                       \"?media=video&version=0s&idint={ident}&profile=pc&desplacament=0\"\n    _media_schema = validate.Schema({\n        \"geo\": validate.text,\n        \"url\": validate.url(scheme=validate.any(\"http\", \"https\"))\n    })\n    _channel_schema = validate.Schema({\n        \"media\": validate.any([_media_schema], _media_schema)},\n        validate.get(\"media\"),\n        # If there is only one item, it's not a list ... silly\n        validate.transform(lambda x: x if isinstance(x, list) else [x])\n    )\n\n    @classmethod\n    def can_handle_url(cls, url):\n        return cls._url_re.match(url) is not None\n\n    def _get_streams(self):\n        match = self._url_re.match(self.url)\n        if match:\n            ident = match.group(1)\n            data_url = self._stream_info_url.format(ident=ident)\n            stream_infos = self.session.http.json(self.session.http.get(data_url), schema=self._channel_schema)\n\n            for stream in stream_infos:\n                try:\n                    return HLSStream.parse_variant_playlist(self.session, stream['url'], name_fmt=\"{pixels}_{bitrate}\")\n                except PluginError:\n                    log.debug(\"Failed to get streams for: {0}\".format(stream['geo']))\n                    pass\n\n\n__plugin__ = TV3Cat\n", "path": "src/streamlink/plugins/tv3cat.py"}], "after_files": [{"content": "import logging\nimport re\n\nfrom streamlink.plugin import Plugin, PluginError\nfrom streamlink.stream import HLSStream\nfrom streamlink.plugin.api import validate\n\nlog = logging.getLogger(__name__)\n\n\nclass TV3Cat(Plugin):\n    _url_re = re.compile(r\"https?://(?:www\\.)?ccma\\.cat/tv3/directe/(.+?)/\")\n    _stream_info_url = \"http://dinamics.ccma.cat/pvideo/media.jsp\" \\\n                       \"?media=video&version=0s&idint={ident}&profile=pc&desplacament=0\"\n    _media_schema = validate.Schema({\n        \"geo\": validate.text,\n        \"url\": validate.url(scheme=validate.any(\"http\", \"https\"))\n    })\n    _channel_schema = validate.Schema({\n        \"media\": validate.any([_media_schema], _media_schema)},\n        validate.get(\"media\"),\n        # If there is only one item, it's not a list ... silly\n        validate.transform(lambda x: x if isinstance(x, list) else [x])\n    )\n\n    @classmethod\n    def can_handle_url(cls, url):\n        return cls._url_re.match(url) is not None\n\n    def _get_streams(self):\n        match = self._url_re.match(self.url)\n        if match:\n            ident = match.group(1)\n            data_url = self._stream_info_url.format(ident=ident)\n            stream_infos = self.session.http.json(self.session.http.get(data_url), schema=self._channel_schema)\n\n            for stream in stream_infos:\n                try:\n                    return HLSStream.parse_variant_playlist(self.session, stream['url'], name_fmt=\"{pixels}_{bitrate}\")\n                except PluginError:\n                    log.debug(\"Failed to get streams for: {0}\".format(stream['geo']))\n\n\n__plugin__ = TV3Cat\n", "path": "src/streamlink/plugins/tv3cat.py"}]}