From d78c5dd64a896b5084b563d073045d067e2f42ba Mon Sep 17 00:00:00 2001 From: Marty Oehme Date: Tue, 21 Feb 2023 09:03:22 +0100 Subject: [PATCH] Move logic to main function --- papis-marvin | 135 ++++++++++++++++++++++++++++----------------------- 1 file changed, 73 insertions(+), 62 deletions(-) diff --git a/papis-marvin b/papis-marvin index 5e0af56..50c57e8 100755 --- a/papis-marvin +++ b/papis-marvin @@ -6,7 +6,6 @@ # annotations as 'csv' format and then point the script to the # resulting file. import sys -import csv import papis.api import papis.commands.list import papis.database @@ -14,75 +13,87 @@ import re import subprocess # use argument passed to command as file or default file here -fpath = ( - sys.argv[1] - if len(sys.argv) > 1 - else "/home/marty/Nextcloud/Personal/Backups/Journal.csv" -) -db = papis.database.get() -notes = {} -with open(fpath) as f: - csv = csv.DictReader(f) - title_strip_pattern = re.compile(r"([^\s\w]|_)+") - old_title = "" - note_file = "" - for row in csv: - title_stripped = title_strip_pattern.sub("", row["Title"]) +def format_entry(row) -> str: + text = f"> {row['HighlightText']}" + if row["EntryText"]: + if text: + text += "\n" + else: + text = "> " + text += f"{row['EntryText']}" + return text - # switch to next book - if old_title != row["Title"]: - old_title = row["Title"] - documents = db.query(f"author:({row['Author']}) title:({title_stripped})") - if not documents: - print( - f"No papis entry found for Marvin entry - {row['Author']}: {row['Title']}.\nPlease manually create." +def main(fpath, db): + notes = {} + with open(fpath) as f: + import csv + + csv = csv.DictReader(f) + + title_strip_pattern = re.compile(r"([^\s\w]|_)+") + old_title = "" + note_file = "" + for row in csv: + title_stripped = title_strip_pattern.sub("", row["Title"]) + + # switch to next book + if old_title != row["Title"]: + old_title = row["Title"] + + documents = db.query( + f"author:({row['Author']}) title:({title_stripped})" ) - continue - note_file = papis.commands.list.run(notes=True, documents=documents) - if not note_file: - print(f"Found reference entry but no note file for - {row['Author']}: {row['Title']}.") - if ( - input( - f"Create note file now? [y/N] " + if not documents: + print( + f"No papis entry found for Marvin entry - {row['Author']}: {row['Title']}.\nPlease manually create." ) - == "y" - ): - output = subprocess.run( - ["papis", "edit", "-n"], capture_output=True, shell=True + continue + note_file = papis.commands.list.run(notes=True, documents=documents) + if not note_file: + print( + f"Found reference entry but no note file for - {row['Author']}: {row['Title']}." ) - print(output) - # print("NOT IMPLEMENTED: Please create note file manually.") - continue - else: - continue - note_file = str(note_file[0]) + if input(f"Create note file now? [y/N] ") == "y": + output = subprocess.run( + ["papis", "edit", "-n"], capture_output=True, shell=True + ) + print(output) + # print("NOT IMPLEMENTED: Please create note file manually.") + continue + else: + continue + note_file = str(note_file[0]) - text = f"> {row['HighlightText']}" - if row["EntryText"]: - if text: - text += "\n" - else: - text = "> " - text += f"{row['EntryText']}" + text = format_entry(row) - if note_file and text: - if not note_file in notes.keys(): - notes[note_file] = [] - notes[note_file].append(text) + if note_file and text: + if not note_file in notes.keys(): + notes[note_file] = [] + notes[note_file].append(text) + + # write to notes + for f, entries in notes.items(): + if f: + with open(f, "a") as note: + print(f"Editing {f}...") + num_added = 0 + for entry in entries: + with open(f) as noteread: + if entry not in noteread.read(): + note.write(f"{entry}\n\n") + num_added += 1 + print(f"Added {num_added} entries to it.") -# write to notes -for f, entries in notes.items(): - if f: - with open(f, "a") as note: - print(f"Editing {f}...") - num_added = 0 - for entry in entries: - with open(f) as noteread: - if entry not in noteread.read(): - note.write(f"{entry}\n\n") - num_added += 1 - print(f"Added {num_added} entries to it.") +if __name__ == "__main__": + fpath = ( + sys.argv[1] + if len(sys.argv) > 1 + else "/home/marty/Nextcloud/Personal/Backups/Journal.csv" + ) + db = papis.database.get() + + main(fpath, db)