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