| 
									
										
										
										
											2014-02-22 13:55:51 +01:00
										 |  |  | # -*- coding: utf-8 -*- | 
					
						
							|  |  |  | from __future__ import unicode_literals | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | import os | 
					
						
							|  |  |  | import subprocess | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | from .common import PostProcessor | 
					
						
							| 
									
										
										
										
											2014-11-02 11:23:40 +01:00
										 |  |  | from ..compat import ( | 
					
						
							|  |  |  |     compat_urlretrieve, | 
					
						
							|  |  |  | ) | 
					
						
							| 
									
										
										
										
											2014-02-22 13:55:51 +01:00
										 |  |  | from ..utils import ( | 
					
						
							|  |  |  |     check_executable, | 
					
						
							|  |  |  |     encodeFilename, | 
					
						
							|  |  |  |     PostProcessingError, | 
					
						
							|  |  |  |     prepend_extension, | 
					
						
							|  |  |  |     shell_quote | 
					
						
							|  |  |  | ) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class AtomicParsleyPPError(PostProcessingError): | 
					
						
							|  |  |  |     pass | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class AtomicParsleyPP(PostProcessor): | 
					
						
							|  |  |  |     def run(self, info): | 
					
						
							|  |  |  |         if not check_executable('AtomicParsley', ['-v']): | 
					
						
							|  |  |  |             raise AtomicParsleyPPError('AtomicParsley was not found. Please install.') | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         filename = info['filepath'] | 
					
						
							|  |  |  |         temp_filename = prepend_extension(filename, 'temp') | 
					
						
							|  |  |  |         temp_thumbnail = prepend_extension(filename, 'thumb') | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         if not info.get('thumbnail'): | 
					
						
							|  |  |  |             raise AtomicParsleyPPError('Thumbnail was not found. Nothing to do.') | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         compat_urlretrieve(info['thumbnail'], temp_thumbnail) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         cmd = ['AtomicParsley', filename, '--artwork', temp_thumbnail, '-o', temp_filename] | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         self._downloader.to_screen('[atomicparsley] Adding thumbnail to "%s"' % filename) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         if self._downloader.params.get('verbose', False): | 
					
						
							|  |  |  |             self._downloader.to_screen('[debug] AtomicParsley command line: %s' % shell_quote(cmd)) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         p = subprocess.Popen(cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE) | 
					
						
							|  |  |  |         stdout, stderr = p.communicate() | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         if p.returncode != 0: | 
					
						
							|  |  |  |             msg = stderr.decode('utf-8', 'replace').strip() | 
					
						
							|  |  |  |             raise AtomicParsleyPPError(msg) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         os.remove(encodeFilename(temp_thumbnail)) | 
					
						
							| 
									
										
										
										
											2015-04-13 22:50:40 +02:00
										 |  |  |         # for formats that don't support thumbnails (like 3gp) AtomicParsley | 
					
						
							|  |  |  |         # won't create to the temporary file | 
					
						
							|  |  |  |         if b'No changes' in stdout: | 
					
						
							|  |  |  |             self._downloader.report_warning('The file format doesn\'t support embedding a thumbnail') | 
					
						
							|  |  |  |         else: | 
					
						
							|  |  |  |             os.remove(encodeFilename(filename)) | 
					
						
							|  |  |  |             os.rename(encodeFilename(temp_filename), encodeFilename(filename)) | 
					
						
							| 
									
										
										
										
											2014-02-22 13:55:51 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-04-18 11:36:42 +02:00
										 |  |  |         return [], info |