We are currently solving the following issue within our repository. Here is the issue text:
--- BEGIN ISSUE ---
[YourPorn] Domain changed to sxyprn.com
YourPorn.sexy Domain changed to sxyprn.com which breaks the extractor and then falls back to the generic downloader which gets the thumbnail instead of video 
```
youtube-dl --verbose 'https://sxyprn.com/post/5cad9f8a26d51.html?sk=Many-Vids&so=0&ss=latest'               
[debug] System config: []
[debug] Custom config: []
[debug] Command-line args: ['--verbose', 'https://sxyprn.com/post/5cad9f8a26d51.html?sk=Many-Vids&so=0&ss=latest']
[debug] Encodings: locale UTF-8, fs utf-8, out UTF-8, pref UTF-8
[debug] youtube-dl version 2019.04.07
[debug] Python version 3.7.3 (CPython) - Linux-5.0.7-arch1-1-ARCH-x86_64-with-arch-Arch-Linux
[debug] Proxy map: {}
[generic] 5cad9f8a26d51: Requesting header
WARNING: Falling back on generic information extractor.
[generic] 5cad9f8a26d51: Downloading webpage
[generic] 5cad9f8a26d51: Extracting information
[generic] playlist Lunaxjames - Fucking My Asian Sex Doll - Manyvids #asian #bubblebutt #pale #roleplay #pigtails on SexyPorn: Collected 12 video ids (downloading 12 of them)
[download] Downloading video 1 of 12
[debug] Default format spec: bestvideo+bestaudio/best
[debug] Invoking downloader on 'http://s10.trafficdeposit.com//blog/vid/5a6534e03bbb4/5cab7d0bd2a31/vidthumb.mp4'
1-1.mp4
[download] 100% of 249.05KiB in 00:00
[download] Downloading video 2 of 12
[debug] Default format spec: bestvideo+bestaudio/best
[debug] Invoking downloader on 'http://s18.trafficdeposit.com//blog/vid/5c7aa58c8c195/5caa34cd5927b/vidthumb.mp4'
1-2.mp4
[download] Downloading video 3 of 12
[debug] Default format spec: bestvideo+bestaudio/best
[debug] Invoking downloader on 'http://s14.trafficdeposit.com//blog/vid/5ba53b584947a/5cacd0a1ad653/vidthumb.mp4'
1-3.mp4
[download] 100% of 123.50KiB in 00:00
[download] Downloading video 4 of 12
[debug] Default format spec: bestvideo+bestaudio/best
[debug] Invoking downloader on 'http://s19.trafficdeposit.com//blog/vid/5ab2a85d635c4/5ca9a3d3675fb/vidthumb.mp4'
1-4.mp4
[download] 100% of 172.44KiB in 00:00
[download] Downloading video 5 of 12
[debug] Default format spec: bestvideo+bestaudio/best
[debug] Invoking downloader on 'http://s19.trafficdeposit.com//blog/vid/5ba53b584947a/5cab801a05f9b/vidthumb.mp4'
1-5.mp4
[download] 100% of 118.19KiB in 00:00
[debug] Default format spec: bestvideo+bestaudio/best
[debug] Invoking downloader on 'http://s4.trafficdeposit.com//blog/vid/5b68a7a3c3d95/5cad071036ebd/vidthumb.mp4'
[download] Destination: Lunaxjames - Fucking My Asian Sex Doll - Manyvids #asian #bubblebutt #pale #roleplay #pigtails on SexyPorn (6)-5cad9f8a26d51-6.mp4
[download] 100% of 135.05KiB in 00:00
[download] Downloading video 7 of 12
[debug] Default format spec: bestvideo+bestaudio/best
[debug] Invoking downloader on 'http://s20.trafficdeposit.com//blog/vid/59b613729e694/5cada7480fcec/vidthumb.mp4'
[download] Destination: Lunaxjames - Fucking My Asian Sex Doll - Manyvids #asian #bubblebutt #pale #roleplay #pigtails on SexyPorn (7)-5cad9f8a26d51-7.mp4
[download] 100% of 176.89KiB in 00:00
[download] Downloading video 8 of 12
[debug] Default format spec: bestvideo+bestaudio/best
[debug] Invoking downloader on 'http://s8.trafficdeposit.com//blog/vid/5ab2a85d635c4/5cad9dce1958a/vidthumb.mp4'
[download] Destination: Lunaxjames - Fucking My Asian Sex Doll - Manyvids #asian #bubblebutt #pale #roleplay #pigtails on SexyPorn (8)-5cad9f8a26d51-8.mp4
[download] 100% of 155.98KiB in 00:00
[download] Downloading video 9 of 12
[debug] Default format spec: bestvideo+bestaudio/best
[debug] Invoking downloader on 'http://s15.trafficdeposit.com//blog/vid/5ab2a85d635c4/5cad966a5596a/vidthumb.mp4'
[download] Destination: Lunaxjames - Fucking My Asian Sex Doll - Manyvids #asian #bubblebutt #pale #roleplay #pigtails on SexyPorn (9)-5cad9f8a26d51-9.mp4
[download] 100% of 380.13KiB in 00:01
[download] Downloading video 10 of 12
[debug] Default format spec: bestvideo+bestaudio/best
[debug] Invoking downloader on 'http://s13.trafficdeposit.com//blog/vid/5ba53b584947a/5cad35c5ce1e4/vidthumb.mp4'
[download] Destination: Lunaxjames - Fucking My Asian Sex Doll - Manyvids #asian #bubblebutt #pale #roleplay #pigtails on SexyPorn (10)-5cad9f8a26d51-10.mp4
[download] 100% of 254.63KiB in 00:00
[download] Downloading video 11 of 12
[debug] Default format spec: bestvideo+bestaudio/best
[debug] Invoking downloader on 'http://s4.trafficdeposit.com//blog/vid/5ba53b584947a/5cad2dd3ee706/vidthumb.mp4'
[download] Destination: Lunaxjames - Fucking My Asian Sex Doll - Manyvids #asian #bubblebutt #pale #roleplay #pigtails on SexyPorn (11)-5cad9f8a26d51-11.mp4
[download] 100% of 272.29KiB in 00:00
[download] Downloading video 12 of 12
[debug] Default format spec: bestvideo+bestaudio/best
[debug] Invoking downloader on 'http://s18.trafficdeposit.com//blog/vid/899334366634979328/5cad288db659a/vidthumb.mp4'
[download] Destination: Lunaxjames - Fucking My Asian Sex Doll - Manyvids #asian #bubblebutt #pale #roleplay #pigtails on SexyPorn (12)-5cad9f8a26d51-12.mp4
[download] 100% of 279.43KiB in 00:00
[download] Finished downloading playlist: Lunaxjames - Fucking My Asian Sex Doll - Manyvids #asian #bubblebutt #pale #roleplay #pigtails on SexyPorn
```

