def get_client(*info): ''' returns a mediafireapi.client object @email as first parameter @password as second parameter if no params are passed, then get_client pulls the account information from the user's saved credentials with the user file''' # Create Mediafire client try: client = MediaFireClient() except requests.exceptions.RequestException: logger.die('Network error, please check network status and try again') if (len(info) == 2): try: client.login(email=info[0], password=info[1], app_id=APP_ID, api_key=API_KEY) except requests.exceptions.RequestException: logger.die( 'Network error, please check network status and try again') else: try: auth = user.get_auth() client.login(email=auth[0], password=auth[1], app_id=APP_ID, api_key=API_KEY) except requests.exceptions.RequestException: logger.die( 'Network error, please check network status and try again') return client
def get_client(*info): ''' returns a mediafireapi.client object @email as first parameter @password as second parameter if no params are passed, then get_client pulls the account information from the user's saved credentials with the user file''' # Create Mediafire client try: client = MediaFireClient() except requests.exceptions.RequestException: logger.die('Network error, please check network status and try again') if (len(info) == 2): try: client.login(email=info[0], password=info[1], app_id=APP_ID, api_key=API_KEY) except requests.exceptions.RequestException: logger.die('Network error, please check network status and try again') else: try: auth = user.get_auth() client.login(email=auth[0], password=auth[1], app_id=APP_ID, api_key=API_KEY) except requests.exceptions.RequestException: logger.die('Network error, please check network status and try again') return client
def upload(filename,foldername): imagepath = '/home/xamforcrpf/imgdir/' imagepath+=filename+'.jpg' print(imagepath) print(filename) client = MediaFireClient() client.login( email='*****@*****.**', password='******', app_id='42511') result = client.upload_file(imagepath, f"mf:/{foldername}/") fileinfo = client.api.file_get_info(result.quickkey) hashcode = fileinfo['file_info']['hash'] hashcode = hashcode[:4] link = fileinfo['file_info']['links']['normal_download'] link = link.rstrip('/file') link = link.replace('/file','/convkey/'+hashcode) for i in range(1,len(link)+1): print(link[-i]) if link[-i] == '/': point = -i break elif link[-i] == '.': ext = -i link = link[:point]+'6g'+link[ext:] return link
def upgrade_mediafire(version): """ Upgrade to the given version. The upgrades will be downloaded from mediafire. The version can be higher or lower than the current one. This allows to downgrade (in case of a failed upgrade) """ codename = configuration.get("Globals", "codename") filename = "{}-{}.zip".format(codename, version) dest = os.path.join(get_data_dir(), filename) mainlog.info("Downloading a new version {} into {} proxyport={}".format( filename, dest, configuration.get("Proxy", "proxy_port"))) client = MediaFireClient() client.login(email=configuration.get("MediaFire", "email"), password=configuration.get("MediaFire", "password"), app_id=configuration.get("MediaFire", "appid"), api_key=configuration.get("MediaFire", "sessionkey")) client.download_file("mf:/" + filename, dest) configuration.set("DownloadSite", "current_version", str(version)) configuration.set("DownloadSite", "client_path", dest) configuration.save() return
def uploadass(filename): imagepath = '/home/xamforcrpf/imgdir/' imagepath+=filename print(imagepath) print(filename) client = MediaFireClient() client.login( email='*****@*****.**', password='******', app_id='42511') print('login') link = '' for i in range(10): try: print('doing upload') result = client.upload_file(imagepath, f"mf:/") fileinfo = client.api.file_get_info(result.quickkey) link = fileinfo['file_info']['links']['normal_download'] break except: print('retrying') return link
def main(): """Main entry point""" parser = argparse.ArgumentParser(prog='mediafire-cli', description=__doc__) parser.add_argument('--debug', dest='debug', action='store_true', default=False, help='Enable debug output') parser.add_argument('--email', dest='email', required=False) parser.add_argument('--password', dest='password', required=False) actions = parser.add_subparsers(title='Actions', dest='action') # http://bugs.python.org/issue9253#msg186387 actions.required = True # ls subparser = actions.add_parser('ls', help=do_ls.__doc__) subparser.add_argument('uri', nargs='?', help='MediaFire URI', default='mediafire:/') # file-upload subparser = actions.add_parser('file-upload', help=do_file_upload.__doc__) subparser.add_argument('paths', nargs='+', help='Path[s] to upload') subparser.add_argument('dest_uri', help='Destination MediaFire URI') # file-download subparser = actions.add_parser('file-download', help=do_file_download.__doc__) subparser.add_argument('uris', nargs='+', help='MediaFire File URI[s] to download') subparser.add_argument('dest_path', help='Destination path') # file-show subparser = actions.add_parser('file-show', help=do_file_show.__doc__) subparser.add_argument('uris', nargs='+', help='MediaFire File URI[s] to print out') # folder-create subparser = actions.add_parser('folder-create', help=do_folder_create.__doc__) subparser.add_argument('uri', help='MediaFire folder path URI') # resource-delete subparser = actions.add_parser('resource-delete', help=do_resource_delete.__doc__) subparser.add_argument('uri', help='MediaFire resource URI') subparser.add_argument('--purge', help="Purge, don't send to trash", dest="purge", action="store_true", default=False) # file-update-metadata subparser = actions.add_parser('file-update-metadata', help=do_file_update_metadata.__doc__) subparser.add_argument('uri', help='MediaFire file URI') subparser.add_argument('--filename', help='Set file name', default=None, dest='filename') subparser.add_argument('--privacy', help='Set file privacy', choices=['public', 'private'], default=None, dest='privacy') subparser.add_argument('--description', help='Set file description', dest='description', default=None) subparser.add_argument('--mtime', help="Set file modification time", dest='mtime', default=None) # folder-update-metadata subparser = actions.add_parser('folder-update-metadata', help=do_folder_update_metadata.__doc__) subparser.add_argument('uri', help='MediaFire folder URI') subparser.add_argument('--foldername', help='Set folder name', default=None, dest='foldername') subparser.add_argument('--privacy', help='Set folder privacy', choices=['public', 'private'], default=None, dest='privacy') subparser.add_argument('--recursive', help='Set privacy recursively', action='store_true', default=None, dest='recursive') subparser.add_argument('--description', help='Set folder description', dest='description', default=None) subparser.add_argument('--mtime', help='Set folder mtime', default=None, dest='mtime') # debug-get-resource subparser = actions.add_parser('debug-get-resource', help=do_debug_get_resource.__doc__) subparser.add_argument('uri', help='MediaFire resource URI', default='mediafire:/', nargs='?') args = parser.parse_args() if args.debug: logger = logging.getLogger() logger.setLevel(logging.DEBUG) logging.getLogger("mediafire.client").setLevel(logging.DEBUG) client = MediaFireClient() if args.email and args.password: client.login(args.email, args.password, app_id=APP_ID) router = { "file-upload": do_file_upload, "file-download": do_file_download, "file-show": do_file_show, "ls": do_ls, "folder-create": do_folder_create, "resource-delete": do_resource_delete, "file-update-metadata": do_file_update_metadata, "folder-update-metadata": do_folder_update_metadata, "debug-get-resource": do_debug_get_resource } if args.action in router: result = router[args.action](client, args) if not result: sys.exit(1) else: print('Unsupported action: {}'.format(args.action)) sys.exit(1)
def main(argv): vnumber = "0.3" print('mfcmd.py v' + vnumber, file=sys.stderr) account = '' passphrase = '' filepath = '' filepathbase = '' filesize = '' localhash = '' uldir = '' try: opts, args = getopt.getopt(argv,"e:p:u:h:f:",["email=","password="******"upload-folder=","hash=","file="]) except getopt.GetoptError: print('Error!', file=sys.stderr) return for opt, arg in opts: if opt in ("-e", "--email"): account = arg elif opt in ("-p", "--password"): passphrase = arg elif opt in ("-u", "--upload-folder"): uldir = arg elif opt in ("-s", "--size"): filesize = arg elif opt in ("-h", "--hash"): localhash = arg elif opt in ("-f", "--file"): filepath = arg if account == '': print('Error:credentials') return else: print('Email: ' + account, file=sys.stderr) if passphrase == '': print('Error:credentials') return else: print('Password: '******'': print('Error:filepath') return else: if os.path.exists(filepath): if os.path.isfile(filepath): print('Filepath: ' + filepath, file=sys.stderr) filepathbase = os.path.basename(filepath) print('Filename: ' + filepathbase, file=sys.stderr) else: print('Error:noregularfile') return else: print('Error:nofile') return if uldir == '': uldir = 'mfcmd' print('Upload folder: ' + uldir, file=sys.stderr) if localhash == '': print('No SHA-256 specified: calculating...', file=sys.stderr) sha256_hash = hashlib.sha256() with open(filepath,"rb") as f: for byte_block in iter(lambda: f.read(4096),b""): sha256_hash.update(byte_block) localhash = sha256_hash.hexdigest() print('Checksum: ' + localhash, file=sys.stderr) api = MediaFireApi() try: session = api.user_get_session_token( email=account, password=passphrase, app_id='42511') print('MediaFire API: connected', file=sys.stderr) api.session = session except: print('Error:login') try: userinfo = api.user_get_info() print("Account holder: " + userinfo['user_info']['display_name'], file=sys.stderr) maxstore = userinfo['user_info']['storage_limit'] usedstore = userinfo['user_info']['used_storage_size'] freestore = int(maxstore)-int(usedstore) freestore_str = str(freestore) print("Maximum storage: " + maxstore, file=sys.stderr) print("Used storage: " + usedstore, file=sys.stderr) print("Free storage: " + freestore_str, file=sys.stderr) localsize = os.path.getsize(filepath) localsize_str = str(localsize) print("Local file size: " + localsize_str, file=sys.stderr) if freestore <= localsize: print("Error: available space will not suffice!", file=sys.stderr) print("Error:space") return else: print("Available filespace will suffice", file=sys.stderr) except: print('Error getting or parsing user info', file=sys.stderr) client = MediaFireClient() try: client.login(email=account, password=passphrase, app_id='42511') print('MediaFire Client: logged in', file=sys.stderr) except: print('Error:login') return try: client.get_resource_by_path("/" + uldir + "/") print('Detected upload folder ./' + uldir, file=sys.stderr) except: print('Error: upload folder ./' + uldir, 'does not exist!', file=sys.stderr) try: client.create_folder("mf:/" + uldir) except: print('Could not create upload folder: defaulting to root', file=sys.stderr) uldir = '' try: if uldir == '': fileinfo = client.get_resource_by_path("/" + filepathbase) remotehash = fileinfo['hash'] if localhash == remotehash: print('Same file already exists: no upload necessary!', file=sys.stderr) try: dlurl = fileinfo['links']['normal_download'] dlurl = dlurl.replace('http://www.', 'https://') print(dlurl) except: print('Error:link') return else: print('Error: filename already exists in upload folder', file=sys.stderr) posixtime = int(time.time()) posixtext = str(posixtime) uldir = posixtext print('Creating root subfolder: /' + uldir, file=sys.stderr) try: client.create_folder("mf:/" + uldir) except: print('Error:folder') return else: fileinfo = client.get_resource_by_path("/" + uldir + "/" + filepathbase) remotehash = fileinfo['hash'] if localhash == remotehash: print('Same file already exists: no upload necessary!', file=sys.stderr) try: dlurl = fileinfo['links']['normal_download'] dlurl = dlurl.replace('http://www.', 'https://') print(dlurl) except: print('Error:link') return else: print('Error: filename already exists in upload folder', file=sys.stderr) posixtime = int(time.time()) posixtext = str(posixtime) uldir = uldir + '/' + posixtext print('Creating subfolder: ./' + uldir, file=sys.stderr) try: client.create_folder("mf:/" + uldir) except: print('Could not create upload folder: defaulting to root', file=sys.stderr) uldir = '' except: print('File does not exist in upload folder', file=sys.stderr) try: if uldir == '': client.upload_file(filepath, "mf:/") else: client.upload_file(filepath, "mf:/" + uldir + "/") except: print('Error: upload function', file=sys.stderr) try: if uldir == '': fileinfo = client.get_resource_by_path("/" + filepathbase) else: fileinfo = client.get_resource_by_path("/" + uldir + "/" + filepathbase) dlurl = fileinfo['links']['normal_download'] dlurl = dlurl.replace('http://www.', 'https://') print(dlurl) except: print('Error:upload') return
class MediaFireConnection: def __init__(self, api=MediaFireApi(), email=properties.email, password=properties.password, app_id=properties.app_id): self.__api = api self.session = api.user_get_session_token(email=email, password=password, app_id=app_id) self.__api.session = self.session self.uploader = MediaFireUploader(self.__api) self.client = MediaFireClient() self.client.login(email=email, password=password, app_id=app_id) self.ROOT = ROOT def get_info(self): res = self.__api.system_get_info() return res def get_user_info(self): res = self.__api.user_get_info() return res def get_file_info(self, uploadresult): return self.__api.file_get_info(uploadresult.quickkey)['result'] def upload_file(self, source_path, source_filename, target_path, target_filename): result = None while not result: try: result = self.client.upload_file( os.path.join(source_path, source_filename), target_path + "/" + target_filename) except IsADirectoryError: result = None # Todo: idk why we need this... except ResourceNotFoundError: logging.info("%s path not found, lets create it." % target_path) self.client.create_folder(target_path, recursive=True) result = self.client.get_resource_by_key(result.quickkey) return result def do_ls(self, client, args): """List directory""" for item in client.get_folder_contents_iter(args.uri): # privacy flag if item['privacy'] == 'public': item['pf'] = '@' else: item['pf'] = '-' if isinstance(item, Folder): # type flag item['tf'] = 'd' item['key'] = item['folderkey'] item['size'] = '' else: item['tf'] = '-' item['key'] = item['quickkey'] item['name'] = item['filename'] print("{tf}{pf} {key:>15} {size:>10} {created} {name}".format( **item)) return True def to_mongo(self, db, folder_pair): path = folder_pair['mf'] ftp_root = folder_pair['ftp'] coll_name = folder_pair['name'] logging.info("Processing path: %s" % path) try: for item in self.client.get_folder_contents_iter(path): if type(item) is File: mf_path = (path + item['filename']) ftp_path = (ftp_root + item['filename']) logging.debug("Checking in Mongo for %s ==> %s" % (mf_path, ftp_path)) existing = db.find_by_ftp_path(ftp_path, coll_name=coll_name) if existing: logging.debug("updating Mongo") item['path'] = path item["mf_root"] = folder_pair['mf'] db.update_item(existing, properties={"mf": item}, coll_name=coll_name) else: logging.debug("inserting into Mongo") item['path'] = path db.insert_one({"mf": item}, coll_name=coll_name) elif type(item) is Folder: self.to_mongo( db, { "mf": path + item['name'] + '/', "ftp": folder_pair['ftp'] + item['name'] + '/', "name": coll_name }) except ResourceNotFoundError as rne: logging.error("Resource NOT Found: %s", exc_info=rne) return except Exception as e: logging.error("Error: %s", exc_info=e)
def main(): # pylint: disable=too-many-statements """Main entry point""" parser = argparse.ArgumentParser(prog='mediafire-cli', description=__doc__) parser.add_argument('--debug', dest='debug', action='store_true', default=False, help='Enable debug output') parser.add_argument('--email', dest='email', required=False, default=os.environ.get('MEDIAFIRE_EMAIL', None)) parser.add_argument('--password', dest='password', required=False, default=os.environ.get('MEDIAFIRE_PASSWORD', None)) actions = parser.add_subparsers(title='Actions', dest='action') # http://bugs.python.org/issue9253#msg186387 actions.required = True # ls subparser = actions.add_parser('ls', help=do_ls.__doc__) subparser.add_argument('uri', nargs='?', help='MediaFire URI', default='mf:///') # file-upload subparser = actions.add_parser('file-upload', help=do_file_upload.__doc__) subparser.add_argument('paths', nargs='+', help='Path[s] to upload') subparser.add_argument('dest_uri', help='Destination MediaFire URI') # file-download subparser = actions.add_parser('file-download', help=do_file_download.__doc__) subparser.add_argument('uris', nargs='+', help='MediaFire File URI[s] to download') subparser.add_argument('dest_path', help='Destination path') # file-show subparser = actions.add_parser('file-show', help=do_file_show.__doc__) subparser.add_argument('uris', nargs='+', help='MediaFire File URI[s] to print out') # folder-download subparser = actions.add_parser('folder-download', help=do_folder_download.__doc__) subparser.add_argument('uri', nargs='?', help='MediaFire URI', default='mf:///') subparser.add_argument('dest_path', help='Destination path') # folder-create subparser = actions.add_parser('folder-create', help=do_folder_create.__doc__) subparser.add_argument('uris', nargs='+', help='MediaFire folder path URI[s]') # resource-delete subparser = actions.add_parser('resource-delete', help=do_resource_delete.__doc__) subparser.add_argument('uris', nargs='+', help='MediaFire resource URI[s]') subparser.add_argument('--purge', help="Purge, don't send to trash", dest="purge", action="store_true", default=False) # file-update-metadata subparser = actions.add_parser('file-update-metadata', help=do_file_update_metadata.__doc__) subparser.add_argument('uri', help='MediaFire file URI') subparser.add_argument('--filename', help='Set file name', default=None, dest='filename') subparser.add_argument('--privacy', help='Set file privacy', choices=['public', 'private'], default=None, dest='privacy') subparser.add_argument('--description', help='Set file description', dest='description', default=None) subparser.add_argument('--mtime', help="Set file modification time", dest='mtime', default=None) # folder-update-metadata subparser = actions.add_parser('folder-update-metadata', help=do_folder_update_metadata.__doc__) subparser.add_argument('uri', help='MediaFire folder URI') subparser.add_argument('--foldername', help='Set folder name', default=None, dest='foldername') subparser.add_argument('--privacy', help='Set folder privacy', choices=['public', 'private'], default=None, dest='privacy') subparser.add_argument('--recursive', help='Set privacy recursively', action='store_true', default=None, dest='recursive') subparser.add_argument('--description', help='Set folder description', dest='description', default=None) subparser.add_argument('--mtime', help='Set folder mtime', default=None, dest='mtime') # debug-get-resource subparser = actions.add_parser('debug-get-resource', help=do_debug_get_resource.__doc__) subparser.add_argument('uri', help='MediaFire resource URI', default='mediafire:/', nargs='?') args = parser.parse_args() if args.debug: logger = logging.getLogger() logger.setLevel(logging.DEBUG) logging.getLogger("mediafire.client").setLevel(logging.DEBUG) client = MediaFireClient() if args.email and args.password: client.login(args.email, args.password, app_id=APP_ID) router = { "file-upload": do_file_upload, "file-download": do_file_download, "file-show": do_file_show, "ls": do_ls, 'folder-download': do_folder_download, "folder-create": do_folder_create, "resource-delete": do_resource_delete, "file-update-metadata": do_file_update_metadata, "folder-update-metadata": do_folder_update_metadata, "debug-get-resource": do_debug_get_resource } if args.action in router: result = router[args.action](client, args) if not result: sys.exit(1) else: print('Unsupported action: {}'.format(args.action)) sys.exit(1)
def __get_client(self, user, password): client = MediaFireClient() client.login(email=user, password=password, app_id='42511') return client
#!/usr/bin/env python3 from mediafire.client import (MediaFireClient, File, Folder) client = MediaFireClient() client.login(app_id='45211') client.download_file("mf:/i547ewwpknmh41l","thing")
def createfolder(foldername): client = MediaFireClient() client.login( email='*****@*****.**', password='******', app_id='42511') client.create_folder('/'+foldername)
import subprocess import time from django.conf import settings from celery import group, chord, chain from celery.decorators import task from PIL import Image import requests from mediafire.client import MediaFireClient, File, Folder from .utils import url2filename, extract_images_url from .models import Manga, Volume, Chapter client = MediaFireClient() client.login(email=settings.MEDIAFIRE_EMAIL, password=settings.MEDIAFIRE_PASSWORD, app_id='42511') UPLOAD_FOLDER = settings.MEDIAFIRE_FOLDER # https://stackoverflow.com/questions/31784484/how-to-parallelized-file-downloads logging.basicConfig(level=logging.INFO, format='%(asctime)s %(message)s') def download(chapter_id, index, path, url): filename = url2filename(url, chapter_id, index) logging.debug('downloading %s', filename) r = requests.get(url, stream=True) if r.status_code == 200: with open(os.path.join(path, filename), 'wb') as f: for chunk in r: f.write(chunk)
#!/usr/bin/python3 import os import logging logging.basicConfig() logging.getLogger().setLevel(logging.DEBUG) from mediafire.client import MediaFireClient APP_ID = '42511' MEDIAFIRE_EMAIL = os.environ['MEDIAFIRE_EMAIL'] MEDIAFIRE_PASSWORD = os.environ['MEDIAFIRE_PASSWORD'] client = MediaFireClient() client.login(app_id=APP_ID, email=MEDIAFIRE_EMAIL, password=MEDIAFIRE_PASSWORD) print("Use 'client' object to interact with MediaFireClient")