import datetime from mastodon import Mastodon import time import os import json import sys import os.path import operator import psycopg2 import pdb def db_config(): # Load db configuration from config file config_filepath = "config/db_config.txt" mastodon_db = get_parameter("mastodon_db", config_filepath) mastodon_db_user = get_parameter("mastodon_db_user", config_filepath) spamcheck_db = get_parameter("spamcheck_db", config_filepath) spamcheck_db_user = get_parameter("spamcheck_db_user", config_filepath) return (mastodon_db, mastodon_db_user, spamcheck_db, spamcheck_db_user) # Returns the parameter from the specified file def get_parameter( parameter, file_path ): # Check if secrets file exists if not os.path.isfile(file_path): print("File %s not found, exiting."%file_path) sys.exit(0) # Find parameter in file with open( file_path ) as f: for line in f: if line.startswith( parameter ): return line.replace(parameter + ":", "").strip() # Cannot find parameter, exit print(file_path + " Missing parameter %s "%parameter) sys.exit(0) ############################################################################### # main if __name__ == '__main__': mastodon_db, mastodon_db_user, spamcheck_db, spamcheck_db_user = db_config() ############################################################################### # check new registering ############################################################################### created_at_lst = [] id_lst = [] email_lst = [] ip_lst = [] text_lst = [] try: conn = None conn = psycopg2.connect(database = mastodon_db, user = mastodon_db_user, password = "", host = "/var/run/postgresql", port = "5432") cur = conn.cursor() cur.execute("select users.created_at, users.id, users.email, users.sign_up_ip, user_invite_requests.text from users, user_invite_requests where not users.approved and users.id = user_invite_requests.user_id") rows = cur.fetchall() for row in rows: if row != None: created_at_lst.append(row[0]) id_lst.append(row[1]) email_lst.append(row[2]) ip_lst.append(row[3]) text_lst.append(row[4]) cur.close() except (Exception, psycopg2.DatabaseError) as error: print (error) finally: if conn is not None: conn.close() ############################################################################### insert_sql = 'INSERT INTO spamcheck(created_at, id, email, ip, text) VALUES(%s,%s,%s,%s,%s) ON CONFLICT DO NOTHING' i = 0 while i < len(id_lst): conn = None try: conn = psycopg2.connect(database = spamcheck_db, user = spamcheck_db_user, password = "", host = "/var/run/postgresql", port = "5432") cur = conn.cursor() cur.execute(insert_sql, (created_at_lst[i], id_lst[i], email_lst[i], ip_lst[i], text_lst[i])) conn.commit() cur.close() except (Exception, psycopg2.DatabaseError) as error: print(error) finally: if conn is not None: conn.close() print(created_at_lst[i], id_lst[i], email_lst[i], ip_lst[i], text_lst[i]) i = i + 1