Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
def __get_cdl_dest(self, source_url, save_path):
rpath = get_pcs_path(save_path)
# download to /apps/bypy root
if rpath == const.AppPcsPath \
or (const.ENoError == self.__get_file_info(rpath) \
and self.__remote_json['isdir']):
filename = source_url.split('/')[-1]
rpath += '/' + filename
return rpath
def move(self, fromp, to):
''' Usage: move/mv/rename/ren - \
move a file / dir remotely at Baidu Yun
from - source path (file / dir)
to - destination path (file / dir)
'''
frompp = get_pcs_path(fromp)
top = get_pcs_path(to)
pars = {
'method' : 'move',
'from' : frompp,
'to' : top }
self.pd("Remote moving: '{}' =mm=> '{}'".format(fromp, to))
return self.__post(pcsurl + 'file', pars, self.__move_act)
def delete(self, remotepath):
''' Usage: delete/remove/rm - \
delete a file / dir remotely at Baidu Yun
remotepath - destination path (file / dir)
'''
rpath = get_pcs_path(remotepath)
#if is_pcs_root_path(rpath):
# return self.__delete_children(rpath)
#else:
return self.__delete(rpath)
def compare(self, remotedir = None, localdir = None, skip_remote_only_dirs = False):
''' Usage: compare [remotedir] [localdir] - \
compare the remote directory with the local directory
remotedir - the remote directory at Baidu Yun (after app's directory). \
if not specified, it defaults to the root directory.
localdir - the local directory, if not specified, it defaults to the current directory.
skip_remote_only_dirs - skip remote-only sub-directories (faster if the remote \
directory is much larger than the local one). it defaults to False.
'''
same, diff, local, remote = self.__compare(get_pcs_path(remotedir), localdir, str2bool(skip_remote_only_dirs))
pr("==== Same files ===")
for c in same:
pr("{} - {}".format(c[0], c[1]))
pr("==== Different files ===")
for d in diff:
pr("{} - {}".format(d[0], d[1]))
pr("==== Local only ====")
for l in local:
pr("{} - {}".format(l[0], l[1]))
pr("==== Remote only ====")
for r in remote:
pr("{} - {}".format(r[0], r[1]))
def copy(self, fromp, to):
''' Usage: copy/cp - \
copy a file / dir remotely at Baidu Yun
from - source path (file / dir)
to - destination path (file / dir)
'''
frompp = get_pcs_path(fromp)
top = get_pcs_path(to)
pars = {
'method' : 'copy',
'from' : frompp,
'to' : top }
self.pd("Remote copying '{}' =cc=> '{}'".format(frompp, top))
return self.__post(pcsurl + 'file', pars, self.__copy_act)
''' Usage: list/ls [remotepath] [format] [sort] [order] - list the 'remotepath' directory at Baidu PCS
remotepath - the remote path at Baidu PCS. default: root directory '/'
format - specifies how the list are displayed
$t - Type: Directory ('D') or File ('F')
$f - File name
$c - Creation time
$m - Modification time
$d - MD5 hash
$s - Size
$$ - The '$' sign
So '$t - $f - $s - $$' will display "Type - File - Size - $'
Default format: '$t $f $s $m $d'
sort - sorting by [name, time, size]. default: 'name'
order - sorting order [asc, desc]. default: 'asc'
'''
rpath = get_pcs_path(remotepath)
pars = {
'method' : 'list',
'path' : rpath,
'by' : sort,
'order' : order }
return self.__get(pcsurl + 'file', pars, self.__list_act, (rpath, fmt))
else:
for arg in args:
self.__slice_md5s.append(arg)
else:
perr("You MUST provide the MD5s hex strings through arguments or a file.")
return const.EArgument
original_verify = self.__verify
if not localfile or localfile == '*' or localfile == '/dev/null':
self.__current_file = '/dev/null' # Force no verify
self.__verify = False
else:
self.__current_file = localfile
self.__current_file_size = getfilesize(localfile)
result = self.__combine_file(get_pcs_path(remotefile))
self.__verify = original_verify
return result