We are currently solving the following issue within our repository. Here is the issue text:
--- BEGIN ISSUE ---
Switch to GitHub Actions for CI
### Motivation for changes:
Try out github actions as a replacement for circleci
Hopefully we don't need to maintain custom docker images this way

#### To Do:

- [ ] Get it working
- [ ] Verify we like it better than circleci
- [ ] Add a release workflow


--- END ISSUE ---

Below are some code segments, each from a relevant file. One or more of these files may contain bugs.
--- BEGIN FILES ---
Path: `flexget/plugins/output/pyload.py`
Content:
```
1 # -*- coding: utf-8 -*-
2 
3 from __future__ import unicode_literals, division, absolute_import
4 from logging import getLogger
5 from urllib import quote
6 
7 from requests.exceptions import RequestException
8 
9 from flexget import plugin, validator
10 from flexget.event import event
11 from flexget.utils import json, requests
12 
13 log = getLogger('pyload')
14 
15 
16 class PluginPyLoad(object):
17     """
18     Parse task content or url for hoster links and adds them to pyLoad.
19 
20     Example::
21 
22       pyload:
23         api: http://localhost:8000/api
24         queue: yes
25         username: my_username
26         password: my_password
27         folder: desired_folder
28         package: desired_package_name (jinja2 supported)
29         hoster:
30           - YoutubeCom
31         parse_url: no
32         multiple_hoster: yes
33         enabled: yes
34 
35     Default values for the config elements::
36 
37       pyload:
38           api: http://localhost:8000/api
39           queue: no
40           hoster: ALL
41           parse_url: no
42           multiple_hoster: yes
43           enabled: yes
44     """
45 
46     __author__ = 'http://pyload.org'
47     __version__ = '0.4'
48 
49     DEFAULT_API = 'http://localhost:8000/api'
50     DEFAULT_QUEUE = False
51     DEFAULT_FOLDER = ''
52     DEFAULT_HOSTER = []
53     DEFAULT_PARSE_URL = False
54     DEFAULT_MULTIPLE_HOSTER = True
55     DEFAULT_PREFERRED_HOSTER_ONLY = False
56     DEFAULT_HANDLE_NO_URL_AS_FAILURE = False
57 
58     def validator(self):
59         """Return config validator"""
60         root = validator.factory()
61         root.accept('boolean')
62         advanced = root.accept('dict')
63         advanced.accept('text', key='api')
64         advanced.accept('text', key='username')
65         advanced.accept('text', key='password')
66         advanced.accept('text', key='folder')
67         advanced.accept('text', key='package')
68         advanced.accept('boolean', key='queue')
69         advanced.accept('boolean', key='parse_url')
70         advanced.accept('boolean', key='multiple_hoster')
71         advanced.accept('list', key='hoster').accept('text')
72         advanced.accept('boolean', key='preferred_hoster_only')
73         advanced.accept('boolean', key='handle_no_url_as_failure')
74         advanced.accept('boolean', key='enabled')
75         return root
76 
77 
78     def on_task_output(self, task, config):
79         if not config.get('enabled', True):
80             return
81         if not task.accepted:
82             return
83 
84         self.add_entries(task, config)
85 
86     def add_entries(self, task, config):
87         """Adds accepted entries"""
88 
89         try:
90             session = self.get_session(config)
91         except IOError:
92             raise plugin.PluginError('pyLoad not reachable', log)
93         except plugin.PluginError:
94             raise
95         except Exception as e:
96             raise plugin.PluginError('Unknown error: %s' % str(e), log)
97 
98         api = config.get('api', self.DEFAULT_API)
99         hoster = config.get('hoster', self.DEFAULT_HOSTER)
100         folder = config.get('folder', self.DEFAULT_FOLDER)
101 
102         for entry in task.accepted:
103             # bunch of urls now going to check
104             content = entry.get('description', '') + ' ' + quote(entry['url'])
105             content = json.dumps(content.encode("utf8"))
106 
107             url = json.dumps(entry['url']) if config.get('parse_url', self.DEFAULT_PARSE_URL) else "''"
108 
109             log.debug("Parsing url %s" % url)
110 
111             result = query_api(api, "parseURLs", {"html": content, "url": url, "session": session})
112 
113             # parsed { plugins: [urls] }
114             parsed = result.json()
115 
116             urls = []
117 
118             # check for preferred hoster
119             for name in hoster:
120                 if name in parsed:
121                     urls.extend(parsed[name])
122                     if not config.get('multiple_hoster', self.DEFAULT_MULTIPLE_HOSTER):
123                         break
124 
125             # no preferred hoster and not preferred hoster only - add all recognized plugins
126             if not urls and not config.get('preferred_hoster_only', self.DEFAULT_PREFERRED_HOSTER_ONLY):
127                 for name, purls in parsed.iteritems():
128                     if name != "BasePlugin":
129                         urls.extend(purls)
130 
131             if task.options.test:
132                 log.info('Would add `%s` to pyload' % urls)
133                 continue
134 
135             # no urls found
136             if not urls:
137                 if config.get('handle_no_url_as_failure', self.DEFAULT_HANDLE_NO_URL_AS_FAILURE):
138                     entry.fail("No suited urls in entry %s" % entry['title'])
139                 else:
140                     log.info("No suited urls in entry %s" % entry['title'])
141                 continue
142 
143             log.debug("Add %d urls to pyLoad" % len(urls))
144 
145             try:
146                 dest = 1 if config.get('queue', self.DEFAULT_QUEUE) else 0  # Destination.Queue = 1
147 
148                 # Use the title of the enty, if no naming schema for the package is defined.
149                 name = config.get('package', entry['title'])
150 
151                 # If name has jinja template, render it
152                 try:
153                     name = entry.render(name)
154                 except RenderError as e:
155                     name = entry['title']
156                     log.error('Error rendering jinja event: %s' % e)
157 
158                 post = {'name': "'%s'" % name.encode("ascii", "ignore"),
159                         'links': str(urls),
160                         'dest': dest,
161                         'session': session}
162 
163                 pid = query_api(api, "addPackage", post).text
164                 log.debug('added package pid: %s' % pid)
165 
166                 if folder:
167                     # set folder with api
168                     data = {'folder': folder}
169                     query_api(api, "setPackageData", {'pid': pid, 'data': data, 'session': session})
170 
171             except Exception as e:
172                 entry.fail(str(e))
173 
174     def get_session(self, config):
175         url = config.get('api', self.DEFAULT_API)
176 
177         # Login
178         post = {'username': config['username'], 'password': config['password']}
179         result = query_api(url, "login", post)
180         response = result.json()
181         if not response:
182             raise plugin.PluginError('Login failed', log)
183         return response.replace('"', '')
184 
185 
186 def query_api(url, method, post=None):
187     try:
188         response = requests.request(
189             'post' if post is not None else 'get',
190             url.rstrip("/") + "/" + method.strip("/"),
191             data=post)
192         response.raise_for_status()
193         return response
194     except RequestException as e:
195         if e.response.status_code == 500:
196             raise plugin.PluginError('Internal API Error: <%s> <%s> <%s>' % (method, url, post), log)
197         raise
198 
199 
200 @event('plugin.register')
201 def register_plugin():
202     plugin.register(PluginPyLoad, 'pyload', api_ver=2)
203
```
--- 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/flexget/plugins/output/pyload.py b/flexget/plugins/output/pyload.py
--- a/flexget/plugins/output/pyload.py
+++ b/flexget/plugins/output/pyload.py
@@ -97,7 +97,6 @@
 
         api = config.get('api', self.DEFAULT_API)
         hoster = config.get('hoster', self.DEFAULT_HOSTER)
