diff --git a/libpurple_to_markdown/__main__.py b/libpurple_to_markdown/__main__.py index c4ac203..4c6630d 100644 --- a/libpurple_to_markdown/__main__.py +++ b/libpurple_to_markdown/__main__.py @@ -1,13 +1,23 @@ import argparse import logging from pathlib import Path +import logging -from . import format_messages, merge_adjacent_messages, parse_messages_in_chat_folder +from . import (format_messages, merge_adjacent_messages, parse_messages_in_chat_folder, Message) +logger = logging.getLogger(__name__) + +def group_messages_by_year(messages: list[Message]) -> dict[int, list[Message]]: + by_year = {} + for msg in messages: + by_year.setdefault(msg.sent_at.year, []).append(msg) + del msg + return by_year def parse_args(): parser = argparse.ArgumentParser() parser.add_argument('path', type=Path) + parser.add_argument('--output', type=Path) return parser.parse_args() @@ -16,9 +26,21 @@ def main(): logging.getLogger().setLevel('INFO') args = parse_args() - messages = parse_messages_in_chat_folder(args.path) - messages = merge_adjacent_messages(messages) - print(format_messages(messages)) + server = args.path.parent.name + receipient = args.path.name + + all_messages = parse_messages_in_chat_folder(args.path) + all_messages = merge_adjacent_messages(all_messages) + + messages_by_year = group_messages_by_year(all_messages) + + for year, messages in messages_by_year.items(): + output_file = args.output / f'{server} - {receipient} - {year}.md' + logger.info("Writing to %s", output_file) + with open(output_file, 'w') as f: + f.write(format_messages(messages)) + + del year, messages, output_file if __name__ == '__main__':