def create_session(opts): ''' Given a collection of options, attempt to recreate the pyacd session. :param opts: The authentication options :returns: An authenticated session ''' session = None # attempt to load a previous session if opts.session: try: logger.debug("loading session from(%s)", opts.sesssion) session = pyacd.Session.load_from_file(opts.session) except: session = pyacd.Session() # attempt to login with the supplied session information try: if opts.email and opts.password and session: logger.debug("creating session with email(%s)", opts.email) session = pyacd.login(opts.email, opts.password, session=session) elif opts.email and opts.password: logger.debug("creating session with email(%s)", opts.email) session = pyacd.login(opts.email, opts.password) else: logger.debug("creating session with session(%s)", opts.session) session = pyacd.login(session=session) except Exception, ex: logger.exception("error creating user session") session = None
def testLogin(self): global session session=pyacd.login(email,password) self.assertTrue(session.is_valid(),"invalid session %s"%session) self.assertTrue(session.is_logined(),"not logined %s"%session) self.assertNotEqual(session.username,None,"username is None %s"%session) self.assertNotEqual(session.customer_id,None,"customer_id is None %s"%session)
def test_1_LoginWithEmailAndPassword(self): session=pyacd.login(email,password) self.assertTrue(session.is_logged_in(),"not logined %s"%session) self.assertNotEqual(session.username,None,"username is None %s"%session) self.assertNotEqual(session.customer_id,None,"customer_id is None %s"%session) session.__str__() session.__repr__() session.save_to_file(acdsession)
def testLogin(self): global session session = pyacd.login(email, password) self.assertTrue(session.is_logged_in(), "not logined %s" % session) self.assertNotEqual(session.username, None, "username is None %s" % session) self.assertNotEqual(session.customer_id, None, "customer_id is None %s" % session)
def test_2_LoginWithAcdSession(self): session = pyacd.Session.load_from_file(acdsession) session.__str__() session.__repr__() session = pyacd.login(session=session) self.assertTrue(session.is_logged_in(),"not logined %s"%session) self.assertNotEqual(session.username,None,"username is None %s"%session) self.assertNotEqual(session.customer_id,None,"customer_id is None %s"%session) session.__str__() session.__repr__() session.save_to_file(acdsession)
def main(): opts, args = parser.parse_args(sys.argv[1:]) pyacd.set_amazon_domain(opts.domain) for m in ["email", "session"]: if not opts.__dict__[m]: print >>sys.stderr, "mandatory option is missing (%s)\n" % m parser.print_help() exit(2) if not opts.password: opts.password = getpass.getpass() if os.path.isdir(opts.session): print >>sys.stderr, "%s should not be directory." % s exit(2) if opts.verbose: print >>sys.stderr, "Loading previous session...", try: s = pyacd.Session.load_from_file(opts.session) if opts.verbose: print >>sys.stderr, "Done." except: s = pyacd.Session() if opts.verbose: print >>sys.stderr, "Failed." if opts.verbose: print >>sys.stderr, "Logging into %s..." % opts.domain, try: session = pyacd.login(opts.email, opts.password, session=s) if opts.verbose: print >>sys.stderr, "Done." if opts.verbose: print >>sys.stderr, "Updating current session...", session.save_to_file(opts.session) if opts.verbose: print >>sys.stderr, "Done." except: if opts.verbose: print >>sys.stderr, "Failed."
def test_3_LoginWithNoneEmail(self): try: session=pyacd.login(None,password) except TypeError,e: pass
def main(): opts,args=parser.parse_args(sys.argv[1:]) pyacd.set_amazon_domain(opts.domain) args=list(set(args)) if "-" in args: args.remove("-") args += [x.strip() for x in sys.stdin.readlines()] if 0==len(args): sys.stderr.write("No path selected.\n") parser.print_help() sys.exit(2) else: pass # Check options of authentication if opts.email: if not opts.password: opts.password = getpass.getpass() if (opts.email and opts.password) or opts.session: pass # OK case else: print >>sys.stderr, "Either email and password or session is mondatory." sys.exit(2) session = None; s = None if opts.session: if opts.verbose: print >>sys.stderr, "Loading previous session...", try: s=pyacd.Session.load_from_file(opts.session) if opts.verbose: print >>sys.stderr, "Done." except: s=pyacd.Session() if opts.verbose: print >>sys.stderr, "Failed." if opts.verbose: print >>sys.stderr, "Logging into %s..."%opts.domain, try: if opts.email and opts.password and s: session=pyacd.login(opts.email,opts.password,session=s) elif opts.email and opts.password: session=pyacd.login(opts.email,opts.password) else: session=pyacd.login(session=s) if opts.verbose: print >>sys.stderr, "Done." except: if opts.verbose: print >>sys.stderr, "Failed." sys.exit(2) # Check login status if not session: sys.stderr.write("Unexpected error occured.\n") sys.exit(2) elif not session.is_logged_in(): sys.stderr.write("Login failed.\n%s\n"%session) sys.exit(2) for path in args: if path[0]!='/':path='/'+path if opts.verbose: sys.stderr.write("Moving %s to Recycle ... "%(path)) # get path try: pathobj = pyacd.api.get_info_by_path(path) except pyacd.PyAmazonCloudDriveApiException,e: sys.stderr.write("Aborted. ('%s')\n"%e.message) continue except pyacd.PyAmazonCloudDriveError,e: sys.stderr.write("Not found.\n") continue
def main(): opts, args = parser.parse_args(sys.argv[1:]) # Check options of authentication if opts.session and os.path.exists( opts.session) and not os.path.isdir(opts.session): pass elif not opts.email or not opts.password: sys.stderr.write("!! email and password are required !!\n") parser.print_help() sys.exit(2) args = list(set(args)) if "-" in args: args.remove("-") args += [x.strip() for x in sys.stdin.readlines()] if 0 == len(args): sys.stderr.write("!! no path selected !!\n") parser.print_help() sys.exit(2) else: pass # Login to Amazon.com session = None try: if not opts.quiet: sys.stderr.write("Logining to Amazon.com ... ") if opts.email and opts.password: session = pyacd.login(opts.email, opts.password) else: fp = open(opts.session, "rb") session = pickle.load(fp) fp.close() session = pyacd.login(session=session) except: pass # Check login status if not session: sys.stderr.write("Unexpected error occured.\n") sys.exit(2) elif not session.is_valid(): sys.stderr.write("Session is invalid.\n%s\n" % session) sys.exit(2) elif not session.is_logined(): sys.stderr.write("Login failed.\n%s\n" % session) sys.exit(2) if not opts.quiet: sys.stderr.write("Done\n") if opts.session: if not opts.quiet: sys.stderr.write("Updating %s ... " % opts.session) fp = open(opts.session, "wb") fp.truncate() pickle.dump(session, fp) fp.close() if not opts.quiet: sys.stderr.write("Done\n") for path in args: if path[0] != '/': path = '/' + path if not opts.quiet: sys.stderr.write("Moving %s to Recycle ... " % (path)) # get path if opts.verbose: sys.stderr.write("get ") try: pathobj = pyacd.api.get_info_by_path(path) except pyacd.PyAmazonCloudDriveApiException, e: sys.stderr.write("Aborted. ('%s')\n" % e.message) continue if opts.verbose: sys.stderr.write("-> ") if pathobj.Type != pyacd.types.FILE and pathobj.Type != pyacd.types.FOLDER: sys.stderr.write("Aborted. ('%s<%s>' is special entity.)" % (path, pathobj.Type)) continue # move if opts.verbose: sys.stderr.write("move ") pyacd.api.recycle_bulk_by_id([ pathobj.object_id, ]) if opts.verbose: sys.stderr.write("-> ") if not opts.quiet: sys.stderr.write("Done\n")
def main(): opts,args=parser.parse_args(sys.argv[1:]) # Check options of authentication if opts.session and os.path.exists(opts.session) and not os.path.isdir(opts.session): pass elif not opts.email or not opts.password: sys.stderr.write("!! email and password are required !!\n") parser.print_help() sys.exit(2) args=list(set(args)) if "-" in args: args.remove("-") args += [x.strip() for x in sys.stdin.readlines()] if 0==len(args): sys.stderr.write("!! no file selected !!\n") parser.print_help() sys.exit(2) else: for file in args: if not os.path.exists(file): sys.stderr.write('Not found "%s"\n'%file) sys.exit(2) elif os.path.isdir(file): sys.stderr.write('"%s" is not file\n'%file) sys.exit(2) # Login to Amazon.com session=None try: if not opts.quiet: sys.stderr.write("Logining to Amazon.com ... ") if opts.email and opts.password: session=pyacd.login(opts.email,opts.password) else: fp=open(opts.session,"rb") session=pickle.load(fp) fp.close() session=pyacd.login(session=session) except: pass # Check login status if not session: sys.stderr.write("Unexpected error occured.\n") sys.exit(2) elif not session.is_valid(): sys.stderr.write("Session is invalid.\n%s\n"%session) sys.exit(2) elif not session.is_logined(): sys.stderr.write("Login failed.\n%s\n"%session) sys.exit(2) if not opts.quiet: sys.stderr.write("Done\n") if opts.session: if not opts.quiet: sys.stderr.write("Updating %s ... "%opts.session) fp=open(opts.session,"wb") fp.truncate() pickle.dump(session,fp) fp.close() if not opts.quiet: sys.stderr.write("Done\n") # Check destination path=opts.path if path[0]!='/':path='/'+path if path[-1]!='/':path=path+'/' try: dest = pyacd.api.get_info_by_path(path) if dest.Type == pyacd.types.FILE: sys.stderr.write('"%s" is file\n'%path) sys.exit(2) except pyacd.PyAmazonCloudDriveApiException,e: sys.stderr.write('"%s"\n'%e.message) sys.exit(2)
def main(): opts, args = parser.parse_args(sys.argv[1:]) # Check options of authentication if opts.session and os.path.exists( opts.session) and not os.path.isdir(opts.session): pass elif not opts.email or not opts.password: sys.stderr.write("!! email and password are required !!\n") parser.print_help() sys.exit(2) args = list(set(args)) if "-" in args: args.remove("-") args += [x.strip() for x in sys.stdin.readlines()] if 0 == len(args): args.append("/") else: pass # Login to Amazon.com session = None try: if not opts.quiet: sys.stderr.write("Logining to Amazon.com ... ") if opts.email and opts.password: session = pyacd.login(opts.email, opts.password) else: fp = open(opts.session, "rb") session = pickle.load(fp) fp.close() session = pyacd.login(session=session) except: pass # Check login status if not session: sys.stderr.write("Unexpected error occured.\n") sys.exit(2) elif not session.is_valid(): sys.stderr.write("Session is invalid.\n%s\n" % session) sys.exit(2) elif not session.is_logined(): sys.stderr.write("Login failed.\n%s\n" % session) sys.exit(2) if not opts.quiet: sys.stderr.write("Done\n") if opts.session: if not opts.quiet: sys.stderr.write("Updating %s ... " % opts.session) fp = open(opts.session, "wb") fp.truncate() pickle.dump(session, fp) fp.close() if not opts.quiet: sys.stderr.write("Done\n") for path in args: if path[0] != '/': path = '/' + path if not opts.quiet: sys.stderr.write("Listing %s ... " % (path)) # get path if opts.verbose: sys.stderr.write("get ") try: pathobj = pyacd.api.get_info_by_path(path) except pyacd.PyAmazonCloudDriveApiException, e: sys.stderr.write("Aborted. ('%s')\n" % e.message) continue if opts.verbose: sys.stderr.write("-> ") obj = [] if pathobj.Type == pyacd.types.FILE: obj.append(pathobj) else: if opts.verbose: sys.stderr.write("info ") info = pyacd.api.list_by_id(pathobj.object_id) if opts.verbose: sys.stderr.write("-> ") obj += info.objects if not opts.quiet: sys.stderr.write("Done\n") #print obj if opts.long_format: print "total %s (%s)" % (len(obj), path) print "==modified========== ==size/type== ==version== ==name==========" for o in obj: if opts.list_type != "ALL" and opts.list_type != o.Type: continue if opts.long_format: print "%s " % datetime.datetime( *time.localtime(o.modified)[:-3]).isoformat(), if o.Type == pyacd.types.FILE: print "%13s" % (o.size if o.size else -1), else: print "%13s" % ("<" + o.Type + ">"), print "%11s" % ("(" + str(o.version) + ")"), print o.name if o.Type == pyacd.types.FILE else o.name + "/" continue
def main(): opts, args = parser.parse_args(sys.argv[1:]) # Check options of authentication if opts.session and os.path.exists( opts.session) and not os.path.isdir(opts.session): pass elif not opts.email or not opts.password: sys.stderr.write("!! email and password are required !!\n") parser.print_help() sys.exit(2) args = list(set(args)) if "-" in args: args.remove("-") args += [x.strip() for x in sys.stdin.readlines()] if 0 == len(args): sys.stderr.write("!! no dir selected !!\n") parser.print_help() sys.exit(2) else: pass # Login to Amazon.com session = None try: if not opts.quiet: sys.stderr.write("Logining to Amazon.com ... ") if opts.email and opts.password: session = pyacd.login(opts.email, opts.password) else: fp = open(opts.session, "rb") session = pickle.load(fp) fp.close() session = pyacd.login(session=session) except: pass # Check login status if not session: sys.stderr.write("Unexpected error occured.\n") sys.exit(2) elif not session.is_valid(): sys.stderr.write("Session is invalid.\n%s\n" % session) sys.exit(2) elif not session.is_logined(): sys.stderr.write("Login failed.\n%s\n" % session) sys.exit(2) if not opts.quiet: sys.stderr.write("Done\n") if opts.session: if not opts.quiet: sys.stderr.write("Updating %s ... " % opts.session) fp = open(opts.session, "wb") fp.truncate() pickle.dump(session, fp) fp.close() if not opts.quiet: sys.stderr.write("Done\n") for path in args: if path[0] != '/': path = '/' + path folder = path.split("/")[-1] parent = "/".join(path.split("/")[:-1]) parent = parent if len(parent) != 0 else "/" if not opts.quiet: sys.stderr.write("Making %s in %s ... " % (folder, parent)) # create folder if opts.verbose: sys.stderr.write("create ") try: pyacd.api.create_by_path(parent, folder, Type=pyacd.types.FOLDER) except pyacd.PyAmazonCloudDriveApiException, e: sys.stderr.write("Aborted. ('%s')\n" % e.message) continue if opts.verbose: sys.stderr.write("-> ") if not opts.quiet: sys.stderr.write("Done\n")
def main(): opts,args=parser.parse_args(sys.argv[1:]) pyacd.set_amazon_domain(opts.domain) args=list(set(args)) if "-" in args: args.remove("-") args += [x.strip() for x in sys.stdin.readlines()] if 0==len(args): sys.stderr.write("No dir selected.\n") parser.print_help() sys.exit(2) else: pass # Check options of authentication if opts.email: if not opts.password: opts.password = getpass.getpass() if (opts.email and opts.password) or opts.session: pass # OK case else: print >>sys.stderr, "Either email and password or session is mondatory." sys.exit(2) session = None; s = None if opts.session: if opts.verbose: print >>sys.stderr, "Loading previous session...", try: s=pyacd.Session.load_from_file(opts.session) if opts.verbose: print >>sys.stderr, "Done." except: s=pyacd.Session() if opts.verbose: print >>sys.stderr, "Failed." if opts.verbose: print >>sys.stderr, "Logging into %s..."%opts.domain, try: if opts.email and opts.password and s: session=pyacd.login(opts.email,opts.password,session=s) elif opts.email and opts.password: session=pyacd.login(opts.email,opts.password) else: session=pyacd.login(session=s) if opts.verbose: print >>sys.stderr, "Done." except: if opts.verbose: print >>sys.stderr, "Failed." sys.exit(2) # Check login status if not session: sys.stderr.write("Unexpected error occured.\n") sys.exit(2) elif not session.is_logged_in(): sys.stderr.write("Login failed.\n%s\n"%session) sys.exit(2) for path in args: if path[0]!='/':path='/'+path folder = path.split("/")[-1] parent = "/".join(path.split("/")[:-1]) parent = parent if len(parent)!=0 else "/" if opts.verbose: sys.stderr.write("Making %s in %s ... "%(folder,parent)) # create folder try: pyacd.api.create_by_path(parent,folder,Type=pyacd.types.FOLDER) except pyacd.PyAmazonCloudDriveApiException,e: sys.stderr.write("Aborted.\n"%e.message) continue except pyacd.PyAmazonCloudDriveError,e: sys.stderr.write("Already exists.\n") continue
def test_4_LoginWithNonePassword(self): try: session=pyacd.login(email,None) except TypeError,e: pass
def main(): opts,args=parser.parse_args(sys.argv[1:]) pyacd.set_amazon_domain(opts.domain) args=list(set(args)) if "-" in args: args.remove("-") args += [x.strip() for x in sys.stdin.readlines()] if 0==len(args): sys.stderr.write("No file selected.\n") parser.print_help() sys.exit(2) else: for file in args: if not os.path.exists(file): sys.stderr.write('Not found "%s"\n'%file) sys.exit(2) elif os.path.isdir(file): sys.stderr.write('"%s" is not file\n'%file) sys.exit(2) # Check options of authentication if opts.email: if not opts.password: opts.password = getpass.getpass() if (opts.email and opts.password) or opts.session: pass # OK case else: print >>sys.stderr, "Either email and password or session is mondatory." sys.exit(2) session = None; s = None if opts.session: if opts.verbose: print >>sys.stderr, "Loading previous session...", try: s=pyacd.Session.load_from_file(opts.session) if opts.verbose: print >>sys.stderr, "Done." except: s=pyacd.Session() if opts.verbose: print >>sys.stderr, "Failed." if opts.verbose: print >>sys.stderr, "Logging into %s..."%opts.domain, try: if opts.email and opts.password and s: session=pyacd.login(opts.email,opts.password,session=s) elif opts.email and opts.password: session=pyacd.login(opts.email,opts.password) else: session=pyacd.login(session=s) if opts.verbose: print >>sys.stderr, "Done." except: if opts.verbose: print >>sys.stderr, "Failed." sys.exit(2) # Check login status if not session: sys.stderr.write("Unexpected error occured.\n") sys.exit(2) elif not session.is_logged_in(): sys.stderr.write("Login failed.\n%s\n"%session) sys.exit(2) # Check destination path=opts.path if path[0]!='/':path='/'+path if path[-1]!='/':path=path+'/' try: dest = pyacd.api.get_info_by_path(path) if dest.Type == pyacd.types.FILE: sys.stderr.write('"%s" is file\n'%path) sys.exit(2) except pyacd.PyAmazonCloudDriveApiException,e: sys.stderr.write('"%s"\n'%e.reason) sys.exit(2)
def test_5_LoginWithNoneArgs(self): try: session=pyacd.login(None,None,None) except TypeError,e: pass
def main(): opts,args=parser.parse_args(sys.argv[1:]) # Check options of authentication if opts.session and os.path.exists(opts.session) and not os.path.isdir(opts.session): pass elif not opts.email or not opts.password: sys.stderr.write("!! email and password are required !!\n") parser.print_help() sys.exit(2) args=list(set(args)) if "-" in args: args.remove("-") args += [x.strip() for x in sys.stdin.readlines()] if 0==len(args): args.append("/") else: pass # Login to Amazon.com session=None try: if not opts.quiet: sys.stderr.write("Logining to Amazon.com ... ") if opts.email and opts.password: session=pyacd.login(opts.email,opts.password) else: fp=open(opts.session,"rb") session=pickle.load(fp) fp.close() session=pyacd.login(session=session) except: pass # Check login status if not session: sys.stderr.write("Unexpected error occured.\n") sys.exit(2) elif not session.is_valid(): sys.stderr.write("Session is invalid.\n%s\n"%session) sys.exit(2) elif not session.is_logined(): sys.stderr.write("Login failed.\n%s\n"%session) sys.exit(2) if not opts.quiet: sys.stderr.write("Done\n") if opts.session: if not opts.quiet: sys.stderr.write("Updating %s ... "%opts.session) fp=open(opts.session,"wb") fp.truncate() pickle.dump(session,fp) fp.close() if not opts.quiet: sys.stderr.write("Done\n") for path in args: if path[0]!='/':path='/'+path if not opts.quiet: sys.stderr.write("Listing %s ... "%(path)) # get path if opts.verbose: sys.stderr.write("get ") try: pathobj = pyacd.api.get_info_by_path(path) except pyacd.PyAmazonCloudDriveApiException,e: sys.stderr.write("Aborted. ('%s')\n"%e.message) continue if opts.verbose: sys.stderr.write("-> ") obj=[] if pathobj.Type== pyacd.types.FILE: obj.append(pathobj) else: if opts.verbose: sys.stderr.write("info ") info = pyacd.api.list_by_id(pathobj.object_id) if opts.verbose: sys.stderr.write("-> ") obj+=info.objects if not opts.quiet: sys.stderr.write("Done\n") #print obj if opts.long_format: print "total %s (%s)"%(len(obj),path) print "==modified========== ==size/type== ==version== ==name==========" for o in obj: if opts.list_type!="ALL" and opts.list_type!=o.Type: continue if opts.long_format: print "%s "%datetime.datetime(*time.localtime(o.modified)[:-3]).isoformat(), if o.Type == pyacd.types.FILE: print "%13s"%(o.size if o.size else -1), else: print "%13s"%("<"+o.Type+">"), print "%11s"%("("+str(o.version)+")"), print o.name if o.Type == pyacd.types.FILE else o.name+"/" continue
def main(): opts,args=parser.parse_args(sys.argv[1:]) pyacd.set_amazon_domain(opts.domain) args=list(set(args)) if "-" in args: args.remove("-") args += [x.strip() for x in sys.stdin.readlines()] if 0==len(args): sys.stderr.write("No file selected.\n") parser.print_help() sys.exit(2) else: pass # Check destination path=opts.path if path[-1]!=os.sep:path=path+os.sep if not os.path.exists(path): sys.stderr.write('"%s" does not exist\n'%path) sys.exit(2) elif not os.path.isdir(path): sys.stderr.write('"%s" is not file\n'%path) sys.exit(2) # Check options of authentication if opts.email: if not opts.password: opts.password = getpass.getpass() if (opts.email and opts.password) or opts.session: pass # OK case else: print >>sys.stderr, "Either email and password or session is mondatory." sys.exit(2) session = None; s = None if opts.session: if opts.verbose: print >>sys.stderr, "Loading previous session...", try: s=pyacd.Session.load_from_file(opts.session) if opts.verbose: print >>sys.stderr, "Done." except: s=pyacd.Session() if opts.verbose: print >>sys.stderr, "Failed." if opts.verbose: print >>sys.stderr, "Logging into %s..."%opts.domain, try: if opts.email and opts.password and s: session=pyacd.login(opts.email,opts.password,session=s) elif opts.email and opts.password: session=pyacd.login(opts.email,opts.password) else: session=pyacd.login(session=s) if opts.verbose: print >>sys.stderr, "Done." except: if opts.verbose: print >>sys.stderr, "Failed." sys.exit(2) # Check login status if not session: sys.stderr.write("Unexpected error occured.\n") sys.exit(2) elif not session.is_logged_in(): sys.stderr.write("Login failed.\n%s\n"%session) sys.exit(2) for f in args: if f[0]!='/':f='/'+f filename = os.path.basename(f) if opts.verbose: sys.stderr.write("Downloading %s to %s ... "%(f,path)) if os.path.exists(path+filename) and not opts.force: sys.stderr.write("Aborted. ('%s' exists.)\n"%(path+filename)) continue # get file try: fileobj = pyacd.api.get_info_by_path(f) except pyacd.PyAmazonCloudDriveApiException,e: sys.stderr.write("Aborted. ('%s')\n"%e.message) continue except pyacd.PyAmazonCloudDriveError,e: sys.stderr.write("Not found.\n") continue
def setUp(self): session = pyacd.Session.load_from_file(acdsession) session = pyacd.login(session=session)
def main(): opts,args=parser.parse_args(sys.argv[1:]) # Check options of authentication if opts.session and os.path.exists(opts.session) and not os.path.isdir(opts.session): pass elif not opts.email or not opts.password: sys.stderr.write("!! email and password are required !!\n") parser.print_help() sys.exit(2) args=list(set(args)) if "-" in args: args.remove("-") args += [x.strip() for x in sys.stdin.readlines()] if 0==len(args): sys.stderr.write("!! no file selected !!\n") parser.print_help() sys.exit(2) else: for file in args: if not os.path.exists(file): sys.stderr.write('Not found "%s"\n'%file) sys.exit(2) elif os.path.isdir(file): sys.stderr.write('"%s" is not file\n'%file) sys.exit(2) # Login to Amazon.com session=None try: if not opts.quiet: sys.stderr.write("Logging in to Amazon.com ... ") if opts.email and opts.password: session=pyacd.login(opts.email,opts.password) else: fp=open(opts.session,"rb") session=pickle.load(fp) fp.close() session=pyacd.login(session=session) except: pass # Check login status if not session: sys.stderr.write("Unexpected error occured.\n") sys.exit(2) elif not session.is_valid(): sys.stderr.write("Session is invalid.\n%s\n"%session) sys.exit(2) elif not session.is_logined(): sys.stderr.write("Login failed.\n%s\n"%session) sys.exit(2) if not opts.quiet: sys.stderr.write("Done\n") if opts.session: if not opts.quiet: sys.stderr.write("Updating %s ... "%opts.session) fp=open(opts.session,"wb") fp.truncate() pickle.dump(session,fp) fp.close() if not opts.quiet: sys.stderr.write("Done\n") # Check destination path=opts.path if path[0]!='/':path='/'+path if path[-1]!='/':path=path+'/' try: dest = pyacd.api.get_info_by_path(path) if dest.Type == pyacd.types.FILE: sys.stderr.write('"%s" is file\n'%path) sys.exit(2) except pyacd.PyAmazonCloudDriveApiException,e: sys.stderr.write('"%s"\n'%str(e)) sys.exit(2)
def main(): opts,args=parser.parse_args(sys.argv[1:]) # Check options of authentication if opts.session and os.path.exists(opts.session) and not os.path.isdir(opts.session): pass elif not opts.email or not opts.password: sys.stderr.write("!! email and password are required !!\n") parser.print_help() sys.exit(2) args=list(set(args)) if "-" in args: args.remove("-") args += [x.strip() for x in sys.stdin.readlines()] if 1!=len(args): sys.stderr.write("!! no source directory selected !!\n") parser.print_help() sys.exit(2) else: srcdir=args[0] if not os.path.exists(srcdir): sys.stderr.write('Not found "%s"\n'%srcdir) sys.exit(2) elif not os.path.isdir(srcdir): sys.stderr.write('"%s" is not a directory\n'%srcdir) sys.exit(2) # Login to Amazon.com session=None try: if not opts.quiet: sys.stderr.write("Logging in to Amazon.com ... ") if opts.email and opts.password: session=pyacd.login(opts.email,opts.password) else: fp=open(opts.session,"rb") session=pickle.load(fp) fp.close() session=pyacd.login(session=session) except: pass # Check login status if not session: sys.stderr.write("Unexpected error occured.\n") sys.exit(2) elif not session.is_valid(): sys.stderr.write("Session is invalid.\n%s\n"%session) sys.exit(2) elif not session.is_logined(): sys.stderr.write("Login failed.\n%s\n"%session) sys.exit(2) if not opts.quiet: sys.stderr.write("Done\n") if opts.session: if not opts.quiet: sys.stderr.write("Updating %s ... "%opts.session) fp=open(opts.session,"wb") fp.truncate() pickle.dump(session,fp) fp.close() if not opts.quiet: sys.stderr.write("Done\n") # Check destination path=opts.path if path[0]!='/':path='/'+path if path[-1]!='/':path=path+'/' basedir = os.path.abspath(args[0]) baselen = len(basedir) directories = [ basedir ] while len(directories)>0: # entering new folder srcdir = directories.pop() destdir = path[:-1] + srcdir[baselen:] if not opts.quiet: sys.stderr.write("Uploading to folder '%s' ...\n"%destdir) try: fileobj = pyacd.api.get_info_by_path(destdir) if fileobj.Type == pyacd.types.FOLDER: # do nothing, folder exists pass elif fileobj.Type == pyacd.types.FILE: # problem, we won't use this folder if not opts.quiet: sys.stderr.write("Skipping destination '%s' - it's a file\n"%destdir) continue else: if not opts.quiet: sys.stderr.write("Skipping destination '%s' - type is %d\n"%(destdir,fileobj.Type)) continue except pyacd.PyAmazonCloudDriveApiException,e: # error getting folder. no folder there, need to create parent, folder = os.path.split(destdir) parent += '/' # Validate folder name - must satisfy regular expression pattern: if not pyacd.validation.is_valid_member_name(folder): # replace double quotes with single quotes, others with _ new_folder = pyacd.validation.rewrite_invalid_member_name(folder) if opts.verbose: sys.stderr.write("invalid folder '%s' - changed to '%s'"%(folder,new_folder)) folder = new_folder destdir = os.path.join(parent,folder) if opts.verbose: sys.stderr.write("create folder '%s' in '%s'"%(folder,parent)) if opts.dryrun: if opts.verbose: sys.stderr.write("(Done)\n") else: try: pyacd.api.create_by_path(parent,folder,Type=pyacd.types.FOLDER) if opts.verbose: sys.stderr.write("-> ") if not opts.quiet: sys.stderr.write("Done\n") except pyacd.PyAmazonCloudDriveApiException,e: sys.stderr.write("Aborted. ('%s')\n"%str(e)) continue
def main(): opts,args=parser.parse_args(sys.argv[1:]) # Check options of authentication if opts.session and os.path.exists(opts.session) and not os.path.isdir(opts.session): pass elif not opts.email or not opts.password: sys.stderr.write("!! email and password are required !!\n") parser.print_help() sys.exit(2) args=list(set(args)) if "-" in args: args.remove("-") args += [x.strip() for x in sys.stdin.readlines()] if 0==len(args): sys.stderr.write("!! no dir selected !!\n") parser.print_help() sys.exit(2) else: pass # Login to Amazon.com session=None try: if not opts.quiet: sys.stderr.write("Logining to Amazon.com ... ") if opts.email and opts.password: session=pyacd.login(opts.email,opts.password) else: fp=open(opts.session,"rb") session=pickle.load(fp) fp.close() session=pyacd.login(session=session) except: pass # Check login status if not session: sys.stderr.write("Unexpected error occured.\n") sys.exit(2) elif not session.is_valid(): sys.stderr.write("Session is invalid.\n%s\n"%session) sys.exit(2) elif not session.is_logined(): sys.stderr.write("Login failed.\n%s\n"%session) sys.exit(2) if not opts.quiet: sys.stderr.write("Done\n") if opts.session: if not opts.quiet: sys.stderr.write("Updating %s ... "%opts.session) fp=open(opts.session,"wb") fp.truncate() pickle.dump(session,fp) fp.close() if not opts.quiet: sys.stderr.write("Done\n") for path in args: if path[0]!='/':path='/'+path folder = path.split("/")[-1] parent = "/".join(path.split("/")[:-1]) parent = parent if len(parent)!=0 else "/" if not opts.quiet: sys.stderr.write("Making %s in %s ... "%(folder,parent)) # create folder if opts.verbose: sys.stderr.write("create ") try: pyacd.api.create_by_path(parent,folder,Type=pyacd.types.FOLDER) except pyacd.PyAmazonCloudDriveApiException,e: sys.stderr.write("Aborted. ('%s')\n"%e.message) continue if opts.verbose: sys.stderr.write("-> ") if not opts.quiet: sys.stderr.write("Done\n")
def main(): opts,args=parser.parse_args(sys.argv[1:]) # Check options of authentication if opts.session and os.path.exists(opts.session) and not os.path.isdir(opts.session): pass elif not opts.email or not opts.password: sys.stderr.write("!! email and password are required !!\n") parser.print_help() sys.exit(2) args=list(set(args)) if "-" in args: args.remove("-") args += [x.strip() for x in sys.stdin.readlines()] if 0==len(args): sys.stderr.write("!! no file selected !!\n") parser.print_help() sys.exit(2) else: pass # Check destination path=opts.path if path[-1]!=os.sep:path=path+os.sep if not os.path.exists(path): sys.stderr.write('"%s" does not exist\n'%path) sys.exit(2) elif not os.path.isdir(path): sys.stderr.write('"%s" is not file\n'%path) sys.exit(2) # Login to Amazon.com session=None try: if not opts.quiet: sys.stderr.write("Logining to Amazon.com ... ") if opts.email and opts.password: session=pyacd.login(opts.email,opts.password) else: fp=open(opts.session,"rb") session=pickle.load(fp) fp.close() session=pyacd.login(session=session) except: pass # Check login status if not session: sys.stderr.write("Unexpected error occured.\n") sys.exit(2) elif not session.is_valid(): sys.stderr.write("Session is invalid.\n%s\n"%session) sys.exit(2) elif not session.is_logined(): sys.stderr.write("Login failed.\n%s\n"%session) sys.exit(2) if not opts.quiet: sys.stderr.write("Done\n") if opts.session: if not opts.quiet: sys.stderr.write("Updating %s ... "%opts.session) fp=open(opts.session,"wb") fp.truncate() pickle.dump(session,fp) fp.close() if not opts.quiet: sys.stderr.write("Done\n") for file in args: if file[0]!='/':file='/'+file filename = os.path.basename(file) if not opts.quiet: sys.stderr.write("Downloading %s to %s ... "%(file,path)) if os.path.exists(path+filename) and not opts.force: sys.stderr.write("Aborted. ('%s' exists.)\n"%(path+filename)) continue # get file if opts.verbose: sys.stderr.write("get ") try: fileobj = pyacd.api.get_info_by_path(file) except pyacd.PyAmazonCloudDriveApiException,e: sys.stderr.write("Aborted. ('%s')\n"%e.message) continue if opts.verbose: sys.stderr.write("-> ") if fileobj.Type!= pyacd.types.FILE: sys.stderr.write("Aborted. ('%s' is not file.)"%file) continue # download data=pyacd.api.download_by_id(fileobj.object_id) f=open(path+filename,"wb") f.truncate() f.write(data) f.close() if not opts.quiet: sys.stderr.write("Done\n")
def main(): opts, args = parser.parse_args(sys.argv[1:]) # Check options of authentication if opts.session and os.path.exists( opts.session) and not os.path.isdir(opts.session): pass elif not opts.email or not opts.password: sys.stderr.write("!! email and password are required !!\n") parser.print_help() sys.exit(2) args = list(set(args)) if "-" in args: args.remove("-") args += [x.strip() for x in sys.stdin.readlines()] if 0 == len(args): sys.stderr.write("!! no file selected !!\n") parser.print_help() sys.exit(2) else: pass # Check destination path = opts.path if path[-1] != os.sep: path = path + os.sep if not os.path.exists(path): sys.stderr.write('"%s" does not exist\n' % path) sys.exit(2) elif not os.path.isdir(path): sys.stderr.write('"%s" is not file\n' % path) sys.exit(2) # Login to Amazon.com session = None try: if not opts.quiet: sys.stderr.write("Logining to Amazon.com ... ") if opts.email and opts.password: session = pyacd.login(opts.email, opts.password) else: fp = open(opts.session, "rb") session = pickle.load(fp) fp.close() session = pyacd.login(session=session) except: pass # Check login status if not session: sys.stderr.write("Unexpected error occured.\n") sys.exit(2) elif not session.is_valid(): sys.stderr.write("Session is invalid.\n%s\n" % session) sys.exit(2) elif not session.is_logined(): sys.stderr.write("Login failed.\n%s\n" % session) sys.exit(2) if not opts.quiet: sys.stderr.write("Done\n") if opts.session: if not opts.quiet: sys.stderr.write("Updating %s ... " % opts.session) fp = open(opts.session, "wb") fp.truncate() pickle.dump(session, fp) fp.close() if not opts.quiet: sys.stderr.write("Done\n") for file in args: if file[0] != '/': file = '/' + file filename = os.path.basename(file) if not opts.quiet: sys.stderr.write("Downloading %s to %s ... " % (file, path)) if os.path.exists(path + filename) and not opts.force: sys.stderr.write("Aborted. ('%s' exists.)\n" % (path + filename)) continue # get file if opts.verbose: sys.stderr.write("get ") try: fileobj = pyacd.api.get_info_by_path(file) except pyacd.PyAmazonCloudDriveApiException, e: sys.stderr.write("Aborted. ('%s')\n" % e.message) continue if opts.verbose: sys.stderr.write("-> ") if fileobj.Type != pyacd.types.FILE: sys.stderr.write("Aborted. ('%s' is not file.)" % file) continue # download data = pyacd.api.download_by_id(fileobj.object_id) f = open(path + filename, "wb") f.truncate() f.write(data) f.close() if not opts.quiet: sys.stderr.write("Done\n")
def main(): opts,args=parser.parse_args(sys.argv[1:]) # Check options of authentication if opts.session and os.path.exists(opts.session) and not os.path.isdir(opts.session): pass elif not opts.email or not opts.password: sys.stderr.write("!! email and password are required !!\n") parser.print_help() sys.exit(2) args=list(set(args)) if "-" in args: args.remove("-") args += [x.strip() for x in sys.stdin.readlines()] if 0==len(args): sys.stderr.write("!! no path selected !!\n") parser.print_help() sys.exit(2) else: pass # Login to Amazon.com session=None try: if not opts.quiet: sys.stderr.write("Logining to Amazon.com ... ") if opts.email and opts.password: session=pyacd.login(opts.email,opts.password) else: fp=open(opts.session,"rb") session=pickle.load(fp) fp.close() session=pyacd.login(session=session) except: pass # Check login status if not session: sys.stderr.write("Unexpected error occured.\n") sys.exit(2) elif not session.is_valid(): sys.stderr.write("Session is invalid.\n%s\n"%session) sys.exit(2) elif not session.is_logined(): sys.stderr.write("Login failed.\n%s\n"%session) sys.exit(2) if not opts.quiet: sys.stderr.write("Done\n") if opts.session: if not opts.quiet: sys.stderr.write("Updating %s ... "%opts.session) fp=open(opts.session,"wb") fp.truncate() pickle.dump(session,fp) fp.close() if not opts.quiet: sys.stderr.write("Done\n") for path in args: if path[0]!='/':path='/'+path if not opts.quiet: sys.stderr.write("Moving %s to Recycle ... "%(path)) # get path if opts.verbose: sys.stderr.write("get ") try: pathobj = pyacd.api.get_info_by_path(path) except pyacd.PyAmazonCloudDriveApiException,e: sys.stderr.write("Aborted. ('%s')\n"%e.message) continue if opts.verbose: sys.stderr.write("-> ") if pathobj.Type!= pyacd.types.FILE and pathobj.Type!= pyacd.types.FOLDER : sys.stderr.write("Aborted. ('%s<%s>' is special entity.)"%(path,pathobj.Type)) continue # move if opts.verbose: sys.stderr.write("move ") pyacd.api.recycle_bulk_by_id([pathobj.object_id,]) if opts.verbose: sys.stderr.write("-> ") if not opts.quiet: sys.stderr.write("Done\n")