예제 #1
0
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
예제 #2
0
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
예제 #3
0
파일: client.py 프로젝트: Naveengnn/one
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
예제 #4
0
 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
예제 #5
0
    def test_upload_target_parent_folder_does_not_exist(self):
        source = '/tmp/k.txt'
        dest_uri = 'mf:/c/k.txt'

        def mock_get_resource_by_uri(uri):
            if uri == dest_uri:
                raise ResourceNotFoundError(uri)
            elif uri == 'mf:/c':
                raise ResourceNotFoundError(uri)

        client = MediaFireClient()
        client.get_resource_by_uri = mock_get_resource_by_uri

        with self.assertRaises(ResourceNotFoundError):
            client._prepare_upload_info(source, dest_uri)
예제 #6
0
    def test_upload_fh_to_folder(self):
        source = io.BytesIO(b"blah")
        dest_uri = 'mf:/g/'

        def mock_get_resource_by_uri(uri):
            if uri == dest_uri:
                return Folder({
                    'folderkey': 'i' * 13,
                    'name': 'g'
                })

        client = MediaFireClient()
        client.get_resource_by_uri = mock_get_resource_by_uri

        with self.assertRaises(ValueError):
            client._prepare_upload_info(source, dest_uri)
예제 #7
0
    def test_upload_target_file_parent_folder_is_file(self):
        source = '/tmp/m.txt'
        dest_uri = 'mf:/e/m.txt'

        def mock_get_resource_by_uri(uri):
            if uri == dest_uri:
                raise ResourceNotFoundError(uri)
            elif uri == 'mf:/e':
                return File({
                    'quickkey': 'f' * 15,
                    'filename': 'e'
                })

        client = MediaFireClient()
        client.get_resource_by_uri = mock_get_resource_by_uri

        with self.assertRaises(NotAFolderError):
            client._prepare_upload_info(source, dest_uri)
예제 #8
0
    def test_existing_file_overwrite(self):
        source = "/tmp/f.txt"
        dest_uri = "mf:/a/f.txt"
        folder_key = 'a' * 13
        quick_key = 'b' * 15

        def mock_get_resource_by_uri(uri):
            if uri == dest_uri:
                return File({
                    'parent_folderkey': folder_key,
                    'quickkey': quick_key,
                    'filename': 'f.txt'
                })

        client = MediaFireClient()
        client.get_resource_by_uri = mock_get_resource_by_uri

        result_folder_key, result_name = client._prepare_upload_info(source,
                                                                     dest_uri)
        self.assertEqual(result_name, 'f.txt')
        self.assertEqual(result_folder_key, folder_key)
예제 #9
0
    def test_upload_to_folder(self):
        source = '/tmp/j.txt'
        dest_uri = 'mf:/b/'

        folder_key = 'c' * 13

        def mock_get_resource_by_uri(uri):
            if uri == dest_uri:
                return Folder({
                    'folderkey': folder_key,
                    'name': 'a'
                })
            elif uri == 'mf:/b/j.txt':
                raise ResourceNotFoundError()

        client = MediaFireClient()
        client.get_resource_by_uri = mock_get_resource_by_uri

        result_folder_key, result_name = client._prepare_upload_info(source,
                                                                     dest_uri)
        self.assertEqual(result_name, 'j.txt')
        self.assertEqual(result_folder_key, folder_key)
예제 #10
0
    def test_upload_fh_existing_overwrite(self):
        source = io.BytesIO(b"blah")
        dest_uri = 'mf:/f/m.txt'
        quick_key = 'j' * 15
        folder_key = 'h' * 13

        def mock_get_resource_by_uri(uri):
            if uri == dest_uri:
                return File({
                    'quickkey': quick_key,
                    'filename': 'm.txt',
                    'parent_folderkey': folder_key
                })

        client = MediaFireClient()
        client.get_resource_by_uri = mock_get_resource_by_uri

        result_folder_key, result_name = client._prepare_upload_info(source,
                                                                     dest_uri)

        self.assertEqual(result_name, 'm.txt')
        self.assertEqual(result_folder_key, folder_key)
예제 #11
0
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
예제 #12
0
    def test_upload_to_folder_target_name_is_folder(self):
        source = '/tmp/j.txt'
        dest_uri = 'mf:/b/'

        folder_key = 'd' * 13

        def mock_get_resource_by_uri(uri):
            if uri == dest_uri:
                return Folder({
                    'folderkey': folder_key,
                    'name': 'b'
                })
            elif uri == 'mf:/b/j.txt':
                return Folder({
                    'folderkey': 'e' * 13,
                    'name': 'j.txt'
                })

        client = MediaFireClient()
        client.get_resource_by_uri = mock_get_resource_by_uri

        with self.assertRaises(ValueError):
            client._prepare_upload_info(source, dest_uri)
예제 #13
0
    def test_upload_target_file_doest_not_exist(self):
        source = '/tmp/l.txt'
        dest_uri = 'mf:/d/l.txt'

        folder_key = 'e' * 13

        def mock_get_resource_by_uri(uri):
            if uri == dest_uri:
                raise ResourceNotFoundError(uri)
            elif uri == 'mf:/d':
                return Folder({
                    'folderkey': folder_key,
                    'name': 'd'
                })

        client = MediaFireClient()
        client.get_resource_by_uri = mock_get_resource_by_uri

        result_folder_key, result_name = client._prepare_upload_info(source,
                                                                     dest_uri)

        self.assertEqual(result_name, 'l.txt')
        self.assertEqual(result_folder_key, folder_key)
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)
예제 #15
0
def createfolder(foldername):
    client = MediaFireClient()
    client.login( email='*****@*****.**',
        password='******',
        app_id='42511')
    client.create_folder('/'+foldername)
 def __get_client(self, user, password):
     client = MediaFireClient()
     client.login(email=user, password=password, app_id='42511')
     return client
예제 #17
0
파일: getit.py 프로젝트: ewa/sims-package
#!/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 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
 def setUp(self):
     # we can operate w/o login
     self.client = MediaFireClient(_api=DummyMediaFireApi)