I want to be able to call this script with a single id, a list of ids, a url, or a csv file.

Is there a simple way to express it? Here I’ve only added options to call the script with nothing, a single id or a list of ids. But it already looks too messy for my taste.

def parse_args():
    try:
        if len(sys.argv) == 3:
            # List
            if sys.argv[2].startswith("[") and sys.argv[2].endswith("]"):
                work_ids = sys.argv[2].strip("[").strip("]").split(",")
                download_ao3_fics_and_import_tags(work_ids)
            else: # single work_id
                download_ao3_fic_and_import_tags(sys.argv[2])
        elif len(sys.argv) != 3:
            main()
        else:
            usage()
    except Exception:
        usage()
  • pancake@lemmy.ml
    link
    fedilink
    arrow-up
    2
    arrow-down
    1
    ·
    2 years ago

    I’d use regex myself, but I doubt it would make the code much cleaner, maybe slightly shorter…

    • zergling_man@lemmy.perthchat.org
      link
      fedilink
      arrow-up
      1
      ·
      2 years ago

      This is exactly what I was getting at. It would actually be a lot cleaner, because capture; pull them all out to a list and iterate (or just shove it where it needs to go). If it’s empty it’ll fix itself shortly.