From 787e0d28b4cd9d77d7948da80874d17942e9c330 Mon Sep 17 00:00:00 2001 From: Ivan Habunek Date: Fri, 29 Dec 2017 14:42:51 +0100 Subject: [PATCH] Move printing logic to output --- toot/commands.py | 52 +++++------------------------------------------- toot/output.py | 42 +++++++++++++++++++++++++++++++++++++- 2 files changed, 46 insertions(+), 48 deletions(-) diff --git a/toot/commands.py b/toot/commands.py index 95b08ce..3548434 100644 --- a/toot/commands.py +++ b/toot/commands.py @@ -8,10 +8,10 @@ from datetime import datetime from itertools import zip_longest from getpass import getpass from itertools import chain -from textwrap import TextWrapper, wrap +from textwrap import TextWrapper from toot import api, config, DEFAULT_INSTANCE, User, App, ConsoleError -from toot.output import print_out, print_instance +from toot.output import print_out, print_instance, print_account, print_search_results def register_app(instance): @@ -213,31 +213,9 @@ def upload(app, user, args): print_out("Text URL: {}".format(response['text_url'])) -def _print_accounts(accounts): - if not accounts: - return - - print_out("\nAccounts:") - for account in accounts: - print_out("* @{} {}".format( - account['acct'], - account['display_name'] - )) - - -def _print_hashtags(hashtags): - if not hashtags: - return - - print_out("\nHashtags:") - print_out(", ".join(["#{}".format(t) for t in hashtags])) - - def search(app, user, args): response = api.search(app, user, args.query, args.resolve) - - _print_accounts(response['accounts']) - _print_hashtags(response['hashtags']) + print_search_results(response) def _do_upload(app, user, file): @@ -265,26 +243,6 @@ def _find_account(app, user, account_name): raise ConsoleError("Account not found") -def _print_account(account): - print_out("@{} {}".format(account['acct'], account['display_name'])) - - note = BeautifulSoup(account['note'], "html.parser").get_text() - - if note: - print_out("") - print_out("\n".join(wrap(note))) - - print_out("") - print_out("ID: {}".format(account['id'])) - print_out("Since: {}".format(account['created_at'][:19].replace('T', ' @ '))) - print_out("") - print_out("Followers: {}".format(account['followers_count'])) - print_out("Following: {}".format(account['following_count'])) - print_out("Statuses: {}".format(account['statuses_count'])) - print_out("") - print_out(account['url']) - - def follow(app, user, args): account = _find_account(app, user, args.account) api.follow(app, user, account['id']) @@ -323,12 +281,12 @@ def unblock(app, user, args): def whoami(app, user, args): account = api.verify_credentials(app, user) - _print_account(account) + print_account(account) def whois(app, user, args): account = _find_account(app, user, args.account) - _print_account(account) + print_account(account) def instance(app, user, args): diff --git a/toot/output.py b/toot/output.py index 8ca0ff7..831c774 100644 --- a/toot/output.py +++ b/toot/output.py @@ -4,7 +4,7 @@ import sys import re from textwrap import wrap -from toot.utils import format_content +from toot.utils import format_content, get_text START_CODES = { 'red': '\033[31m', @@ -70,3 +70,43 @@ def print_instance(instance): for l in wrap(line.strip()): print(l) print() + + +def print_account(account): + print_out("@{} {}".format(account['acct'], account['display_name'])) + + note = get_text(account['note']) + + if note: + print_out("") + print_out("\n".join(wrap(note))) + + print_out("") + print_out("ID: {}".format(account['id'])) + print_out("Since: {}".format(account['created_at'][:19].replace('T', ' @ '))) + print_out("") + print_out("Followers: {}".format(account['followers_count'])) + print_out("Following: {}".format(account['following_count'])) + print_out("Statuses: {}".format(account['statuses_count'])) + print_out("") + print_out(account['url']) + + +def print_search_results(results): + accounts = results['accounts'] + hashtags = results['hashtags'] + + if accounts: + print_out("\nAccounts:") + for account in accounts: + print_out("* @{} {}".format( + account['acct'], + account['display_name'] + )) + + if hashtags: + print_out("\nHashtags:") + print_out(", ".join(["#{}".format(t) for t in hashtags])) + + if not accounts and not hashtags: + print_out("Nothing found")