-        folder = config.get('folder', self.DEFAULT_FOLDER)
 
         for entry in task.accepted:
             # bunch of urls now going to check
@@ -145,7 +144,7 @@
             try:
                 dest = 1 if config.get('queue', self.DEFAULT_QUEUE) else 0  # Destination.Queue = 1
 
-                # Use the title of the enty, if no naming schema for the package is defined.
+                # Use the title of the entry, if no naming schema for the package is defined.
                 name = config.get('package', entry['title'])
 
                 # If name has jinja template, render it
@@ -163,9 +162,18 @@
                 pid = query_api(api, "addPackage", post).text
                 log.debug('added package pid: %s' % pid)
 
+                # Set Folder
+                folder = config.get('folder', self.DEFAULT_FOLDER)
+                folder = entry.get('path', folder)
                 if folder:
+                    # If folder has jinja template, render it
+                    try:
+                        folder = entry.render(folder)
+                    except RenderError as e:
+                        folder = self.DEFAULT_FOLDER
+                        log.error('Error rendering jinja event: %s' % e)
                     # set folder with api
-                    data = {'folder': folder}
+                    data = json.dumps({'folder': folder})
                     query_api(api, "setPackageData", {'pid': pid, 'data': data, 'session': session})
 
             except Exception as e:

{"golden_diff": "diff --git a/flexget/plugins/output/pyload.py b/flexget/plugins/output/pyload.py\n--- a/flexget/plugins/output/pyload.py\n+++ b/flexget/plugins/output/pyload.py\n@@ -97,7 +97,6 @@\n \n         api = config.get('api', self.DEFAULT_API)\n         hoster = config.get('hoster', self.DEFAULT_HOSTER)\n-        folder = config.get('folder', self.DEFAULT_FOLDER)\n \n         for entry in task.accepted:\n             # bunch of urls now going to check\n@@ -145,7 +144,7 @@\n             try:\n                 dest = 1 if config.get('queue', self.DEFAULT_QUEUE) else 0  # Destination.Queue = 1\n \n-                # Use the title of the enty, if no naming schema for the package is defined.\n+                # Use the title of the entry, if no naming schema for the package is defined.\n                 name = config.get('package', entry['title'])\n \n                 # If name has jinja template, render it\n@@ -163,9 +162,18 @@\n                 pid = query_api(api, \"addPackage\", post).text\n                 log.debug('added package pid: %s' % pid)\n \n+                # Set Folder\n+                folder = config.get('folder', self.DEFAULT_FOLDER)\n+                folder = entry.get('path', folder)\n                 if folder:\n+                    # If folder has jinja template, render it\n+                    try:\n+                        folder = entry.render(folder)\n+                    except RenderError as e:\n+                        folder = self.DEFAULT_FOLDER\n+                        log.error('Error rendering jinja event: %s' % e)\n                     # set folder with api\n-                    data = {'folder': folder}\n+                    data = json.dumps({'folder': folder})\n                     query_api(api, \"setPackageData\", {'pid': pid, 'data': data, 'session': session})\n \n             except Exception as e:\n", "issue": "Switch to GitHub Actions for CI\n### Motivation for changes:\r\nTry out github actions as a replacement for circleci\r\nHopefully we don't need to maintain custom docker images this way\r\n\r\n#### To Do:\r\n\r\n- [ ] Get it working\r\n- [ ] Verify we like it better than circleci\r\n- [ ] Add a release workflow\r\n\n", "before_files": [{"content": "# -*- coding: utf-8 -*-\n\nfrom __future__ import unicode_literals, division, absolute_import\nfrom logging import getLogger\nfrom urllib import quote\n\nfrom requests.exceptions import RequestException\n\nfrom flexget import plugin, validator\nfrom flexget.event import event\nfrom flexget.utils import json, requests\n\nlog = getLogger('pyload')\n\n\nclass PluginPyLoad(object):\n    \"\"\"\n    Parse task content or url for hoster links and adds them to pyLoad.\n\n    Example::\n\n      pyload:\n        api: http://localhost:8000/api\n        queue: yes\n        username: my_username\n        password: my_password\n        folder: desired_folder\n        package: desired_package_name (jinja2 supported)\n        hoster:\n          - YoutubeCom\n        parse_url: no\n        multiple_hoster: yes\n        enabled: yes\n\n    Default values for the config elements::\n\n      pyload:\n          api: http://localhost:8000/api\n          queue: no\n          hoster: ALL\n          parse_url: no\n          multiple_hoster: yes\n          enabled: yes\n    \"\"\"\n\n    __author__ = 'http://pyload.org'\n    __version__ = '0.4'\n\n    DEFAULT_API = 'http://localhost:8000/api'\n    DEFAULT_QUEUE = False\n    DEFAULT_FOLDER = ''\n    DEFAULT_HOSTER = []\n    DEFAULT_PARSE_URL = False\n    DEFAULT_MULTIPLE_HOSTER = True\n    DEFAULT_PREFERRED_HOSTER_ONLY = False\n    DEFAULT_HANDLE_NO_URL_AS_FAILURE = False\n\n    def validator(self):\n        \"\"\"Return config validator\"\"\"\n        root = validator.factory()\n        root.accept('boolean')\n        advanced = root.accept('dict')\n        advanced.accept('text', key='api')\n        advanced.accept('text', key='username')\n        advanced.accept('text', key='password')\n        advanced.accept('text', key='folder')\n        advanced.accept('text', key='package')\n        advanced.accept('boolean', key='queue')\n        advanced.accept('boolean', key='parse_url')\n        advanced.accept('boolean', key='multiple_hoster')\n        advanced.accept('list', key='hoster').accept('text')\n        advanced.accept('boolean', key='preferred_hoster_only')\n        advanced.accept('boolean', key='handle_no_url_as_failure')\n        advanced.accept('boolean', key='enabled')\n        return root\n\n\n    def on_task_output(self, task, config):\n        if not config.get('enabled', True):\n            return\n        if not task.accepted:\n            return\n\n        self.add_entries(task, config)\n\n    def add_entries(self, task, config):\n        \"\"\"Adds accepted entries\"\"\"\n\n        try:\n            session = self.get_session(config)\n        except IOError:\n            raise plugin.PluginError('pyLoad not reachable', log)\n        except plugin.PluginError:\n            raise\n        except Exception as e:\n            raise plugin.PluginError('Unknown error: %s' % str(e), log)\n\n        api = config.get('api', self.DEFAULT_API)\n        hoster = config.get('hoster', self.DEFAULT_HOSTER)\n        folder = config.get('folder', self.DEFAULT_FOLDER)\n\n        for entry in task.accepted:\n            # bunch of urls now going to check\n            content = entry.get('description', '') + ' ' + quote(entry['url'])\n            content = json.dumps(content.encode(\"utf8\"))\n\n            url = json.dumps(entry['url']) if config.get('parse_url', self.DEFAULT_PARSE_URL) else \"''\"\n\n            log.debug(\"Parsing url %s\" % url)\n\n            result = query_api(api, \"parseURLs\", {\"html\": content, \"url\": url, \"session\": session})\n\n            # parsed { plugins: [urls] }\n            parsed = result.json()\n\n            urls = []\n\n            # check for preferred hoster\n            for name in hoster:\n                if name in parsed:\n                    urls.extend(parsed[name])\n                    if not config.get('multiple_hoster', self.DEFAULT_MULTIPLE_HOSTER):\n                        break\n\n            # no preferred hoster and not preferred hoster only - add all recognized plugins\n            if not urls and not config.get('preferred_hoster_only', self.DEFAULT_PREFERRED_HOSTER_ONLY):\n                for name, purls in parsed.iteritems():\n                    if name != \"BasePlugin\":\n                        urls.extend(purls)\n\n            if task.options.test:\n                log.info('Would add `%s` to pyload' % urls)\n                continue\n\n            # no urls found\n            if not urls:\n                if config.get('handle_no_url_as_failure', self.DEFAULT_HANDLE_NO_URL_AS_FAILURE):\n                    entry.fail(\"No suited urls in entry %s\" % entry['title'])\n                else:\n                    log.info(\"No suited urls in entry %s\" % entry['title'])\n                continue\n\n            log.debug(\"Add %d urls to pyLoad\" % len(urls))\n\n            try:\n                dest = 1 if config.get('queue', self.DEFAULT_QUEUE) else 0  # Destination.Queue = 1\n\n                # Use the title of the enty, if no naming schema for the package is defined.\n                name = config.get('package', entry['title'])\n\n                # If name has jinja template, render it\n                try:\n                    name = entry.render(name)\n                except RenderError as e:\n                    name = entry['title']\n                    log.error('Error rendering jinja event: %s' % e)\n\n                post = {'name': \"'%s'\" % name.encode(\"ascii\", \"ignore\"),\n                        'links': str(urls),\n                        'dest': dest,\n                        'session': session}\n\n                pid = query_api(api, \"addPackage\", post).text\n                log.debug('added package pid: %s' % pid)\n\n                if folder:\n                    # set folder with api\n                    data = {'folder': folder}\n                    query_api(api, \"setPackageData\", {'pid': pid, 'data': data, 'session': session})\n\n            except Exception as e:\n                entry.fail(str(e))\n\n    def get_session(self, config):\n        url = config.get('api', self.DEFAULT_API)\n\n        # Login\n        post = {'username': config['username'], 'password': config['password']}\n        result = query_api(url, \"login\", post)\n        response = result.json()\n        if not response:\n            raise plugin.PluginError('Login failed', log)\n        return response.replace('\"', '')\n\n\ndef query_api(url, method, post=None):\n    try:\n        response = requests.request(\n            'post' if post is not None else 'get',\n            url.rstrip(\"/\") + \"/\" + method.strip(\"/\"),\n            data=post)\n        response.raise_for_status()\n        return response\n    except RequestException as e:\n        if e.response.status_code == 500:\n            raise plugin.PluginError('Internal API Error: <%s> <%s> <%s>' % (method, url, post), log)\n        raise\n\n\n@event('plugin.register')\ndef register_plugin():\n    plugin.register(PluginPyLoad, 'pyload', api_ver=2)\n", "path": "flexget/plugins/output/pyload.py"}], "after_files": [{"content": "# -*- coding: utf-8 -*-\n\nfrom __future__ import unicode_literals, division, absolute_import\nfrom logging import getLogger\nfrom urllib import quote\n\nfrom requests.exceptions import RequestException\n\nfrom flexget import plugin, validator\nfrom flexget.event import event\nfrom flexget.utils import json, requests\n\nlog = getLogger('pyload')\n\n\nclass PluginPyLoad(object):\n    \"\"\"\n    Parse task content or url for hoster links and adds them to pyLoad.\n\n    Example::\n\n      pyload:\n        api: http://localhost:8000/api\n        queue: yes\n        username: my_username\n        password: my_password\n        folder: desired_folder\n        package: desired_package_name (jinja2 supported)\n        hoster:\n          - YoutubeCom\n        parse_url: no\n        multiple_hoster: yes\n        enabled: yes\n\n    Default values for the config elements::\n\n      pyload:\n          api: http://localhost:8000/api\n          queue: no\n          hoster: ALL\n          parse_url: no\n          multiple_hoster: yes\n          enabled: yes\n    \"\"\"\n\n    __author__ = 'http://pyload.org'\n    __version__ = '0.4'\n\n    DEFAULT_API = 'http://localhost:8000/api'\n    DEFAULT_QUEUE = False\n    DEFAULT_FOLDER = ''\n    DEFAULT_HOSTER = []\n    DEFAULT_PARSE_URL = False\n    DEFAULT_MULTIPLE_HOSTER = True\n    DEFAULT_PREFERRED_HOSTER_ONLY = False\n    DEFAULT_HANDLE_NO_URL_AS_FAILURE = False\n\n    def validator(self):\n        \"\"\"Return config validator\"\"\"\n        root = validator.factory()\n        root.accept('boolean')\n        advanced = root.accept('dict')\n        advanced.accept('text', key='api')\n        advanced.accept('text', key='username')\n        advanced.accept('text', key='password')\n        advanced.accept('text', key='folder')\n        advanced.accept('text', key='package')\n        advanced.accept('boolean', key='queue')\n        advanced.accept('boolean', key='parse_url')\n        advanced.accept('boolean', key='multiple_hoster')\n        advanced.accept('list', key='hoster').accept('text')\n        advanced.accept('boolean', key='preferred_hoster_only')\n        advanced.accept('boolean', key='handle_no_url_as_failure')\n        advanced.accept('boolean', key='enabled')\n        return root\n\n\n    def on_task_output(self, task, config):\n        if not config.get('enabled', True):\n            return\n        if not task.accepted:\n            return\n\n        self.add_entries(task, config)\n\n    def add_entries(self, task, config):\n        \"\"\"Adds accepted entries\"\"\"\n\n        try:\n            session = self.get_session(config)\n        except IOError:\n            raise plugin.PluginError('pyLoad not reachable', log)\n        except plugin.PluginError:\n            raise\n        except Exception as e:\n            raise plugin.PluginError('Unknown error: %s' % str(e), log)\n\n        api = config.get('api', self.DEFAULT_API)\n        hoster = config.get('hoster', self.DEFAULT_HOSTER)\n\n        for entry in task.accepted:\n            # bunch of urls now going to check\n            content = entry.get('description', '') + ' ' + quote(entry['url'])\n            content = json.dumps(content.encode(\"utf8\"))\n\n            url = json.dumps(entry['url']) if config.get('parse_url', self.DEFAULT_PARSE_URL) else \"''\"\n\n            log.debug(\"Parsing url %s\" % url)\n\n            result = query_api(api, \"parseURLs\", {\"html\": content, \"url\": url, \"session\": session})\n\n            # parsed { plugins: [urls] }\n            parsed = result.json()\n\n            urls = []\n\n            # check for preferred hoster\n            for name in hoster:\n                if name in parsed:\n                    urls.extend(parsed[name])\n                    if not config.get('multiple_hoster', self.DEFAULT_MULTIPLE_HOSTER):\n                        break\n\n            # no preferred hoster and not preferred hoster only - add all recognized plugins\n            if not urls and not config.get('preferred_hoster_only', self.DEFAULT_PREFERRED_HOSTER_ONLY):\n                for name, purls in parsed.iteritems():\n                    if name != \"BasePlugin\":\n                        urls.extend(purls)\n\n            if task.options.test:\n                log.info('Would add `%s` to pyload' % urls)\n                continue\n\n            # no urls found\n            if not urls:\n                if config.get('handle_no_url_as_failure', self.DEFAULT_HANDLE_NO_URL_AS_FAILURE):\n                    entry.fail(\"No suited urls in entry %s\" % entry['title'])\n                else:\n                    log.info(\"No suited urls in entry %s\" % entry['title'])\n                continue\n\n            log.debug(\"Add %d urls to pyLoad\" % len(urls))\n\n            try:\n                dest = 1 if config.get('queue', self.DEFAULT_QUEUE) else 0  # Destination.Queue = 1\n\n                # Use the title of the entry, if no naming schema for the package is defined.\n                name = config.get('package', entry['title'])\n\n                # If name has jinja template, render it\n                try:\n                    name = entry.render(name)\n                except RenderError as e:\n                    name = entry['title']\n                    log.error('Error rendering jinja event: %s' % e)\n\n                post = {'name': \"'%s'\" % name.encode(\"ascii\", \"ignore\"),\n                        'links': str(urls),\n                        'dest': dest,\n                        'session': session}\n\n                pid = query_api(api, \"addPackage\", post).text\n                log.debug('added package pid: %s' % pid)\n\n                # Set Folder\n                folder = config.get('folder', self.DEFAULT_FOLDER)\n                folder = entry.get('path', folder)\n                if folder:\n                    # If folder has jinja template, render it\n                    try:\n                        folder = entry.render(folder)\n                    except RenderError as e:\n                        folder = self.DEFAULT_FOLDER\n                        log.error('Error rendering jinja event: %s' % e)\n                    # set folder with api\n                    data = json.dumps({'folder': folder})\n                    query_api(api, \"setPackageData\", {'pid': pid, 'data': data, 'session': session})\n\n            except Exception as e:\n                entry.fail(str(e))\n\n    def get_session(self, config):\n        url = config.get('api', self.DEFAULT_API)\n\n        # Login\n        post = {'username': config['username'], 'password': config['password']}\n        result = query_api(url, \"login\", post)\n        response = result.json()\n        if not response:\n            raise plugin.PluginError('Login failed', log)\n        return response.replace('\"', '')\n\n\ndef query_api(url, method, post=None):\n    try:\n        response = requests.request(\n            'post' if post is not None else 'get',\n            url.rstrip(\"/\") + \"/\" + method.strip(\"/\"),\n            data=post)\n        response.raise_for_status()\n        return response\n    except RequestException as e:\n        if e.response.status_code == 500:\n            raise plugin.PluginError('Internal API Error: <%s> <%s> <%s>' % (method, url, post), log)\n        raise\n\n\n@event('plugin.register')\ndef register_plugin():\n    plugin.register(PluginPyLoad, 'pyload', api_ver=2)\n", "path": "flexget/plugins/output/pyload.py"}]}