Replicator can manage several Mastodon, Pleroma o Soapbox bot accounts who will replicate (post to Mastodon, Pleroma or Soapbox servers) several Twitter accounts's tweets of your choice.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
replicator/twitter-setup.py

92 lines
2.1 KiB

import getpass
import os
import sys
import psycopg2
import pdb
def save_secrets(api_key, api_key_secret):
save_error = None
sql = f'INSERT INTO tsecrets (api_key, api_key_secret) VALUES (%s,%s)'
conn = None
try:
conn = psycopg2.connect(database = replicator_db, user = replicator_db_user, password = "", host = "/var/run/postgresql", port = "5432")
cur = conn.cursor()
cur.execute(sql, (api_key, api_key_secret))
conn.commit()
except (Exception, psycopg2.DatabaseError) as error:
save_error = error.pgcode
sys.stdout.write(f'\n{str(error)}\n')
finally:
if conn is not None:
conn.close()
return save_error
def get_config():
# Load configuration from config file
config_filepath = "config/db_config.txt"
replicator_db = get_db_params("replicator_db", config_filepath)
replicator_db_user = get_db_params("replicator_db_user", config_filepath)
return (config_filepath, replicator_db, replicator_db_user)
def ask_secrets():
print(f'Setting up Twitter key & secret ...\n')
api_key = input("API Key: ")
api_key_secret = input("API Key Secret: ")
return (api_key, api_key_secret)
def get_db_params( parameter, file_path ):
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__':
config_filepath, replicator_db, replicator_db_user = get_config()
api_key, api_key_secret = ask_secrets()
save_error = save_secrets(api_key, api_key_secret)
if save_error == None:
print(f'Done.')
else:
if save_error == '423505':
sys.exit()