Project: mega-py

Python lib for the Mega.co.nz API

Project Details

Latest version
1.0.8
Home Page
https://github.com/odwyersoftware/mega.py
PyPI Page
https://pypi.org/project/mega-py/

Project Popularity

PageRank
0.0038133072953966817
Number of downloads
61647

Mega.py

Build
Status Downloads PyPI version

Python library for the Mega.co.nz API, currently supporting:

  • login
  • uploading
  • downloading
  • deleting
  • searching
  • sharing
  • renaming
  • moving files

This is a work in progress, further functionality coming shortly.

For more detailed information see API_INFO.md

How To Use

Create a Mega account

First, create an account with Mega .

Install mega.py package

Run the following command, or run setup from the latest github source.

pip install mega.py

Import mega.py

from mega import Mega

Create an instance of Mega.py

mega = Mega()

Login to Mega

m = mega.login(email, password)
# login using a temporary anonymous account
m = mega.login()

Get user details

details = m.get_user()

Get account balance (Pro accounts only)

balance = m.get_balance()

Get account disk quota

quota = m.get_quota()

Get account storage space

# specify unit output kilo, mega, gig, else bytes will output
space = m.get_storage_space(kilo=True)

Get account files

files = m.get_files()

Upload a file, and get its public link

file = m.upload('myfile.doc')
m.get_upload_link(file)
# see mega.py for destination and filename options

Export a file or folder

public_exported_web_link = m.export('myfile.doc')
public_exported_web_link = m.export('my_mega_folder/my_sub_folder_to_share')
# e.g. https://mega.nz/#F!WlVl1CbZ!M3wmhwZDENMNUJoBsdzFng

Find a file or folder

folder = m.find('my_mega_folder')
# Excludes results which are in the Trash folder (i.e. deleted)
folder = m.find('my_mega_folder', exclude_deleted=True)

Upload a file to a destination folder

folder = m.find('my_mega_folder')
m.upload('myfile.doc', folder[0])

Download a file from URL or file obj, optionally specify destination folder

file = m.find('myfile.doc')
m.download(file)
m.download_url('https://mega.co.nz/#!utYjgSTQ!OM4U3V5v_W4N5edSo0wolg1D5H0fwSrLD3oLnLuS9pc')
m.download(file, '/home/john-smith/Desktop')
# specify optional download filename (download_url() supports this also)
m.download(file, '/home/john-smith/Desktop', 'myfile.zip')

Import a file from URL, optionally specify destination folder

m.import_public_url('https://mega.co.nz/#!utYjgSTQ!OM4U3V5v_W4N5edSo0wolg1D5H0fwSrLD3oLnLuS9pc')
folder_node = m.find('Documents')[1]
m.import_public_url('https://mega.co.nz/#!utYjgSTQ!OM4U3V5v_W4N5edSo0wolg1D5H0fwSrLD3oLnLuS9pc', dest_node=folder_node)

Create a folder

m.create_folder('new_folder')
m.create_folder('new_folder/sub_folder/subsub_folder')

Returns a dict of folder node name and node_id, e.g.

{
  'new_folder': 'qpFhAYwA',
  'sub_folder': '2pdlmY4Z',
  'subsub_folder': 'GgMFCKLZ'
}

Rename a file or a folder

file = m.find('myfile.doc')
m.rename(file, 'my_file.doc')

Contact Support

For paid priority support contact mega@odwyer.software.

UK Python Development Agency

Release History

1.0.8 (2020-06-25)

  • Fixes find method returning the wrong file when more than one file exists with that name.
  • Handle new shared file URLS.

1.0.7 (2020-03-25)

  • Fix login by calculating public RSA exponent instead of hardcoding.

1.0.6 (2020-02-03)

  • Fixes RSA public exponent issue.
  • Switches dependency pycrypto to pycryptodome.

1.0.5 (2019-11-18)

  • Increase the wait time in between failed API request retries.

1.0.4 (2019-11-18)

  • Increase the wait time in between failed API request retries.

1.0.3 (2019-11-12)

  • Fixes broken download method.
  • Changes download and download_url methods to return the path to the downloaded file, previously returned None.
  • Added LICENSE.

1.0.2 (2019-11-07)

  • Reverts, "Replace pycrypto dependency with pycryptodome" as breaks login process.

1.0.1 (2019-11-06)

  • When a request fails due to EAGAIN response, retry with exp backoff up to 20 seconds.
  • Adds logging, removes print statements.
  • Replace pycrypto dependency with pycryptodome.
  • Removes Python 2 specific code.

1.0.0 (2019-10-31)

  • Removes broken method get_contacts().
  • Adds support for login with a v2 Mega user account.
  • Adds export() method to share a file or folder, returning public share URL with key.
  • Adds code, message attrs to RequestError exception, makes message in raised exceptions include more details.
  • Alters create_folder() to accept a path including multiple sub directories, adds support to create them all (similar to 'mkdir -p' on unix systems).
  • Adds exclude_deleted=True optional arg to find() method, to exclude deleted nodes from results.

0.9.20 (2019-10-17)

  • Python 3 bugfix to upload method.

0.9.19 (2019-10-16)

  • Python 3 support and bugfixes.
  • Update packaging code.
  • Added changelog.

0.9.18 (2013-07-04)

  • Unknown