--- END ISSUE ---

Below are some code segments, each from a relevant file. One or more of these files may contain bugs.
--- BEGIN FILES ---
Path: `youtube_dl/extractor/yourporn.py`
Content:
```
1 from __future__ import unicode_literals
2 
3 from .common import InfoExtractor
4 from ..utils import (
5     parse_duration,
6     urljoin,
7 )
8 
9 
10 class YourPornIE(InfoExtractor):
11     _VALID_URL = r'https?://(?:www\.)?yourporn\.sexy/post/(?P<id>[^/?#&.]+)'
12     _TEST = {
13         'url': 'https://yourporn.sexy/post/57ffcb2e1179b.html',
14         'md5': '6f8682b6464033d87acaa7a8ff0c092e',
15         'info_dict': {
16             'id': '57ffcb2e1179b',
17             'ext': 'mp4',
18             'title': 'md5:c9f43630bd968267672651ba905a7d35',
19             'thumbnail': r're:^https?://.*\.jpg$',
20             'duration': 165,
21             'age_limit': 18,
22         },
23         'params': {
24             'skip_download': True,
25         },
26     }
27 
28     def _real_extract(self, url):
29         video_id = self._match_id(url)
30 
31         webpage = self._download_webpage(url, video_id)
32 
33         video_url = urljoin(url, self._parse_json(
34             self._search_regex(
35                 r'data-vnfo=(["\'])(?P<data>{.+?})\1', webpage, 'data info',
36                 group='data'),
37             video_id)[video_id]).replace('/cdn/', '/cdn4/')
38 
39         title = (self._search_regex(
40             r'<[^>]+\bclass=["\']PostEditTA[^>]+>([^<]+)', webpage, 'title',
41             default=None) or self._og_search_description(webpage)).strip()
42         thumbnail = self._og_search_thumbnail(webpage)
43         duration = parse_duration(self._search_regex(
44             r'duration\s*:\s*<[^>]+>([\d:]+)', webpage, 'duration',
45             default=None))
46 
47         return {
48             'id': video_id,
49             'url': video_url,
50             'title': title,
51             'thumbnail': thumbnail,
52             'duration': duration,
53             'age_limit': 18,
54         }
55
```
--- 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/youtube_dl/extractor/yourporn.py b/youtube_dl/extractor/yourporn.py
--- a/youtube_dl/extractor/yourporn.py
+++ b/youtube_dl/extractor/yourporn.py
@@ -8,8 +8,8 @@
 
 
 class YourPornIE(InfoExtractor):
