Repository: ytdl-org/youtube-dl

Issue:
Support for tfou.fr
 youtube-dl --verbose 'http://www.tfou.fr/les-mysterieuses-cites-d-or-saison-2/videos/l-expedition-les-mysterieuses-cites-d-or-8302866-739.html'
[debug] System config: []
[debug] User config: []
[debug] Command-line args: ['--verbose', 'http://www.tfou.fr/les-mysterieuses-cites-d-or-saison-2/videos/l-expedition-les-mysterieuses-cites-d-or-8302866-739.html']
[debug] Encodings: locale ANSI_X3.4-1968, fs ANSI_X3.4-1968, out ANSI_X3.4-1968, pref ANSI_X3.4-1968
[debug] youtube-dl version 2015.01.01
[debug] Python version 2.7.6 - Linux-3.13.0-34-generic-x86_64-with-Ubuntu-14.04-trusty
[debug] exe versions: avconv 9.16-6, avprobe 9.16-6, ffmpeg 2.4.2, ffprobe 2.4.2, rtmpdump 2.4
[debug] Proxy map: {}
[generic] l-expedition-les-mysterieuses-cites-d-or-8302866-739: Requesting header
WARNING: Falling back on generic information extractor.
[generic] l-expedition-les-mysterieuses-cites-d-or-8302866-739: Downloading webpage
[generic] l-expedition-les-mysterieuses-cites-d-or-8302866-739: Extracting information
ERROR: Unsupported URL: http://www.tfou.fr/les-mysterieuses-cites-d-or-saison-2/videos/l-expedition-les-mysterieuses-cites-d-or-8302866-739.html



Discussion:

Resolving patch:
diff --git a/youtube_dl/extractor/tf1.py b/youtube_dl/extractor/tf1.py
--- a/youtube_dl/extractor/tf1.py
+++ b/youtube_dl/extractor/tf1.py
@@ -8,8 +8,8 @@
 
 class TF1IE(InfoExtractor):
     """TF1 uses the wat.tv player."""
-    _VALID_URL = r'http://videos\.tf1\.fr/.*-(?P<id>.*?)\.html'
-    _TEST = {
+    _VALID_URL = r'http://(?:videos\.tf1|www\.tfou)\.fr/.*?-(?P<id>\d+)(?:-\d+)?\.html'
+    _TESTS = {
         'url': 'http://videos.tf1.fr/auto-moto/citroen-grand-c4-picasso-2013-presentation-officielle-8062060.html',
         'info_dict': {
             'id': '10635995',
@@ -21,14 +21,26 @@ class TF1IE(InfoExtractor):
             # Sometimes wat serves the whole file with the --test option
             'skip_download': True,
         },
+    }, {
+        'url': 'http://www.tfou.fr/chuggington/videos/le-grand-mysterioso-chuggington-7085291-739.html',
+        'info_dict': {
+            'id': '12043945',
+            'ext': 'mp4',
+            'title': 'Le grand Mystérioso - Chuggington',
+            'description': 'Le grand Mystérioso - Emery rêve qu\'un article lui soit consacré dans le journal.',
+            'upload_date': '20150103',
+        },
+        'params': {
+            # Sometimes wat serves the whole file with the --test option
+            'skip_download': True,
+        },
     }
 
     def _real_extract(self, url):
-        mobj = re.match(self._VALID_URL, url)
-        video_id = mobj.group('id')
+        video_id = self._match_id(url)
         webpage = self._download_webpage(url, video_id)
         embed_url = self._html_search_regex(
-            r'"(https://www.wat.tv/embedframe/.*?)"', webpage, 'embed url')
+            r'["\'](https?://www.wat.tv/embedframe/.*?)["\']', webpage, 'embed url')
         embed_page = self._download_webpage(embed_url, video_id,
                                             'Downloading embed player page')
         wat_id = self._search_regex(r'UVID=(.*?)&', embed_page, 'wat id')


Test patch: