123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172 |
- import sys, os, subprocess, getpass, pycurl, urllib.parse
- if __name__ == "__main__":
- def get_proxy():
- proxy = ""
- if "http_proxy" in os.environ:
- proxy = os.environ["http_proxy"]
- elif "https_proxy" in os.environ:
- proxy = os.environ["https_proxy"]
- host = proxy[proxy.rfind('/') + 1: proxy.rfind(':')]
- port = proxy[proxy.rfind(':') + 1:]
- foo = proxy.find("socks://") >= 0 or proxy.find("socks5h://")
- return host, int(port), foo
- def api_upload(endpoint, dest_fmt = "/microblog/%s"):
- pages = []
- with open("updatedfiles.txt") as f:
- pages = f.readlines()
- c = pycurl.Curl()
- if "http_proxy" in os.environ or "https_proxy" in os.environ:
- hostname, port_no, is_socks = get_proxy()
- c.setopt(pycurl.PROXY, hostname)
- c.setopt(pycurl.PROXYPORT, port_no)
- if is_socks:
- c.setopt(pycurl.PROXYTYPE, pycurl.PROXYTYPE_SOCKS5_HOSTNAME)
- 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()
|