Use shutil.which to discover ffmpeg.
How did I miss such an easy solution for so long?? So glad I did not go the env var route.
This commit is contained in:
		
							parent
							
								
									84599b44f7
								
							
						
					
					
						commit
						e186653e36
					
				
					 2 changed files with 29 additions and 9 deletions
				
			
		|  | @ -55,7 +55,6 @@ If you are interested in helping, please raise an issue before making any pull r | |||
| - Add a `Photo.merge` to combine duplicate entries. | ||||
| - Generate thumbnails for vector files without falling victim to bombs. | ||||
| - Allow photos to have nonstandard, orderby-able properties like "release year". How? | ||||
| - Make the FFmpeg path configurable. Some kind of global config? Or part of the database config file? It's not like every photodb needs a separate one. I don't like using environment variables for application config but maybe it would be appropriate here. | ||||
| - Improve the appearance of album page. Too many section headers and the "Create album" interface should allow giving a title immediately. | ||||
| - When users have '%' or '#', etc. in their username, it is difficult to access their /user/ URL. I would prefer to fix it without simply blacklisting those characters. | ||||
| - Currently, the Jinja templates are having a tangling influence on the backend objects, because Jinja cannot import my other modules like bytestring, but it can access the methods of the objects I pass into the template. As a result, the objects have excess helper methods. Consider making them into Jinja filters instead. Which is also kind of ugly but will move that pollution out of the backend at least. | ||||
|  |  | |||
|  | @ -4,18 +4,39 @@ This file provides data and objects that do not change throughout the runtime. | |||
| 
 | ||||
| import converter | ||||
| import logging | ||||
| import shutil | ||||
| import string | ||||
| import traceback | ||||
| import warnings | ||||
| 
 | ||||
| FFMPEG_NOT_FOUND = ''' | ||||
| ffmpeg or ffprobe not found. | ||||
| Add them to your PATH or use symlinks such that they appear in: | ||||
| Linux: which ffmpeg & which ffprobe | ||||
| Windows: where ffmpeg & where ffprobe | ||||
| ''' | ||||
| 
 | ||||
| def _load_ffmpeg(): | ||||
|     ffmpeg_path = shutil.which('ffmpeg') | ||||
|     ffprobe_path = shutil.which('ffprobe') | ||||
| 
 | ||||
|     if (not ffmpeg_path) or (not ffprobe_path): | ||||
|         warnings.warn(FFMPEG_NOT_FOUND) | ||||
|         return None | ||||
| 
 | ||||
|     try: | ||||
|         ffmpeg = converter.Converter( | ||||
|         ffmpeg_path='D:\\software\\ffmpeg\\bin\\ffmpeg.exe', | ||||
|         ffprobe_path='D:\\software\\ffmpeg\\bin\\ffprobe.exe', | ||||
|             ffmpeg_path=ffmpeg_path, | ||||
|             ffprobe_path=ffprobe_path, | ||||
|         ) | ||||
|     except converter.ffmpeg.FFMpegError: | ||||
|         traceback.print_exc() | ||||
|         ffmpeg = None | ||||
| 
 | ||||
|     return ffmpeg | ||||
| 
 | ||||
| ffmpeg = _load_ffmpeg() | ||||
| 
 | ||||
| FILENAME_BADCHARS = '\\/:*?<>|"' | ||||
| 
 | ||||
| # Note: Setting user_version pragma in init sequence is safe because it only | ||||
|  |  | |||
		Loading…
	
		Reference in a new issue