include follower counts in masto api if permitted and not in broch mode

main
Bob Mottram 2023-10-02 13:11:30 +01:00
parent c0c5a3d86d
commit d4060eed22
1 changed files with 24 additions and 6 deletions

View File

@ -52,8 +52,20 @@ def get_nickname_from_masto_api_v1id(masto_id: int) -> str:
return nickname[::-1] return nickname[::-1]
def _lines_in_file(filename: str) -> int:
"""Returns the number of lines in a file
"""
if os.path.isfile(filename):
try:
with open(filename, 'r', encoding='utf-8') as fp_lines:
return len(fp_lines.read().split('\n'))
except OSError:
print('EX: _lines_in_file error reading ' + filename)
return 0
def _get_masto_api_v1account(base_dir: str, nickname: str, domain: str, def _get_masto_api_v1account(base_dir: str, nickname: str, domain: str,
show_accounts: bool) -> {}: show_accounts: bool, broch_mode: bool) -> {}:
"""See https://github.com/McKael/mastodon-documentation/ """See https://github.com/McKael/mastodon-documentation/
blob/master/Using-the-API/API.md#account blob/master/Using-the-API/API.md#account
Authorization has already been performed Authorization has already been performed
@ -82,7 +94,11 @@ def _get_masto_api_v1account(base_dir: str, nickname: str, domain: str,
if account_json['type'] == 'Group': if account_json['type'] == 'Group':
group = True group = True
no_of_statuses = 0 no_of_statuses = 0
if show_accounts: no_of_followers = 0
no_of_following = 0
if show_accounts and not broch_mode:
no_of_followers = _lines_in_file(account_dir + '/followers.txt')
no_of_following = _lines_in_file(account_dir + '/following.txt')
# count the number of posts # count the number of posts
for _, _, files2 in os.walk(account_dir + '/outbox'): for _, _, files2 in os.walk(account_dir + '/outbox'):
no_of_statuses = len(files2) no_of_statuses = len(files2)
@ -94,8 +110,8 @@ def _get_masto_api_v1account(base_dir: str, nickname: str, domain: str,
"display_name": account_json['name'], "display_name": account_json['name'],
"locked": account_json['manuallyApprovesFollowers'], "locked": account_json['manuallyApprovesFollowers'],
"created_at": joined_date, "created_at": joined_date,
"followers_count": 0, "followers_count": no_of_followers,
"following_count": 0, "following_count": no_of_following,
"statuses_count": no_of_statuses, "statuses_count": no_of_statuses,
"note": account_json['summary'], "note": account_json['summary'],
"url": account_json['id'], "url": account_json['id'],
@ -138,7 +154,8 @@ def masto_api_v1_response(path: str, calling_domain: str,
if path == '/api/v1/accounts/verify_credentials': if path == '/api/v1/accounts/verify_credentials':
send_json = \ send_json = \
_get_masto_api_v1account(base_dir, nickname, domain, _get_masto_api_v1account(base_dir, nickname, domain,
show_node_info_accounts) show_node_info_accounts,
broch_mode)
send_json_str = \ send_json_str = \
'masto API account sent for ' + nickname + ' ' + ua_str 'masto API account sent for ' + nickname + ' ' + ua_str
@ -193,7 +210,8 @@ def masto_api_v1_response(path: str, calling_domain: str,
else: else:
send_json = \ send_json = \
_get_masto_api_v1account(base_dir, path_nickname, domain, _get_masto_api_v1account(base_dir, path_nickname, domain,
show_node_info_accounts) show_node_info_accounts,
broch_mode)
send_json_str = \ send_json_str = \
'masto API account sent for ' + nickname + \ 'masto API account sent for ' + nickname + \
calling_info calling_info