本文整理汇总了Python中mega.Mega.find方法的典型用法代码示例。如果您正苦于以下问题:Python Mega.find方法的具体用法?Python Mega.find怎么用?Python Mega.find使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类mega.Mega
的用法示例。
在下文中一共展示了Mega.find方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: DriverMega
# 需要导入模块: from mega import Mega [as 别名]
# 或者: from mega.Mega import find [as 别名]
class DriverMega(Service):
ERROR_TRY_AGAIN = -3
NODE_FILE = 0
NODE_ROOT = 2
def __init__(self, params):
'''
Connects to Mega with the provided credentials
Arguments
---------
params: A dict with the params to be passed to the initialised object
'''
self.logger = logging.getLogger('clouddump')
self.logger.info("Connecting to Mega...")
self.params = params
self.mega = Mega()
try:
self.mega.login(params['user_name'], params['password'])
self.logger.info("Sucessfully logged in to Mega.")
except Exception:
self.logger.error(
"Authentication to Mega failed. Please check user / password.")
sys.exit(errno.EPERM)
def upload(self, file_name):
'''
Uploads the file to Mega, retrying if it couldn't be achieved
Arguments
---------
file_name: A string with the name of the file to be uploaded
'''
try:
link = self._upload_try(file_name)
except Exception as e:
if e == DriverMega.ERROR_TRY_AGAIN:
count = 0
self.logger.warn(
"Failed to upload %s to Mega. Trying again..." %
(file_name))
while link == None and count < self.params['retries']:
link = self._upload_try(file_name)
count += 1
if link == None:
self.logger.error("Upload failed after all retries.")
def delete_old_files(self):
'''Delete files from the specified folder older than x days'''
files = self._get_folder_files()
if len(files) > 0:
past = datetime.datetime.now() - datetime.timedelta(
days = self.params["delete_files_older_than"])
past_timestamp = calendar.timegm(past.utctimetuple())
for file_id, file_metadata in files.iteritems():
if file_metadata['ts'] < past_timestamp:
try:
self.mega.delete(file_id)
self.logger.info(
"%s deleted" % (file_metadata['a']['n']))
except Exception as e:
if e == DriverMega.ERROR_TRY_AGAIN:
self.logger.warn(
"Failed to delete %s from Mega." %
(file_metadata['a']['n']))
else:
self.logger.info("No files to delete")
def _get_folder_files(self):
'''
Return the files stored in the specified folder, or from the root one
if no folder was passed
'''
if self.params['folder_name'] == '':
only_files = {}
files = self.mega.get_files_in_node(DriverMega.NODE_ROOT)
for key, value in files.iteritems():
if value['t'] == DriverMega.NODE_FILE:
only_files[key] = value
return only_files
folder = self.mega.find(self.params['folder_name'])
return self.mega.get_files_in_node(folder[0])
def _upload_try(self, file_name):
'''
Uploads the file to the selected folder in Mega, or root if no
folder was chosen
#.........这里部分代码省略.........