import sys, subprocess, getpass, pycurl, urllib.parse if __name__ == "__main__": def api_upload(endpoint, dest_fmt = "/microblog/%s"): pages = [] with open("updatedfiles.txt") as f: pages = f.readlines() c = pycurl.Curl() c.setopt(c.URL, endpoint) c.setopt(c.POST, 1) for page in pages: p = page.strip('\n') #i = p.rfind('/') # folder = p[1:i] # file = p[i] destination = dest_fmt % p source = p print("sending @%s to %s" % (source, destination)) exists = True try: with open(source, 'r') as f: pass except FileNotFoundError as e: exists = False print(e) if (exists): c.setopt(c.HTTPPOST, [(destination, (c.FORM_FILE, source))]) try: c.perform() except pycurl.error as e: print(e) c.close() def main(): if len(sys.argv) < 2: print("Usage: neouploader.py [neocities username]") return try: pw = getpass.getpass(prompt="Password: ") except KeyboardInterrupt: print("Aborted.") return if len(pw) == 0: print("Empty input. Exiting.") return p = urllib.parse.quote(pw, safe='') target = "https://%s:%s@neocities.org/api/upload" % (sys.argv[1], p) del pw del p api_upload(target) del target main()