IE._WORKING attribute in order to warn the users and skip the tests on broken IEs
authorFilippo Valsorda <filippo.valsorda@gmail.com>
Tue, 27 Nov 2012 18:30:09 +0000 (19:30 +0100)
committerFilippo Valsorda <filippo.valsorda@gmail.com>
Tue, 27 Nov 2012 18:30:09 +0000 (19:30 +0100)
youtube_dl/FileDownloader.py
youtube_dl/InfoExtractors.py

index 69d169904937d2d2ac7f06459a49b3a4782ed291..1fdd2071ff2a99e0a1bed36a05abb7c8df4ff89e 100644 (file)
@@ -481,6 +481,11 @@ class FileDownloader(object):
                                if not ie.suitable(url):
                                        continue
 
+                               # Warn if the _WORKING attribute is False
+                               if not ie.working():
+                                       self.trouble(u'WARNING: the program functionality for this site has been marked as broken, '
+                                                        u'and will probably not work. If you want to go on, use the -i option.')
+
                                # Suitable InfoExtractor found
                                suitable_found = True
 
index 4c664ce6e9b161300cd3827174594a056f389dfe..7c6e1becc4a3ae062e108264dfc026b0848bde1e 100644 (file)
@@ -63,10 +63,14 @@ class InfoExtractor(object):
 
        _real_extract() must return a *list* of information dictionaries as
        described above.
+
+       Finally, the _WORKING attribute should be set to False for broken IEs
+       in order to warn the users and skip the tests.
        """
 
        _ready = False
        _downloader = None
+       _WORKING = True
 
        def __init__(self, downloader=None):
                """Constructor. Receives an optional downloader."""
@@ -77,6 +81,10 @@ class InfoExtractor(object):
                """Receives a URL and returns True if suitable for this IE."""
                return re.match(self._VALID_URL, url) is not None
 
+       def working(self):
+               """Getter method for _WORKING."""
+               return self._WORKING
+
        def initialize(self):
                """Initializes an instance (authentication, etc)."""
                if not self._ready:
@@ -1891,6 +1899,7 @@ class DepositFilesIE(InfoExtractor):
 class FacebookIE(InfoExtractor):
        """Information Extractor for Facebook"""
 
+       _WORKING = False
        _VALID_URL = r'^(?:https?://)?(?:\w+\.)?facebook\.com/(?:video/video|photo)\.php\?(?:.*?)v=(?P<ID>\d+)(?:.*)'
        _LOGIN_URL = 'https://login.facebook.com/login.php?m&next=http%3A%2F%2Fm.facebook.com%2Fhome.php&'
        _NETRC_MACHINE = 'facebook'