From 28835204f5830e3aaade85852c5d3c67be1f2d16 Mon Sep 17 00:00:00 2001 From: Soxoj Date: Sat, 15 May 2021 16:55:05 +0300 Subject: [PATCH] Added text report to CLI output --- maigret/maigret.py | 7 +++++++ maigret/notify.py | 13 ++++++++++--- maigret/report.py | 12 ++++++++++++ tests/test_report.py | 11 +++++++++++ 4 files changed, 40 insertions(+), 3 deletions(-) diff --git a/maigret/maigret.py b/maigret/maigret.py index 2ad6d41..df4be6e 100755 --- a/maigret/maigret.py +++ b/maigret/maigret.py @@ -32,6 +32,7 @@ from .report import ( save_txt_report, SUPPORTED_JSON_REPORT_FORMATS, save_json_report, + get_plaintext_report, ) from .sites import MaigretDatabase from .submit import submit_dialog @@ -646,6 +647,12 @@ async def main(): filename = report_filepath_tpl.format(username=username, postfix='.pdf') save_pdf_report(filename, report_context) query_notify.warning(f'PDF report on all usernames saved in {filename}') + + text_report = get_plaintext_report(report_context) + if text_report: + query_notify.info('Short text report:') + print(text_report) + # update database db.save_to_file(args.db_file) diff --git a/maigret/notify.py b/maigret/notify.py index a6d8292..be86946 100644 --- a/maigret/notify.py +++ b/maigret/notify.py @@ -205,13 +205,20 @@ class QueryNotifyPrint(QueryNotify): else: print(f"[*] {title} {message} on:") - def warning(self, message, symbol="-"): - msg = f"[{symbol}] {message}" + def _colored_print(self, fore_color, msg): if self.color: - print(Style.BRIGHT + Fore.YELLOW + msg) + print(Style.BRIGHT + fore_color + msg) else: print(msg) + def warning(self, message, symbol="-"): + msg = f"[{symbol}] {message}" + self._colored_print(Fore.YELLOW, msg) + + def info(self, message, symbol="*"): + msg = f"[{symbol}] {message}" + self._colored_print(Fore.BLUE, msg) + def update(self, result, is_similar=False): """Notify Update. diff --git a/maigret/report.py b/maigret/report.py index c3d20a9..9727634 100644 --- a/maigret/report.py +++ b/maigret/report.py @@ -70,6 +70,17 @@ def save_json_report(filename: str, username: str, results: dict, report_type: s generate_json_report(username, results, f, report_type=report_type) +def get_plaintext_report(context: dict) -> str: + output = (context['brief'] + " ").replace('. ', '.\n') + interests = list(map(lambda x: x[0], context.get('interests_tuple_list', []))) + countries = list(map(lambda x: x[0], context.get('countries_tuple_list', []))) + if countries: + output += f'Countries: {", ".join(countries)}\n' + if interests: + output += f'Interests (tags): {", ".join(interests)}\n' + return output.strip() + + """ REPORTS GENERATING """ @@ -215,6 +226,7 @@ def generate_report_context(username_results: list): return { "username": first_username, + # TODO: return brief list "brief": brief, "results": username_results, "first_seen": first_seen, diff --git a/tests/test_report.py b/tests/test_report.py index bfda93f..b4f12b8 100644 --- a/tests/test_report.py +++ b/tests/test_report.py @@ -16,6 +16,7 @@ from maigret.report import ( generate_report_template, generate_report_context, generate_json_report, + get_plaintext_report, ) from maigret.result import QueryResult, QueryStatus from maigret.sites import MaigretSite @@ -346,3 +347,13 @@ def test_pdf_report(): save_pdf_report(report_name, context) assert os.path.exists(report_name) + + +def test_text_report(): + context = generate_report_context(TEST) + report_text = get_plaintext_report(context) + + for brief_part in SUPPOSED_BRIEF.split(): + assert brief_part in report_text + assert 'us' in report_text + assert 'photo' in report_text