summary refs log tree commit diff
diff options
context:
space:
mode:
authorRicardo Garcia <sarbalap+freshmeat@gmail.com>2010-07-13 19:37:07 +0200
committerRicardo Garcia <sarbalap+freshmeat@gmail.com>2010-10-31 11:28:17 +0100
commitdf372a655f3b04c510492d5a522b19a3e35f01c8 (patch)
tree28cfeb2e67f7642094d53249b081b4ab09632233
parent9e9647d9a155870a462679bc750ebb2519fcecff (diff)
downloadyoutube-dl-df372a655f3b04c510492d5a522b19a3e35f01c8.tar.gz
youtube-dl-df372a655f3b04c510492d5a522b19a3e35f01c8.tar.xz
youtube-dl-df372a655f3b04c510492d5a522b19a3e35f01c8.zip
Improve video ordinal assignment method (fixes issue #149)
-rwxr-xr-xyoutube-dl33
1 files changed, 30 insertions, 3 deletions
diff --git a/youtube-dl b/youtube-dl
index 481f9f400..56500d220 100755
--- a/youtube-dl
+++ b/youtube-dl
@@ -387,6 +387,10 @@ class FileDownloader(object):
 			self.to_stdout(u'[download] Download completed')
 		else:
 			self.to_stdout(u'')
+	
+	def increment_downloads(self):
+		"""Increment the ordinal that assigns a number to each file."""
+		self._num_downloads += 1
 
 	def process_info(self, info_dict):
 		"""Process a single dictionary returned by an InfoExtractor."""
@@ -582,7 +586,6 @@ class FileDownloader(object):
 				try:
 					(stream, filename) = sanitize_open(filename, open_mode)
 					self.report_destination(filename)
-					self._num_downloads += 1
 				except (OSError, IOError), err:
 					self.trouble('ERROR: unable to open for writing: %s' % str(err))
 					return False
@@ -809,6 +812,10 @@ class YoutubeIE(InfoExtractor):
 		if mobj is None:
 			self._downloader.trouble(u'ERROR: invalid URL: %s' % url)
 			return
+
+		# At this point we have a new video
+		if self._downloader is not None:
+			self._downloader.increment_downloads()
 		video_id = mobj.group(2)
 
 		# Downloader parameters
@@ -1035,6 +1042,10 @@ class MetacafeIE(InfoExtractor):
 			self._youtube_ie.extract('http://www.youtube.com/watch?v=%s' % mobj2.group(1))
 			return
 
+		# At this point we have a new video
+		if self._downloader is not None:
+			self._downloader.increment_downloads()
+
 		simple_title = mobj.group(2).decode('utf-8')
 		video_extension = 'flv'
 
@@ -1124,6 +1135,9 @@ class DailymotionIE(InfoExtractor):
 			self._downloader.trouble(u'ERROR: invalid URL: %s' % url)
 			return
 
+		# At this point we have a new video
+		if self._downloader is not None:
+			self._downloader.increment_downloads()
 		video_id = mobj.group(1)
 
 		simple_title = mobj.group(2).decode('utf-8')
@@ -1209,6 +1223,9 @@ class GoogleIE(InfoExtractor):
 			self._downloader.trouble(u'ERROR: Invalid URL: %s' % url)
 			return
 
+		# At this point we have a new video
+		if self._downloader is not None:
+			self._downloader.increment_downloads()
 		video_id = mobj.group(1)
 
 		video_extension = 'mp4'
@@ -1317,6 +1334,9 @@ class PhotobucketIE(InfoExtractor):
 			self._downloader.trouble(u'ERROR: Invalid URL: %s' % url)
 			return
 
+		# At this point we have a new video
+		if self._downloader is not None:
+			self._downloader.increment_downloads()
 		video_id = mobj.group(1)
 
 		video_extension = 'flv'
@@ -1392,13 +1412,16 @@ class YahooIE(InfoExtractor):
 	def _real_initialize(self):
 		return
 
-	def _real_extract(self, url):
+	def _real_extract(self, url, new_video=True):
 		# Extract ID from URL
 		mobj = re.match(self._VALID_URL, url)
 		if mobj is None:
 			self._downloader.trouble(u'ERROR: Invalid URL: %s' % url)
 			return
 
+		# At this point we have a new video
+		if self._downloader is not None and new_video:
+			self._downloader.increment_downloads()
 		video_id = mobj.group(2)
 		video_extension = 'flv'
 
@@ -1425,7 +1448,7 @@ class YahooIE(InfoExtractor):
 			yahoo_vid = mobj.group(1)
 
 			url = 'http://video.yahoo.com/watch/%s/%s' % (yahoo_vid, yahoo_id)
-			return self._real_extract(url)
+			return self._real_extract(url, new_video=False)
 
 		# Retrieve video webpage to extract further information
 		request = urllib2.Request(url)
@@ -1544,6 +1567,10 @@ class GenericIE(InfoExtractor):
 		return
 
 	def _real_extract(self, url):
+		# At this point we have a new video
+		if self._downloader is not None:
+			self._downloader.increment_downloads()
+
 		video_id = url.split('/')[-1]
 		request = urllib2.Request(url)
 		try: