reduced slack functionality, higher ease of use. Database migration wip
This commit is contained in:
		
							
								
								
									
										47
									
								
								news_fetch/utils_worker/compress/runner.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										47
									
								
								news_fetch/utils_worker/compress/runner.py
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,47 @@ | ||||
| import os | ||||
| import subprocess | ||||
| from pathlib import Path | ||||
|  | ||||
| import logging | ||||
| logger = logging.getLogger(__name__) | ||||
| import configuration | ||||
| config = configuration.main_config["DOWNLOADS"] | ||||
|  | ||||
| shrink_sizes = [] | ||||
|  | ||||
| def shrink_pdf(article): | ||||
|     article_loc = Path(article.save_path) / article.file_name | ||||
|     initial_size = article_loc.stat().st_size | ||||
|     compressed_tmp = Path(config['default_download_path']) / "compressed.pdf" | ||||
|  | ||||
|     if article_loc.suffix != "pdf": | ||||
|         return article # it probably was a youtube video | ||||
|          | ||||
|     c = subprocess.run( | ||||
|         [ | ||||
|             "gs", | ||||
|             "-sDEVICE=pdfwrite", | ||||
|             "-dPDFSETTINGS=/screen", | ||||
|             "-dNOPAUSE", | ||||
|             "-dBATCH", | ||||
|             f"-sOutputFile={compressed_tmp}",  | ||||
|             f"{article_loc}" | ||||
|         ], | ||||
|         stdout=subprocess.PIPE, stderr=subprocess.PIPE | ||||
|     ) | ||||
|  | ||||
|     if c.returncode == 0: | ||||
|         try: | ||||
|             os.replace(compressed_tmp, article_loc) | ||||
|         except OSError as e: | ||||
|             logger.error(f"Compression ran but I could not copy back the file {e}") | ||||
|  | ||||
|         final_size = article_loc.stat().st_size | ||||
|         shrink_sizes.append(initial_size - final_size) | ||||
|         logger.info(f"Compression worked. Avg shrinkage: {int(sum(shrink_sizes)/len(shrink_sizes) / 1000)} KB") | ||||
|  | ||||
|  | ||||
|     else: | ||||
|         logger.error(f"Could not run the compression! {c.stderr.decode()} - {c.stdout.decode()}") | ||||
|      | ||||
|     return article | ||||
		Reference in New Issue
	
	Block a user