diff --git a/writing/.config/papis/scripts/papis-tags b/writing/.config/papis/scripts/papis-tags index 4803705..b847591 100755 --- a/writing/.config/papis/scripts/papis-tags +++ b/writing/.config/papis/scripts/papis-tags @@ -14,7 +14,10 @@ from papis.database.base import Database from papis.document import Document parser = argparse.ArgumentParser() -parser.add_argument("query", nargs="*", help="the query to search for") +parser.add_argument( + "--count", "-c", help="the query to search for", action="store_true" +) +parser.add_argument("query", nargs="*", help="the query to search for", default="*") args = parser.parse_args() @@ -22,7 +25,7 @@ def main(db: Database, args) -> None: query = " ".join(args.query) docs: list[Document] = db.query(query) - all_tags: set[str] = set() + all_tags: dict[str, int] = {} for doc in docs: t: list[str] | str = doc.get("tags", "") tags = ( @@ -30,10 +33,25 @@ def main(db: Database, args) -> None: ) for tag in tags: - all_tags.add(tag) + if tag == '': + continue + all_tags[tag] = all_tags.get(tag, 0) + 1 + if args.count: + print_tags_and_counts(all_tags) + else: + print_tags_only(all_tags) + +def print_tags_only(all_tags): for tag in sorted(all_tags): print(tag) +def print_tags_and_counts(all_tags): + for tag, count in sorted(all_tags.items(), key=lambda d: d[1], reverse=True): + if args.count: + print(tag, count) + else: + print(tag) + if __name__ == "__main__": main(database.get(), args)