Skip to main content

MediaFire Python Open SDK

This is a Python implementation of MediaFire Core API client.

Installing

$ pip install mediafire

What should I use?

If you are in a hurry, use MediaFireClient - it contains enough functions to get your uploads/downloads and file listings working. It does not have a stable API, and has rudimentary test coverage only.

You may want to stick to MediaFireApi and MediaFireUploader to have as much control as possible over your application flow.

mediafire.MediaFireApi

API Client library provides an interface to MediaFire API. It handles requests, responses, signatures and errors.

Usage:

from mediafire import MediaFireApi

api = MediaFireApi()
session = api.user_get_session_token(
    email='your.email@example.net',
    password='password',
    app_id='42511')

# API client does not know about the token
# until explicitly told about it:
api.session = session

response = api.user_get_info()
print(response['user_info']['display_name'])

# Or directly for methods that are not yet wrapped
response = api.request("upload/add_web_upload", {
    "url": "http://forum.mediafiredev.com/images/mfforumlogo.png",
    "filename": "mfforumlogo.png"})

response = api.request("upload/get_web_uploads",
                       {"key": response['upload_key']})

API Client library supports operation w/o session_token. In this case all operations that do require session_token will fail with Access denied error:

from mediafire import MediaFireApi

api = MediaFireApi()
response = api.system_get_info()
print(response)  # prints system info

response = api.user_get_info()  # fails with "Session token is missing"

Once set, session token can be unset:

api.session = None
# or
del api.session

For information on wrapped methods, see pydoc mediafire.api. For documentation on actual values expected, see MediaFire Core API documentation.

All wrapped methods follow the same naming convention, category_action, so upload/instant is upload_instant.

You can construct the call yourself easily:

response = api.request("user/set_avatar",
                       {"quick_key": "123456789012345"})

Downloading

API client does not handle regular file downloads because these are simple HTTP requests to URLs returned by “file/get_links”. Here’s how you can do that yourself:

response = api.file_get_links('c94lcpx3vax6xp3')
normal_download_url = response['links'][0]['normal_download']

response = requests.get(normal_download_url, stream=True)
with io.open("/tmp/green.jpg", 'wb') as fd:
    for chunk in response.iter_content(chunk_size=4096):
        fd.write(chunk)

In case response is a file download, e.g. file/zip, the response returned is a requests.Response object, which you can read from:

...
response = api.request("file/zip", {"keys": "c94lcpx3vax6xp3"})
with io.open("/tmp/green.zip", 'wb') as fd:
    for chunk in response.iter_content(chunk_size=4096):
        fd.write(chunk)
...

See Download documentation for more information.

mediafire.MediaFireUploader

MediaFire supports several upload methods and MediaFireUploader exposes a single upload method to make things easier:

from mediafire import (MediaFireApi, MediaFireUploader)

api = MediaFireApi()
uploader = MediaFireUploader(api)

# ... authenticate ...

fd = open('/path/to/file', 'rb')

result = uploader.upload(fd, 'Some filename.txt',
                         folder_key='1234567890123')

pprint(api.file_get_info(result.quickkey))

result is a mediafire.uploader.UploadResult instance.

FileDrop

For FileDrop uploads (i.e. when filedrop_key is used) only upload/instant result has quickkey. upload/instant and upload/resumable return None for all the fields, since upload/poll does not support encrypted upload key.

mediafire.media.ConversionServerClient

This API is subject to change

This is a very thin layer on top of Image and Document conversion API.

from mediafire.media import ConversionServerClient

conv = ConversionServerClient()

response = conv.request('2004', 'm8d6blce79xhxl5', 'i', size_id='1')
with open('/tmp/example.jpg', 'rb') as fd:
    fd.write(response.content)

mediafire.client.MediaFireClient

This API is subject to change

High-level client library wraps API calls and presents simplified interface.

Supported operations:

  • File upload

  • File download (direct download link)

  • Listing directories

  • Creating directories

  • Removing files and directories

  • Getting info about files and directories

MediaFire resources can be referenced by path or by quickkey/folderkey.

  • path: mf:/Pictures/Sample.jpg or /Pictures/Sample.jpg

  • folder_key: mf:6302u1a9p0a9x (folder_key is 13 chars long)

  • quick_key: mf:46d3y4p8542kiyp (quick_key is 15 chars long)

from mediafire.client import (MediaFireClient, File, Folder)

client = MediaFireClient()
client.login(email='your.email@example.net',
    password='password',
    app_id='42511')

client.upload_file("flower.jpg", "mf:/Pictures/")
client.download_file("mf:/Pictures/flower.jpg",
                     "flower-from-mediafire.jpg")

for item in client.get_folder_contents_iter("mf:/Pictures"):
    if type(item) is File:
        print("File: {}".format(item['filename']))
    elif type(item) is Folder:
        print("Folder: {}".format(item['name']))

See examples/mediafire-cli.py for high-level client usage.

Requirements

  • python 2.7 or 3.4

  • six

  • requests

  • requests_toolbelt

  • responses (for testing)

Tests

Test suite is located under tests/

git clone https://github.com/MediaFire/mediafire-python-open-sdk.git
cd mediafire-python-open-sdk
# Run tests with python 3 interpreter
PYTHONPATH=. python3 -munittest
# Run tests with python 2 interpreter
PYTHONPATH=. python -munittest discover

Reporting issues

See https://pypi.org/project/mediafire/ for the current maintainer.

About and License

Copyright (c) 2014, Roman Yepishev. All rights reserved. Website: http://www.keypressure.com

This project was forked by MediaFire with explicit permission from Roman Yepishev on 10.24.2014

This project is made under BSD license. See LICENSE file for more information.

MediaFire® is a registered trademark of the MediaFire, LLC.

Release files for mediafire 0.6.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for mediafire 0.6.1
File Size Uploaded
mediafire-0.6.1.tar.gz 24.7 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for mediafire 0.6.1
File Interpreter ABI Platform
mediafire-0.6.1-py2.py3-none-any.whl Python 3, Python 2 none any Details

Total release size: 47.6 kB

Release files / mediafire-0.6.1.tar.gz

Download URL mediafire-0.6.1.tar.gz
Size 24.7 kB
Tags Source
SHA-256 checksum
How to use checksums
a1adfeff43dfb611d560c920f6ec18a05b5197b2b15093b08591e45ce879353e
BLAKE2b-256 checksum
How to use checksums
0cfe491d7b3200f3c3cf894e8c05415be4ee5537bf318d9c04ddd53846edf6b3
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.2 CPython/3.8.10

Release files / mediafire-0.6.1-py2.py3-none-any.whl

Download URL mediafire-0.6.1-py2.py3-none-any.whl
Size 22.9 kB
Tags Python 2 Python 3
SHA-256 checksum
How to use checksums
2f237cc12cb7c10f8aa8efcced1de453512ebc97f603975e6e3a2a769bc93f5b
BLAKE2b-256 checksum
How to use checksums
dc3281bb519715b4d8c69edcb6c7301549b587bbf7b28ea342b6018293332b4a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.2 CPython/3.8.10

Release history Release notifications | RSS feed

This release

0.6.1 This release

2 release files

0.6.0

2 release files

0.5.2

2 release files

0.5.1

2 release files

0.5.0

2 release files

0.4.1

2 release files

0.4.0

2 release files

0.3.0

1 release file

0.2.0

1 release file

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page