diff --git a/igmirror.py b/igmirror.py index 5374c62..13efd71 100644 --- a/igmirror.py +++ b/igmirror.py @@ -55,11 +55,14 @@ def add_igaccount(acc_id): pixelfed_setpic(acc_id, data['graphql']['user']['profile_pic_url']) pixelfed_setinfo(acc_id, data['graphql']['user']['biography'],\ data['graphql']['user']['external_url']) - threading.Thread(target=pixelfed_dlposts, args=(acc_id, data['graphql']['user'])).start() + update_igaccount_async(acc_id) else: print('W| User "{}" already exists in local database'.format(acc_id)) return 0 +def update_igaccount_async(acc_id): + threading.Thread(target=update_igaccount, args=(acc_id)).start() + def update_igaccount(acc_id): # if account does not exist, we stop the mirroring process accfile = './db/accounts/{}'.format(acc_id) @@ -69,14 +72,18 @@ def update_igaccount(acc_id): # do it on a thread because it might take long to download the latest posts data = getig_user_data(acc_id) - threading.Thread(target=pixelfed_dlposts, args=(acc_id, data['graphql']['user'])).start() + pixelfed_dlposts(acc_id, data['graphql']['user']) + +def update_allaccounts_async(): + threading.Thread(target=update_allaccounts).start() def update_allaccounts(): # update all accounts with a timeout of 20 seconds for acc_id in os.listdir('./db/accounts'): print('I| mirroring account "{}"...'.format(acc_id)) update_igaccount(acc_id) - time.sleep(30) + print('I| timeout 20 seconds') + time.sleep(20) print() diff --git a/server.py b/server.py index 1616c31..3c12fc9 100644 --- a/server.py +++ b/server.py @@ -17,7 +17,7 @@ class MyServer(BaseHTTPRequestHandler): # a wilcard select all accounts if parts[0] == '*': if parts[1].lower() == 'update': - igmirror.update_allaccounts() + igmirror.update_allaccounts_async() else: # make sure account name contains only safe characters # i think IG usernames can only have this characters: @@ -25,7 +25,7 @@ class MyServer(BaseHTTPRequestHandler): if parts[1].lower() == 'add': igmirror.add_igaccount(accname) elif parts[1].lower() == 'update': - igmirror.update_igaccount(accname) + igmirror.update_igaccount_async(accname) self.wfile.write(bytes('{"status": "ok"}', "utf-8")) else: self.wfile.write(bytes('{"status": "parameters are not correct"}', "utf-8"))