|
@@ -0,0 +1,54 @@
|
|
|
+#!/usr/bin/env python3
|
|
|
+from argparse import ArgumentParser
|
|
|
+import os
|
|
|
+from subprocess import Popen, PIPE
|
|
|
+from logging import getLogger
|
|
|
+
|
|
|
+FILTER_CMDLINE = ["peco"] # ["fzf"] is also fine
|
|
|
+BROWSER_CMDLINE = ["firefox"]
|
|
|
+
|
|
|
+logger = getLogger()
|
|
|
+
|
|
|
+
|
|
|
+def get_urls(folder: str):
|
|
|
+ fmt = "{Folder}\t{Tag}\t{Title}\t{Url}"
|
|
|
+ mxb_list = Popen(
|
|
|
+ ["mxb", "list", "--format", fmt, folder],
|
|
|
+ stdout=PIPE,
|
|
|
+ )
|
|
|
+ filter_cmd = Popen(FILTER_CMDLINE, stdin=mxb_list.stdout, stdout=PIPE)
|
|
|
+
|
|
|
+ logger.debug("running...")
|
|
|
+ output = filter_cmd.communicate()[0].decode("utf8")
|
|
|
+ logger.debug("got output!")
|
|
|
+ for line in output.split("\n"):
|
|
|
+ url = line.split("\t")[-1]
|
|
|
+ if url:
|
|
|
+ yield url
|
|
|
+
|
|
|
+
|
|
|
+def get_parser():
|
|
|
+ p = ArgumentParser()
|
|
|
+ p.add_argument("--folder", default="")
|
|
|
+ p.add_argument("--action", choices=["open", "echo"], default="open")
|
|
|
+ return p
|
|
|
+
|
|
|
+
|
|
|
+def main():
|
|
|
+ args = get_parser().parse_args()
|
|
|
+
|
|
|
+ urls = get_urls(args.folder)
|
|
|
+ logger.debug("URLs= %s", urls)
|
|
|
+ if not urls:
|
|
|
+ return
|
|
|
+
|
|
|
+ for u in urls:
|
|
|
+ if args.action == "open":
|
|
|
+ cmd = BROWSER_CMDLINE + [u]
|
|
|
+ Popen(cmd, preexec_fn=os.setpgrp)
|
|
|
+ elif args.action == "echo":
|
|
|
+ logger.debug(u)
|
|
|
+
|
|
|
+
|
|
|
+if __name__ == "__main__":
|
|
|
+ main()
|