We are currently solving the following issue within our repository. Here is the issue text:
--- BEGIN ISSUE ---
FunnyOrDie extractor not finding thumbnails
python -m youtube_dl -v --skip-download --write-info-json --no-playlist -f mp4 http://www.funnyordie.com/videos/e402820827/please-use-this-song-jon-lajoie extracts the video properly but not a thumbnail. Here's the resulting JSON:
{"display_id": "e402820827", "extractor": "FunnyOrDie", "description": "Please use this to sell something", "format": "0 - unknown", "format_id": "0", "playlist_index": null, "stitle": "Please Use This Song (Jon Lajoie)", "playlist": null, "title": "Please Use This Song (Jon Lajoie)", "url": "http://vo.fod4.com/v/e402820827/v600.mp4", "extractor_key": "FunnyOrDie", "id": "e402820827", "ext": "mp4", "webpage_url": "http://www.funnyordie.com/videos/e402820827/please-use-this-song-jon-lajoie", "fulltitle": "Please Use This Song (Jon Lajoie)", "thumbnail": null, "webpage_url_basename": "please-use-this-song-jon-lajoie"}

FunnyorDie's RSS feed entry for this page does contain a thumbnail:
media:thumbnail url="http://t.fod4.com/t/e402820827/c480x270_50.jpg" width="464" height="348"


