Main calls cli and its main function to start seasonedParser module.
This commit is contained in:
		
							
								
								
									
										90
									
								
								seasonedParser/cli.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										90
									
								
								seasonedParser/cli.py
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,90 @@ | ||||
| #!/usr/bin/env python3.6 | ||||
| # -*- coding: utf-8 -*- | ||||
| """ | ||||
| Entry point module | ||||
| """ | ||||
|  | ||||
| import click | ||||
| from guessit import guessit | ||||
| import logging | ||||
|  | ||||
| from core import scan_folder | ||||
| from video import Video | ||||
| from exceptions import InsufficientNameError | ||||
|  | ||||
| import env_variables as env | ||||
|  | ||||
| logging.basicConfig(filename=env.logfile, level=logging.INFO) | ||||
| logger = logging.getLogger('seasonedParser') | ||||
| fh = logging.FileHandler(env.logfile) | ||||
| fh.setLevel(logging.INFO) | ||||
| sh = logging.StreamHandler() | ||||
| sh.setLevel(logging.WARNING) | ||||
|  | ||||
| fh_formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s') | ||||
| sh_formatter = logging.Formatter('%(levelname)s: %(message)s') | ||||
| fh.setFormatter(fh_formatter) | ||||
| sh.setFormatter(sh_formatter) | ||||
|  | ||||
| logger.addHandler(fh) | ||||
| logger.addHandler(sh) | ||||
|  | ||||
| def tweet(video): | ||||
|     pass | ||||
|  | ||||
| def prompt(name): | ||||
|     manual_name = input("Insufficient name: '{}'\nInput name manually: ".format(name))  | ||||
|  | ||||
|     if manual_name == 'q': | ||||
|         raise  KeyboardInterrupt | ||||
|     if manual_name == 's': | ||||
|         return None | ||||
|  | ||||
|  | ||||
|     return manual_name | ||||
|  | ||||
| def _moveHome(file): | ||||
|     print('- - -\nMatch: \t\t {}. \nDestination:\t {}'.format(file, file.wantedFilePath())) | ||||
|     logger.info('- - -\nMatch: \t\t {}. \nDestination:\t {}'.format(file, file.wantedFilePath())) | ||||
|  | ||||
| @click.command() | ||||
| @click.argument('path') | ||||
| @click.option('--daemon', '-d', is_flag=True) | ||||
| @click.option('--dry', is_flag=True) | ||||
| def main(path, daemon, dry): | ||||
|     if dry: | ||||
|         def moveHome(file): _moveHome(file) | ||||
|     else: | ||||
|         from core import moveHome | ||||
|  | ||||
|  | ||||
|     videos, insufficient_name = scan_folder(path) | ||||
|  | ||||
|     for video in videos: | ||||
|         moveHome(video) | ||||
|  | ||||
|     if len(insufficient_name) and daemon: | ||||
|         logger.warning('Daemon flag set. Insufficient name for: %r', insufficient_name) | ||||
|         exit(0) | ||||
|  | ||||
|     while len(insufficient_name) >= 1: | ||||
|         for i, file in enumerate(insufficient_name): | ||||
|             try: | ||||
|                 manual_name = prompt(file) | ||||
|                  | ||||
|                 if manual_name is None: | ||||
|                     del insufficient_name[i] | ||||
|                     continue | ||||
|                  | ||||
|                 video = Video.fromguess(file, guessit(manual_name)) | ||||
|                 moveHome(video) | ||||
|                 del insufficient_name[i] | ||||
|  | ||||
|             except KeyboardInterrupt: | ||||
|                 # Logger: Received interrupt, exiting parser. | ||||
|                 # should the class objects be deleted ? | ||||
|                 print('Interrupt detected. Exiting') | ||||
|                 exit(0) | ||||
|             | ||||
| if __name__ == '__main__': | ||||
|     main() | ||||
		Reference in New Issue
	
	Block a user