From 36597dc40f311f3b209f92f6fefae7466decc758 Mon Sep 17 00:00:00 2001
From: Kegan <kegan@kegan.info>
Date: Sat, 23 Apr 2011 14:55:40 +0800
Subject: [PATCH] Updated to stamp extracted audio file with HTTP last modified
 date.

---
 youtube-dl | 18 ++++++++++++++----
 1 file changed, 14 insertions(+), 4 deletions(-)

diff --git a/youtube-dl b/youtube-dl
index 4f6706e2af..c41228c93b 100755
--- a/youtube-dl
+++ b/youtube-dl
@@ -625,11 +625,12 @@ class FileDownloader(object):
 			return
 		filetime = timeconvert(timestr)
 		if filetime is None:
-			return
+			return filetime
 		try:
 			os.utime(filename, (time.time(), filetime))
 		except:
 			pass
+		return filetime
 
 	def report_writedescription(self, descfn):
 		""" Report that the description file is being written """
@@ -772,7 +773,8 @@ class FileDownloader(object):
 
 		if not self.params.get('skip_download', False):
 			try:
-				success = self._do_download(filename, info_dict['url'].encode('utf-8'), info_dict.get('player_url', None))
+				success,add_data = self._do_download(filename, info_dict['url'].encode('utf-8'), info_dict.get('player_url', None))
+				info_dict.update(add_data)
 			except (OSError, IOError), err:
 				raise UnavailableVideoError
 			except (urllib2.URLError, httplib.HTTPException, socket.error), err:
@@ -992,10 +994,11 @@ class FileDownloader(object):
 		self.try_rename(tmpfilename, filename)
 
 		# Update file modification time
+		filetime = None
 		if self.params.get('updatetime', True):
-			self.try_utime(filename, data.info().get('last-modified', None))
+			filetime = self.try_utime(filename, data.info().get('last-modified', None))
 
-		return True
+		return True, {'filetime': filetime}
 
 
 class InfoExtractor(object):
@@ -3355,6 +3358,13 @@ class FFmpegExtractAudioPP(PostProcessor):
 			self._downloader.to_stderr(u'WARNING: error running ffmpeg')
 			return None
 
+ 		# Try to update the date time for extracted audio file.
+		if information.get('filetime') is not None:
+			try:
+				os.utime(new_path, (time.time(), information['filetime']))
+			except:
+				self._downloader.to_stderr(u'WARNING: Cannot update utime of audio file')
+
 		try:
 			os.remove(path)
 		except (IOError, OSError):