-    _VALID_URL = r'https?://(?:www\.)?yourporn\.sexy/post/(?P<id>[^/?#&.]+)'
-    _TEST = {
+    _VALID_URL = r'https?://(?:www\.)?(?:yourporn\.sexy|sxyprn\.com)/post/(?P<id>[^/?#&.]+)'
+    _TESTS = [{
         'url': 'https://yourporn.sexy/post/57ffcb2e1179b.html',
         'md5': '6f8682b6464033d87acaa7a8ff0c092e',
         'info_dict': {
@@ -23,7 +23,10 @@
         'params': {
             'skip_download': True,
         },
-    }
+    }, {
+        'url': 'https://sxyprn.com/post/57ffcb2e1179b.html',
+        'only_matching': True,
+    }]
 
     def _real_extract(self, url):
         video_id = self._match_id(url)

{"golden_diff": "diff --git a/youtube_dl/extractor/yourporn.py b/youtube_dl/extractor/yourporn.py\n--- a/youtube_dl/extractor/yourporn.py\n+++ b/youtube_dl/extractor/yourporn.py\n@@ -8,8 +8,8 @@\n \n \n class YourPornIE(InfoExtractor):\n-    _VALID_URL = r'https?://(?:www\\.)?yourporn\\.sexy/post/(?P<id>[^/?#&.]+)'\n-    _TEST = {\n+    _VALID_URL = r'https?://(?:www\\.)?(?:yourporn\\.sexy|sxyprn\\.com)/post/(?P<id>[^/?#&.]+)'\n+    _TESTS = [{\n         'url': 'https://yourporn.sexy/post/57ffcb2e1179b.html',\n         'md5': '6f8682b6464033d87acaa7a8ff0c092e',\n         'info_dict': {\n@@ -23,7 +23,10 @@\n         'params': {\n             'skip_download': True,\n         },\n-    }\n+    }, {\n+        'url': 'https://sxyprn.com/post/57ffcb2e1179b.html',\n+        'only_matching': True,\n+    }]\n \n     def _real_extract(self, url):\n         video_id = self._match_id(url)\n", "issue": "[YourPorn] Domain changed to sxyprn.com\nYourPorn.sexy Domain changed to sxyprn.com which breaks the extractor and then falls back to the generic downloader which gets the thumbnail instead of video \r\n```\r\nyoutube-dl --verbose 'https://sxyprn.com/post/5cad9f8a26d51.html?sk=Many-Vids&so=0&ss=latest'               \r\n[debug] System config: []\r\n[debug] Custom config: []\r\n[debug] Command-line args: ['--verbose', 'https://sxyprn.com/post/5cad9f8a26d51.html?sk=Many-Vids&so=0&ss=latest']\r\n[debug] Encodings: locale UTF-8, fs utf-8, out UTF-8, pref UTF-8\r\n[debug] youtube-dl version 2019.04.07\r\n[debug] Python version 3.7.3 (CPython) - Linux-5.0.7-arch1-1-ARCH-x86_64-with-arch-Arch-Linux\r\n[debug] Proxy map: {}\r\n[generic] 5cad9f8a26d51: Requesting header\r\nWARNING: Falling back on generic information extractor.\r\n[generic] 5cad9f8a26d51: Downloading webpage\r\n[generic] 5cad9f8a26d51: Extracting information\r\n[generic] playlist Lunaxjames - Fucking My Asian Sex Doll - Manyvids #asian #bubblebutt #pale #roleplay #pigtails on SexyPorn: Collected 12 video ids (downloading 12 of them)\r\n[download] Downloading video 1 of 12\r\n[debug] Default format spec: bestvideo+bestaudio/best\r\n[debug] Invoking downloader on 'http://s10.trafficdeposit.com//blog/vid/5a6534e03bbb4/5cab7d0bd2a31/vidthumb.mp4'\r\n1-1.mp4\r\n[download] 100% of 249.05KiB in 00:00\r\n[download] Downloading video 2 of 12\r\n[debug] Default format spec: bestvideo+bestaudio/best\r\n[debug] Invoking downloader on 'http://s18.trafficdeposit.com//blog/vid/5c7aa58c8c195/5caa34cd5927b/vidthumb.mp4'\r\n1-2.mp4\r\n[download] Downloading video 3 of 12\r\n[debug] Default format spec: bestvideo+bestaudio/best\r\n[debug] Invoking downloader on 'http://s14.trafficdeposit.com//blog/vid/5ba53b584947a/5cacd0a1ad653/vidthumb.mp4'\r\n1-3.mp4\r\n[download] 100% of 123.50KiB in 00:00\r\n[download] Downloading video 4 of 12\r\n[debug] Default format spec: bestvideo+bestaudio/best\r\n[debug] Invoking downloader on 'http://s19.trafficdeposit.com//blog/vid/5ab2a85d635c4/5ca9a3d3675fb/vidthumb.mp4'\r\n1-4.mp4\r\n[download] 100% of 172.44KiB in 00:00\r\n[download] Downloading video 5 of 12\r\n[debug] Default format spec: bestvideo+bestaudio/best\r\n[debug] Invoking downloader on 'http://s19.trafficdeposit.com//blog/vid/5ba53b584947a/5cab801a05f9b/vidthumb.mp4'\r\n1-5.mp4\r\n[download] 100% of 118.19KiB in 00:00\r\n[debug] Default format spec: bestvideo+bestaudio/best\r\n[debug] Invoking downloader on 'http://s4.trafficdeposit.com//blog/vid/5b68a7a3c3d95/5cad071036ebd/vidthumb.mp4'\r\n[download] Destination: Lunaxjames - Fucking My Asian Sex Doll - Manyvids #asian #bubblebutt #pale #roleplay #pigtails on SexyPorn (6)-5cad9f8a26d51-6.mp4\r\n[download] 100% of 135.05KiB in 00:00\r\n[download] Downloading video 7 of 12\r\n[debug] Default format spec: bestvideo+bestaudio/best\r\n[debug] Invoking downloader on 'http://s20.trafficdeposit.com//blog/vid/59b613729e694/5cada7480fcec/vidthumb.mp4'\r\n[download] Destination: Lunaxjames - Fucking My Asian Sex Doll - Manyvids #asian #bubblebutt #pale #roleplay #pigtails on SexyPorn (7)-5cad9f8a26d51-7.mp4\r\n[download] 100% of 176.89KiB in 00:00\r\n[download] Downloading video 8 of 12\r\n[debug] Default format spec: bestvideo+bestaudio/best\r\n[debug] Invoking downloader on 'http://s8.trafficdeposit.com//blog/vid/5ab2a85d635c4/5cad9dce1958a/vidthumb.mp4'\r\n[download] Destination: Lunaxjames - Fucking My Asian Sex Doll - Manyvids #asian #bubblebutt #pale #roleplay #pigtails on SexyPorn (8)-5cad9f8a26d51-8.mp4\r\n[download] 100% of 155.98KiB in 00:00\r\n[download] Downloading video 9 of 12\r\n[debug] Default format spec: bestvideo+bestaudio/best\r\n[debug] Invoking downloader on 'http://s15.trafficdeposit.com//blog/vid/5ab2a85d635c4/5cad966a5596a/vidthumb.mp4'\r\n[download] Destination: Lunaxjames - Fucking My Asian Sex Doll - Manyvids #asian #bubblebutt #pale #roleplay #pigtails on SexyPorn (9)-5cad9f8a26d51-9.mp4\r\n[download] 100% of 380.13KiB in 00:01\r\n[download] Downloading video 10 of 12\r\n[debug] Default format spec: bestvideo+bestaudio/best\r\n[debug] Invoking downloader on 'http://s13.trafficdeposit.com//blog/vid/5ba53b584947a/5cad35c5ce1e4/vidthumb.mp4'\r\n[download] Destination: Lunaxjames - Fucking My Asian Sex Doll - Manyvids #asian #bubblebutt #pale #roleplay #pigtails on SexyPorn (10)-5cad9f8a26d51-10.mp4\r\n[download] 100% of 254.63KiB in 00:00\r\n[download] Downloading video 11 of 12\r\n[debug] Default format spec: bestvideo+bestaudio/best\r\n[debug] Invoking downloader on 'http://s4.trafficdeposit.com//blog/vid/5ba53b584947a/5cad2dd3ee706/vidthumb.mp4'\r\n[download] Destination: Lunaxjames - Fucking My Asian Sex Doll - Manyvids #asian #bubblebutt #pale #roleplay #pigtails on SexyPorn (11)-5cad9f8a26d51-11.mp4\r\n[download] 100% of 272.29KiB in 00:00\r\n[download] Downloading video 12 of 12\r\n[debug] Default format spec: bestvideo+bestaudio/best\r\n[debug] Invoking downloader on 'http://s18.trafficdeposit.com//blog/vid/899334366634979328/5cad288db659a/vidthumb.mp4'\r\n[download] Destination: Lunaxjames - Fucking My Asian Sex Doll - Manyvids #asian #bubblebutt #pale #roleplay #pigtails on SexyPorn (12)-5cad9f8a26d51-12.mp4\r\n[download] 100% of 279.43KiB in 00:00\r\n[download] Finished downloading playlist: Lunaxjames - Fucking My Asian Sex Doll - Manyvids #asian #bubblebutt #pale #roleplay #pigtails on SexyPorn\r\n```\n", "before_files": [{"content": "from __future__ import unicode_literals\n\nfrom .common import InfoExtractor\nfrom ..utils import (\n    parse_duration,\n    urljoin,\n)\n\n\nclass YourPornIE(InfoExtractor):\n    _VALID_URL = r'https?://(?:www\\.)?yourporn\\.sexy/post/(?P<id>[^/?#&.]+)'\n    _TEST = {\n        'url': 'https://yourporn.sexy/post/57ffcb2e1179b.html',\n        'md5': '6f8682b6464033d87acaa7a8ff0c092e',\n        'info_dict': {\n            'id': '57ffcb2e1179b',\n            'ext': 'mp4',\n            'title': 'md5:c9f43630bd968267672651ba905a7d35',\n            'thumbnail': r're:^https?://.*\\.jpg$',\n            'duration': 165,\n            'age_limit': 18,\n        },\n        'params': {\n            'skip_download': True,\n        },\n    }\n\n    def _real_extract(self, url):\n        video_id = self._match_id(url)\n\n        webpage = self._download_webpage(url, video_id)\n\n        video_url = urljoin(url, self._parse_json(\n            self._search_regex(\n                r'data-vnfo=([\"\\'])(?P<data>{.+?})\\1', webpage, 'data info',\n                group='data'),\n            video_id)[video_id]).replace('/cdn/', '/cdn4/')\n\n        title = (self._search_regex(\n            r'<[^>]+\\bclass=[\"\\']PostEditTA[^>]+>([^<]+)', webpage, 'title',\n            default=None) or self._og_search_description(webpage)).strip()\n        thumbnail = self._og_search_thumbnail(webpage)\n        duration = parse_duration(self._search_regex(\n            r'duration\\s*:\\s*<[^>]+>([\\d:]+)', webpage, 'duration',\n            default=None))\n\n        return {\n            'id': video_id,\n            'url': video_url,\n            'title': title,\n            'thumbnail': thumbnail,\n            'duration': duration,\n            'age_limit': 18,\n        }\n", "path": "youtube_dl/extractor/yourporn.py"}], "after_files": [{"content": "from __future__ import unicode_literals\n\nfrom .common import InfoExtractor\nfrom ..utils import (\n    parse_duration,\n    urljoin,\n)\n\n\nclass YourPornIE(InfoExtractor):\n    _VALID_URL = r'https?://(?:www\\.)?(?:yourporn\\.sexy|sxyprn\\.com)/post/(?P<id>[^/?#&.]+)'\n    _TESTS = [{\n        'url': 'https://yourporn.sexy/post/57ffcb2e1179b.html',\n        'md5': '6f8682b6464033d87acaa7a8ff0c092e',\n        'info_dict': {\n            'id': '57ffcb2e1179b',\n            'ext': 'mp4',\n            'title': 'md5:c9f43630bd968267672651ba905a7d35',\n            'thumbnail': r're:^https?://.*\\.jpg$',\n            'duration': 165,\n            'age_limit': 18,\n        },\n        'params': {\n            'skip_download': True,\n        },\n    }, {\n        'url': 'https://sxyprn.com/post/57ffcb2e1179b.html',\n        'only_matching': True,\n    }]\n\n    def _real_extract(self, url):\n        video_id = self._match_id(url)\n\n        webpage = self._download_webpage(url, video_id)\n\n        video_url = urljoin(url, self._parse_json(\n            self._search_regex(\n                r'data-vnfo=([\"\\'])(?P<data>{.+?})\\1', webpage, 'data info',\n                group='data'),\n            video_id)[video_id]).replace('/cdn/', '/cdn4/')\n\n        title = (self._search_regex(\n            r'<[^>]+\\bclass=[\"\\']PostEditTA[^>]+>([^<]+)', webpage, 'title',\n            default=None) or self._og_search_description(webpage)).strip()\n        thumbnail = self._og_search_thumbnail(webpage)\n        duration = parse_duration(self._search_regex(\n            r'duration\\s*:\\s*<[^>]+>([\\d:]+)', webpage, 'duration',\n            default=None))\n\n        return {\n            'id': video_id,\n            'url': video_url,\n            'title': title,\n            'thumbnail': thumbnail,\n            'duration': duration,\n            'age_limit': 18,\n        }\n", "path": "youtube_dl/extractor/yourporn.py"}]}