youtube-dl

Another place where youtube-dl lives on
git clone git://git.oshgnacknak.de/youtube-dl.git
Log | Files | Refs | README | LICENSE

commit cbfff4db630fef66847d326cdd70b9a6002c0d5b
parent 781daeabdb6ffa2b63bf8f7dec715ac8835c558b
Author: Ricardo Garcia <sarbalap+freshmeat@gmail.com>
Date:   Sun, 24 May 2009 11:07:51 +0200

Verify URLs in simulate mode (fixes issue #22)

Diffstat:
Myoutube-dl | 26++++++++++++++++++++------
1 file changed, 20 insertions(+), 6 deletions(-)

diff --git a/youtube-dl b/youtube-dl @@ -200,6 +200,14 @@ class FileDownloader(object): multiplier = 1024.0 ** 'bkmgtpezy'.index(matchobj.group(2).lower()) return long(round(number * multiplier)) + @staticmethod + def verify_url(url): + """Verify a URL is valid and data could be downloaded.""" + request = urllib2.Request(url, None, std_headers) + data = urllib2.urlopen(request) + data.read(1) + data.close() + def add_info_extractor(self, ie): """Add an InfoExtractor object to the end of the list.""" self._ies.append(ie) @@ -265,15 +273,21 @@ class FileDownloader(object): def process_info(self, info_dict): """Process a single dictionary returned by an InfoExtractor.""" - # Forced printings - if self.params.get('forcetitle', False): - print info_dict['title'].encode(locale.getpreferredencoding()) - if self.params.get('forceurl', False): - print info_dict['url'].encode(locale.getpreferredencoding()) - # Do nothing else if in simulate mode if self.params.get('simulate', False): + try: + self.verify_url(info_dict['url']) + except (OSError, IOError, urllib2.URLError, httplib.HTTPException, socket.error), err: + raise UnavailableFormatError + + # Forced printings + if self.params.get('forcetitle', False): + print info_dict['title'].encode(locale.getpreferredencoding()) + if self.params.get('forceurl', False): + print info_dict['url'].encode(locale.getpreferredencoding()) + return + try: template_dict = dict(info_dict)