Introduction
Introduction Statistics Contact Development Disclaimer Help
output.py - toot - Unnamed repository; edit this file 'description' to name the…
Log
Files
Refs
LICENSE
---
output.py (2949B)
---
1 # -*- coding: utf-8 -*-
2
3 import sys
4 import re
5
6 from textwrap import wrap
7 from toot.utils import format_content, get_text
8
9 START_CODES = {
10 'red': '\033[31m',
11 'green': '\033[32m',
12 'yellow': '\033[33m',
13 'blue': '\033[34m',
14 'magenta': '\033[35m',
15 'cyan': '\033[36m',
16 }
17
18 END_CODE = '\033[0m'
19
20 START_PATTERN = "<(" + "|".join(START_CODES.keys()) + ")>"
21
22 END_PATTERN = "</(" + "|".join(START_CODES.keys()) + ")>"
23
24
25 def start_code(match):
26 name = match.group(1)
27 return START_CODES[name]
28
29
30 def colorize(text):
31 text = re.sub(START_PATTERN, start_code, text)
32 text = re.sub(END_PATTERN, END_CODE, text)
33
34 return text
35
36
37 def strip_tags(text):
38 text = re.sub(START_PATTERN, '', text)
39 text = re.sub(END_PATTERN, '', text)
40
41 return text
42
43
44 USE_ANSI_COLOR = "--no-color" not in sys.argv
45
46
47 def print_out(*args, **kwargs):
48 args = [colorize(a) if USE_ANSI_COLOR else strip_tags(a) for a in ar…
49 print(*args, **kwargs)
50
51
52 def print_err(*args, **kwargs):
53 args = ["<red>{}</red>".format(a) for a in args]
54 args = [colorize(a) if USE_ANSI_COLOR else strip_tags(a) for a in ar…
55 print(*args, file=sys.stderr, **kwargs)
56
57
58 def print_instance(instance):
59 print_out("<green>{}</green>".format(instance['title']))
60 print_out("<blue>{}</blue>".format(instance['uri']))
61 print_out("running Mastodon {}".format(instance['version']))
62 print_out("")
63
64 description = instance['description'].strip()
65 if not description:
66 return
67
68 lines = [line.strip() for line in format_content(description) if lin…
69 for line in lines:
70 for l in wrap(line.strip()):
71 print(l)
72 print()
73
74
75 def print_account(account):
76 print_out("<green>@{}</green> {}".format(account['acct'], account['d…
77
78 note = get_text(account['note'])
79
80 if note:
81 print_out("")
82 print_out("\n".join(wrap(note)))
83
84 print_out("")
85 print_out("ID: <green>{}</green>".format(account['id']))
86 print_out("Since: <green>{}</green>".format(account['created_at'][:1…
87 print_out("")
88 print_out("Followers: <yellow>{}</yellow>".format(account['followers…
89 print_out("Following: <yellow>{}</yellow>".format(account['following…
90 print_out("Statuses: <yellow>{}</yellow>".format(account['statuses_c…
91 print_out("")
92 print_out(account['url'])
93
94
95 def print_search_results(results):
96 accounts = results['accounts']
97 hashtags = results['hashtags']
98
99 if accounts:
100 print_out("\nAccounts:")
101 for account in accounts:
102 print_out("* <green>@{}</green> {}".format(
103 account['acct'],
104 account['display_name']
105 ))
106
107 if hashtags:
108 print_out("\nHashtags:")
109 print_out(", ".join(["<green>#{}</green>".format(t) for t in has…
110
111 if not accounts and not hashtags:
112 print_out("<yellow>Nothing found</yellow>")
You are viewing proxied material from vernunftzentrum.de. The copyright of proxied material belongs to its original authors. Any comments or complaints in relation to proxied material should be directed to the original authors of the content concerned. Please see the disclaimer for more details.