38 lines
		
	
	
	
		
			1.5 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
		
		
			
		
	
	
			38 lines
		
	
	
	
		
			1.5 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
| 
								 | 
							
								#!/usr/bin/env python3
							 | 
						||
| 
								 | 
							
								import psycopg
							 | 
						||
| 
								 | 
							
								import yaml
							 | 
						||
| 
								 | 
							
								import sys
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								with open('config.yml', 'r', encoding='UTF-8') as data:
							 | 
						||
| 
								 | 
							
								    config = yaml.safe_load(data.read())
							 | 
						||
| 
								 | 
							
								with open(config['response_tokens'], 'r', encoding='UTF-8') as data:
							 | 
						||
| 
								 | 
							
								    valid_tokens = {item for item in yaml.safe_load(data.read())}
							 | 
						||
| 
								 | 
							
								with open(sys.argv[1], 'r', encoding='UTF-8') as data:
							 | 
						||
| 
								 | 
							
								    phrases = yaml.safe_load(data.read())
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								with psycopg.connect(config['db_spec']) as conn:
							 | 
						||
| 
								 | 
							
								    query_phrases = 'INSERT INTO responses (tokens, response) VALUES (%s, %s)'
							 | 
						||
| 
								 | 
							
								    with conn.cursor() as cur:
							 | 
						||
| 
								 | 
							
								        for regexref, responses in phrases.items():
							 | 
						||
| 
								 | 
							
								            tokens = set(regexref.split(','))
							 | 
						||
| 
								 | 
							
								            if tokens != tokens & valid_tokens:
							 | 
						||
| 
								 | 
							
								                print(f'{str(tokens)} failed to add!')
							 | 
						||
| 
								 | 
							
								                continue
							 | 
						||
| 
								 | 
							
								            token_string = ','.join(sorted(tokens))
							 | 
						||
| 
								 | 
							
								            for response in responses:
							 | 
						||
| 
								 | 
							
								                cur.execute('SAVEPOINT sp1')
							 | 
						||
| 
								 | 
							
								                try:
							 | 
						||
| 
								 | 
							
								                    cur.execute( query_phrases, (token_string, response))
							 | 
						||
| 
								 | 
							
								                except psycopg.errors.UniqueViolation as err:
							 | 
						||
| 
								 | 
							
								                    cur.execute('ROLLBACK TO SAVEPOINT sp1')
							 | 
						||
| 
								 | 
							
								                    # print(err)
							 | 
						||
| 
								 | 
							
								                    continue
							 | 
						||
| 
								 | 
							
								                cur.execute('RELEASE SAVEPOINT sp1')
							 | 
						||
| 
								 | 
							
								        conn.commit()
							 | 
						||
| 
								 | 
							
								        #for item in names:
							 | 
						||
| 
								 | 
							
								        #    usernames = names[item]
							 | 
						||
| 
								 | 
							
								        #    for username in usernames:
							 | 
						||
| 
								 | 
							
								        #        cur.execute('INSERT INTO names (tg_id, name) VALUES (%s, %s)',
							 | 
						||
| 
								 | 
							
								        #                    (item, username))
							 | 
						||
| 
								 | 
							
								        #conn.commit()
							 |