46 lines
1.4 KiB
Python
46 lines
1.4 KiB
Python
|
import requests
|
||
|
import json
|
||
|
import os
|
||
|
from argparse import ArgumentParser, FileType
|
||
|
from generate_config import generate_config
|
||
|
|
||
|
parent = os.path.dirname(os.path.realpath(__file__))
|
||
|
|
||
|
# Initialize arguments
|
||
|
parser = ArgumentParser(description='Import follows from a csv file')
|
||
|
parser.add_argument('file',
|
||
|
type=open,
|
||
|
help='csv file containing users to follow',
|
||
|
)
|
||
|
args = parser.parse_args()
|
||
|
csv = args.file.read()
|
||
|
|
||
|
if not os.path.exists(os.path.join(parent, 'config.json')):
|
||
|
generate_config("Wardyn's feditools", "read write follow push")
|
||
|
with open(os.path.join(parent, 'config.json'), 'r') as config_file:
|
||
|
config = json.load(config_file)
|
||
|
|
||
|
session = requests.Session()
|
||
|
session.headers.update({"Authorization" : "Bearer " + config['user_token']})
|
||
|
|
||
|
|
||
|
acclist = csv.split('\n')
|
||
|
for account in acclist:
|
||
|
searchlist = session.get(config['instance'] + '/api/v2/search?', params={'q':account, 'type':'accounts'}).json()
|
||
|
searchlist = searchlist['accounts']
|
||
|
found = False
|
||
|
for user in searchlist:
|
||
|
if user['fqn'] == account:
|
||
|
account = user
|
||
|
found = True
|
||
|
break
|
||
|
if found == False:
|
||
|
print("Could not find user: " + account)
|
||
|
continue
|
||
|
relationship = account['pleroma']['relationship']
|
||
|
if relationship['following'] == True:
|
||
|
print('Already following: ' + account['fqn'])
|
||
|
continue
|
||
|
print("Following: " + account['fqn'])
|
||
|
session.post(config['instance'] + '/api/v1/accounts/' + account['id'] + '/follow')
|