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()
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.