mirror of https://github.com/CIRCL/AIL-framework
				
				
				
			
		
			
				
	
	
		
			70 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			Python
		
	
	
		
			Executable File
		
	
			
		
		
	
	
			70 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			Python
		
	
	
		
			Executable File
		
	
| #!/usr/bin/env python3
 | |
| # -*-coding:UTF-8 -*
 | |
| import time
 | |
| from packages import Paste
 | |
| from pubsublogger import publisher
 | |
| from Helper import Process
 | |
| import re
 | |
| 
 | |
| import signal
 | |
| 
 | |
| class TimeoutException(Exception):
 | |
|     pass
 | |
| 
 | |
| def timeout_handler(signum, frame):
 | |
|     raise TimeoutException
 | |
| 
 | |
| signal.signal(signal.SIGALRM, timeout_handler)
 | |
| 
 | |
| '''
 | |
| This module takes its input from the global module.
 | |
| It applies some regex and publish matched content
 | |
| '''
 | |
| 
 | |
| if __name__ == "__main__":
 | |
|     publisher.port = 6380
 | |
|     publisher.channel = "Script"
 | |
|     config_section = "Release"
 | |
|     p = Process(config_section)
 | |
|     max_execution_time = p.config.getint("Curve", "max_execution_time")
 | |
|     publisher.info("Release scripts to find release names")
 | |
| 
 | |
|     movie = "[a-zA-Z0-9.]+\.[0-9]{4}.[a-zA-Z0-9.]+\-[a-zA-Z]+"
 | |
|     tv = "[a-zA-Z0-9.]+\.S[0-9]{2}E[0-9]{2}.[a-zA-Z0-9.]+\.[a-zA-Z0-9.]+\-[a-zA-Z0-9]+"
 | |
|     xxx = "[a-zA-Z0-9._]+.XXX.[a-zA-Z0-9.]+\-[a-zA-Z0-9]+"
 | |
| 
 | |
|     regexs = [movie, tv, xxx]
 | |
| 
 | |
|     regex = '|'.join(regexs)
 | |
|     while True:
 | |
|         signal.alarm(max_execution_time)
 | |
|         filepath = p.get_from_set()
 | |
|         if filepath is None:
 | |
|             publisher.debug("Script Release is Idling 10s")
 | |
|             print('Sleeping')
 | |
|             time.sleep(10)
 | |
|             continue
 | |
| 
 | |
|         paste = Paste.Paste(filepath)
 | |
|         content = paste.get_p_content()
 | |
| 
 | |
|         #signal.alarm(max_execution_time)
 | |
|         try:
 | |
|             releases = set(re.findall(regex, content))
 | |
|             if len(releases) == 0:
 | |
|                 continue
 | |
| 
 | |
|                 to_print = 'Release;{};{};{};{} releases;{}'.format(paste.p_source, paste.p_date, paste.p_name, len(releases), paste.p_rel_path)
 | |
|                 print(to_print)
 | |
|                 if len(releases) > 30:
 | |
|                     publisher.warning(to_print)
 | |
|                 else:
 | |
|                     publisher.info(to_print)
 | |
| 
 | |
|         except TimeoutException:
 | |
|             p.incr_module_timeout_statistic()
 | |
|             print ("{0} processing timeout".format(paste.p_rel_path))
 | |
|             continue
 | |
|         else:
 | |
|             signal.alarm(0)
 |