--- 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/funnyordie.py`
Content:
```
1 from __future__ import unicode_literals
2 
3 import json
4 import re
5 
6 from .common import InfoExtractor
7 
8 
9 class FunnyOrDieIE(InfoExtractor):
10     _VALID_URL = r'https?://(?:www\.)?funnyordie\.com/(?P<type>embed|videos)/(?P<id>[0-9a-f]+)(?:$|[?#/])'
11     _TEST = {
12         'url': 'http://www.funnyordie.com/videos/0732f586d7/heart-shaped-box-literal-video-version',
13         'file': '0732f586d7.mp4',
14         'md5': 'f647e9e90064b53b6e046e75d0241fbd',
15         'info_dict': {
16             'description': ('Lyrics changed to match the video. Spoken cameo '
17                 'by Obscurus Lupa (from ThatGuyWithTheGlasses.com). Based on a '
18                 'concept by Dustin McLean (DustFilms.com). Performed, edited, '
19                 'and written by David A. Scott.'),
20             'title': 'Heart-Shaped Box: Literal Video Version',
21         },
22     }
23 
24     def _real_extract(self, url):
25         mobj = re.match(self._VALID_URL, url)
26 
27         video_id = mobj.group('id')
28         webpage = self._download_webpage(url, video_id)
29 
30         video_url = self._search_regex(
31             [r'type="video/mp4" src="(.*?)"', r'src="([^>]*?)" type=\'video/mp4\''],
32             webpage, 'video URL', flags=re.DOTALL)
33 
34         if mobj.group('type') == 'embed':
35             post_json = self._search_regex(
36                 r'fb_post\s*=\s*(\{.*?\});', webpage, 'post details')
37             post = json.loads(post_json)
38             title = post['name']
39             description = post.get('description')
40             thumbnail = post.get('picture')
41         else:
42             title = self._og_search_title(webpage)
43             description = self._og_search_description(webpage)
44             thumbnail = None
45 
46         return {
47             'id': video_id,
48             'url': video_url,
49             'ext': 'mp4',
50             'title': title,
51             'description': description,
52             'thumbnail': thumbnail,
53         }
54
```
--- 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/funnyordie.py b/youtube_dl/extractor/funnyordie.py
--- a/youtube_dl/extractor/funnyordie.py
+++ b/youtube_dl/extractor/funnyordie.py
@@ -8,18 +8,27 @@
 
 class FunnyOrDieIE(InfoExtractor):
     _VALID_URL = r'https?://(?:www\.)?funnyordie\.com/(?P<type>embed|videos)/(?P<id>[0-9a-f]+)(?:$|[?#/])'
-    _TEST = {
+    _TESTS = [{
         'url': 'http://www.funnyordie.com/videos/0732f586d7/heart-shaped-box-literal-video-version',
-        'file': '0732f586d7.mp4',
         'md5': 'f647e9e90064b53b6e046e75d0241fbd',
         'info_dict': {
-            'description': ('Lyrics changed to match the video. Spoken cameo '
-                'by Obscurus Lupa (from ThatGuyWithTheGlasses.com). Based on a '
-                'concept by Dustin McLean (DustFilms.com). Performed, edited, '
-                'and written by David A. Scott.'),
+            'id': '0732f586d7',
+            'ext': 'mp4',
             'title': 'Heart-Shaped Box: Literal Video Version',
+            'description': 'md5:ea09a01bc9a1c46d9ab696c01747c338',
+            'thumbnail': 're:^http:.*\.jpg$',
+        },
+    }, {
+        'url': 'http://www.funnyordie.com/embed/e402820827',
+        'md5': '0e0c5a7bf45c52b95cd16aa7f28be0b6',
+        'info_dict': {
+            'id': 'e402820827',
+            'ext': 'mp4',
+            'title': 'Please Use This Song (Jon Lajoie)',
+            'description': 'md5:2ed27d364f5a805a6dba199faaf6681d',
+            'thumbnail': 're:^http:.*\.jpg$',
         },
-    }
+    }]
 
     def _real_extract(self, url):
         mobj = re.match(self._VALID_URL, url)
@@ -31,23 +40,15 @@
             [r'type="video/mp4" src="(.*?)"', r'src="([^>]*?)" type=\'video/mp4\''],
             webpage, 'video URL', flags=re.DOTALL)
 
-        if mobj.group('type') == 'embed':
-            post_json = self._search_regex(
-                r'fb_post\s*=\s*(\{.*?\});', webpage, 'post details')
-            post = json.loads(post_json)
-            title = post['name']
-            description = post.get('description')
-            thumbnail = post.get('picture')
-        else:
-            title = self._og_search_title(webpage)
-            description = self._og_search_description(webpage)
-            thumbnail = None
+        post_json = self._search_regex(
+            r'fb_post\s*=\s*(\{.*?\});', webpage, 'post details')
+        post = json.loads(post_json)
 
         return {
             'id': video_id,
             'url': video_url,
             'ext': 'mp4',
-            'title': title,
-            'description': description,
-            'thumbnail': thumbnail,
+            'title': post['name'],
+            'description': post.get('description'),
+            'thumbnail': post.get('picture'),
         }

{"golden_diff": "diff --git a/youtube_dl/extractor/funnyordie.py b/youtube_dl/extractor/funnyordie.py\n--- a/youtube_dl/extractor/funnyordie.py\n+++ b/youtube_dl/extractor/funnyordie.py\n@@ -8,18 +8,27 @@\n \n class FunnyOrDieIE(InfoExtractor):\n     _VALID_URL = r'https?://(?:www\\.)?funnyordie\\.com/(?P<type>embed|videos)/(?P<id>[0-9a-f]+)(?:$|[?#/])'\n-    _TEST = {\n+    _TESTS = [{\n         'url': 'http://www.funnyordie.com/videos/0732f586d7/heart-shaped-box-literal-video-version',\n-        'file': '0732f586d7.mp4',\n         'md5': 'f647e9e90064b53b6e046e75d0241fbd',\n         'info_dict': {\n-            'description': ('Lyrics changed to match the video. Spoken cameo '\n-                'by Obscurus Lupa (from ThatGuyWithTheGlasses.com). Based on a '\n-                'concept by Dustin McLean (DustFilms.com). Performed, edited, '\n-                'and written by David A. Scott.'),\n+            'id': '0732f586d7',\n+            'ext': 'mp4',\n             'title': 'Heart-Shaped Box: Literal Video Version',\n+            'description': 'md5:ea09a01bc9a1c46d9ab696c01747c338',\n+            'thumbnail': 're:^http:.*\\.jpg$',\n+        },\n+    }, {\n+        'url': 'http://www.funnyordie.com/embed/e402820827',\n+        'md5': '0e0c5a7bf45c52b95cd16aa7f28be0b6',\n+        'info_dict': {\n+            'id': 'e402820827',\n+            'ext': 'mp4',\n+            'title': 'Please Use This Song (Jon Lajoie)',\n+            'description': 'md5:2ed27d364f5a805a6dba199faaf6681d',\n+            'thumbnail': 're:^http:.*\\.jpg$',\n         },\n-    }\n+    }]\n \n     def _real_extract(self, url):\n         mobj = re.match(self._VALID_URL, url)\n@@ -31,23 +40,15 @@\n             [r'type=\"video/mp4\" src=\"(.*?)\"', r'src=\"([^>]*?)\" type=\\'video/mp4\\''],\n             webpage, 'video URL', flags=re.DOTALL)\n \n-        if mobj.group('type') == 'embed':\n-            post_json = self._search_regex(\n-                r'fb_post\\s*=\\s*(\\{.*?\\});', webpage, 'post details')\n-            post = json.loads(post_json)\n-            title = post['name']\n-            description = post.get('description')\n-            thumbnail = post.get('picture')\n-        else:\n-            title = self._og_search_title(webpage)\n-            description = self._og_search_description(webpage)\n-            thumbnail = None\n+        post_json = self._search_regex(\n+            r'fb_post\\s*=\\s*(\\{.*?\\});', webpage, 'post details')\n+        post = json.loads(post_json)\n \n         return {\n             'id': video_id,\n             'url': video_url,\n             'ext': 'mp4',\n-            'title': title,\n-            'description': description,\n-            'thumbnail': thumbnail,\n+            'title': post['name'],\n+            'description': post.get('description'),\n+            'thumbnail': post.get('picture'),\n         }\n", "issue": "FunnyOrDie extractor not finding thumbnails\npython -m youtube_dl -v --skip-download --write-info-json --no-playlist -f mp4 http://www.funnyordie.com/videos/e402820827/please-use-this-song-jon-lajoie extracts the video properly but not a thumbnail. Here's the resulting JSON:\n{\"display_id\": \"e402820827\", \"extractor\": \"FunnyOrDie\", \"description\": \"Please use this to sell something\", \"format\": \"0 - unknown\", \"format_id\": \"0\", \"playlist_index\": null, \"stitle\": \"Please Use This Song (Jon Lajoie)\", \"playlist\": null, \"title\": \"Please Use This Song (Jon Lajoie)\", \"url\": \"http://vo.fod4.com/v/e402820827/v600.mp4\", \"extractor_key\": \"FunnyOrDie\", \"id\": \"e402820827\", \"ext\": \"mp4\", \"webpage_url\": \"http://www.funnyordie.com/videos/e402820827/please-use-this-song-jon-lajoie\", \"fulltitle\": \"Please Use This Song (Jon Lajoie)\", \"thumbnail\": null, \"webpage_url_basename\": \"please-use-this-song-jon-lajoie\"}\n\nFunnyorDie's RSS feed entry for this page does contain a thumbnail:\nmedia:thumbnail url=\"http://t.fod4.com/t/e402820827/c480x270_50.jpg\" width=\"464\" height=\"348\"\n\n", "before_files": [{"content": "from __future__ import unicode_literals\n\nimport json\nimport re\n\nfrom .common import InfoExtractor\n\n\nclass FunnyOrDieIE(InfoExtractor):\n    _VALID_URL = r'https?://(?:www\\.)?funnyordie\\.com/(?P<type>embed|videos)/(?P<id>[0-9a-f]+)(?:$|[?#/])'\n    _TEST = {\n        'url': 'http://www.funnyordie.com/videos/0732f586d7/heart-shaped-box-literal-video-version',\n        'file': '0732f586d7.mp4',\n        'md5': 'f647e9e90064b53b6e046e75d0241fbd',\n        'info_dict': {\n            'description': ('Lyrics changed to match the video. Spoken cameo '\n                'by Obscurus Lupa (from ThatGuyWithTheGlasses.com). Based on a '\n                'concept by Dustin McLean (DustFilms.com). Performed, edited, '\n                'and written by David A. Scott.'),\n            'title': 'Heart-Shaped Box: Literal Video Version',\n        },\n    }\n\n    def _real_extract(self, url):\n        mobj = re.match(self._VALID_URL, url)\n\n        video_id = mobj.group('id')\n        webpage = self._download_webpage(url, video_id)\n\n        video_url = self._search_regex(\n            [r'type=\"video/mp4\" src=\"(.*?)\"', r'src=\"([^>]*?)\" type=\\'video/mp4\\''],\n            webpage, 'video URL', flags=re.DOTALL)\n\n        if mobj.group('type') == 'embed':\n            post_json = self._search_regex(\n                r'fb_post\\s*=\\s*(\\{.*?\\});', webpage, 'post details')\n            post = json.loads(post_json)\n            title = post['name']\n            description = post.get('description')\n            thumbnail = post.get('picture')\n        else:\n            title = self._og_search_title(webpage)\n            description = self._og_search_description(webpage)\n            thumbnail = None\n\n        return {\n            'id': video_id,\n            'url': video_url,\n            'ext': 'mp4',\n            'title': title,\n            'description': description,\n            'thumbnail': thumbnail,\n        }\n", "path": "youtube_dl/extractor/funnyordie.py"}], "after_files": [{"content": "from __future__ import unicode_literals\n\nimport json\nimport re\n\nfrom .common import InfoExtractor\n\n\nclass FunnyOrDieIE(InfoExtractor):\n    _VALID_URL = r'https?://(?:www\\.)?funnyordie\\.com/(?P<type>embed|videos)/(?P<id>[0-9a-f]+)(?:$|[?#/])'\n    _TESTS = [{\n        'url': 'http://www.funnyordie.com/videos/0732f586d7/heart-shaped-box-literal-video-version',\n        'md5': 'f647e9e90064b53b6e046e75d0241fbd',\n        'info_dict': {\n            'id': '0732f586d7',\n            'ext': 'mp4',\n            'title': 'Heart-Shaped Box: Literal Video Version',\n            'description': 'md5:ea09a01bc9a1c46d9ab696c01747c338',\n            'thumbnail': 're:^http:.*\\.jpg$',\n        },\n    }, {\n        'url': 'http://www.funnyordie.com/embed/e402820827',\n        'md5': '0e0c5a7bf45c52b95cd16aa7f28be0b6',\n        'info_dict': {\n            'id': 'e402820827',\n            'ext': 'mp4',\n            'title': 'Please Use This Song (Jon Lajoie)',\n            'description': 'md5:2ed27d364f5a805a6dba199faaf6681d',\n            'thumbnail': 're:^http:.*\\.jpg$',\n        },\n    }]\n\n    def _real_extract(self, url):\n        mobj = re.match(self._VALID_URL, url)\n\n        video_id = mobj.group('id')\n        webpage = self._download_webpage(url, video_id)\n\n        video_url = self._search_regex(\n            [r'type=\"video/mp4\" src=\"(.*?)\"', r'src=\"([^>]*?)\" type=\\'video/mp4\\''],\n            webpage, 'video URL', flags=re.DOTALL)\n\n        post_json = self._search_regex(\n            r'fb_post\\s*=\\s*(\\{.*?\\});', webpage, 'post details')\n        post = json.loads(post_json)\n\n        return {\n            'id': video_id,\n            'url': video_url,\n            'ext': 'mp4',\n            'title': post['name'],\n            'description': post.get('description'),\n            'thumbnail': post.get('picture'),\n        }\n", "path": "youtube_dl/extractor/funnyordie.py"}]}