Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import urllib
- import json
- import time
- import hashlib
- import getpass
- try:
- appKey = ''
- appID = ''
- sessionKey = ''
- userEmail = ''
- userPassword = ''
- m = hashlib.sha1()
- parentFolderKeys = []
- folderKey = ''
- def login(email, password):
- m.update(email + password + appID + appKey)
- url = 'https://www.mediafire.com/api/user/get_session_token.php?email=' + email + '&password=' + password + '&application_id=' + appID + '&signature=' + m.hexdigest() + '&version=1&response_format=json'
- result = json.load(urllib.urlopen(url))
- simpleParse = json.dumps(result, sort_keys=True, indent=2)
- folderKey = ''
- if result.get('response').get('result') == 'Success':
- print 'Connected successfully!'
- return result.get('response').get('session_token')
- else:
- print 'Failed to connect to user account.'
- return None
- def getFolders(key):
- if folderKey == '':
- url = 'https://www.mediafire.com/api/folder/get_content.php?session_token=' + key + '&response_format=json'
- else:
- url = 'https://www.mediafire.com/api/folder/get_content.php?folder_key=' + folderKey + '&response_format=json'
- result = json.load(urllib.urlopen(url))
- to = len(result.get('response').get('folder_content').get('folders'))
- for i in range (0, to):
- print result.get('response').get('folder_content').get('folders')[i].get('name')
- def getFiles(key):
- if folderKey == '':
- url = 'https://www.mediafire.com/api/folder/get_content.php?session_token=' + key + '&content_type=files&response_format=json'
- else:
- url = 'https://www.mediafire.com/api/folder/get_content.php?folder_key=' + folderKey + '&content_type=files&response_format=json'
- result = json.load(urllib.urlopen(url))
- to = len(result.get('response').get('folder_content').get('files'))
- for i in range (0, to):
- print result.get('response').get('folder_content').get('files')[i].get('filename')
- def jumpInFolder(key, folderName):
- global folderKey
- if folderKey == '':
- url = 'https://www.mediafire.com/api/folder/get_content.php?session_token=' + key + '&response_format=json'
- else:
- url = 'https://www.mediafire.com/api/folder/get_content.php?folder_key=' + folderKey + '&response_format=json'
- result = json.load(urllib.urlopen(url))
- for i in range (0, to):
- currentItem = result.get('response').get('folder_content').get('folders')[i]
- #print "currentName: " + currentItem.get('name') + " Was searching for: " + folderName
- if currentItem.get('name') == folderName:
- parentFolderKeys.append(folderKey)
- folderKey = currentItem.get('folderkey')
- break
- if folderKey == '':
- print "Couldn't find a folder named: " + folderName
- def jumpBackInFolder():
- global folderKey
- if len(parentFolderKeys) > 0:
- folderKey = parentFolderKeys.pop()
- def downloadFolder(key, chunk):
- downloadList = ''
- allFiles = []
- if chunk <= 0:
- chunk = 1
- while True:
- if folderKey == '':
- url = 'https://www.mediafire.com/api/folder/get_content.php?session_token=' + key + '&chunk=' + str(chunk) + '&content_type=files&response_format=json'
- else:
- url = 'https://www.mediafire.com/api/folder/get_content.php?folder_key=' + folderKey + '&chunk=' + str(chunk) + '&content_type=files&response_format=json'
- result = json.load(urllib.urlopen(url))
- if len(result.get('response').get('folder_content').get('files')) > 0:
- chunk += 1
- allFiles.extend(result.get('response').get('folder_content').get('files'))
- else:
- break
- to = len(allFiles)
- print "Amount of files:", len(allFiles)
- print "Please wait while links are saved to the DownloadList.txt file. This may take a while if you have a lot of files.\n"
- for i in range (0, to):
- currentFileKey = allFiles[i].get('quickkey')
- url = 'https://www.mediafire.com/api/file/get_links.php?session_token=' + key + '&quick_key=' + currentFileKey + '&duration=60&response_format=json'
- result = json.load(urllib.urlopen(url))
- download = result.get('response').get('links')[0].get('direct_download')
- fileName = allFiles[i].get('filename')
- downloadList += (download + ', ' + fileName + '\n')
- print downloadList
- with open("DownloadList.txt", "w") as textFile:
- textFile.write(downloadList)
- def downloadAll():
- with open("DownloadList.txt", "r") as textFile:
- links = textFile.readlines()
- for i in range (0, len(links)):
- url = links[i].split(', ')[0]
- fileName = links[i].split(', ')[1].split('\n')[0]
- print 'URL: ' + url
- urllib.urlretrieve(url, fileName)
- print "\a",
- print "\a",
- print "\a",
- def getInput():
- return raw_input()
- text = ""
- while text != "exit":
- text = getInput()
- if text == "login":
- print 'Email: ',
- userEmail = getInput()
- userPassword = getpass.getpass()
- sessionKey = login(userEmail, userPassword)
- if text == "ls":
- print
- getFolders(sessionKey)
- print
- getFiles(sessionKey)
- if text.split(' ')[0] == "get":
- if len(text.split(' ')) > 1:
- try:
- arg = int(text.split(' ', 1)[1])
- downloadFolder(sessionKey, arg)
- downloadAll()
- except ValueError:
- downloadFolder(sessionKey, 1)
- downloadAll()
- else:
- downloadFolder(sessionKey, 1)
- downloadAll()
- if text == "go":
- downloadAll()
- if text.split(' ')[0] == "cd":
- if len(text.split(' ')) > 1:
- arg = text.split(' ', 1)[1]
- if arg == '..':
- print 'Jumping back'
- jumpBackInFolder()
- else:
- jumpInFolder(sessionKey, arg)
- else:
- print 'Syntax for cd was invalid.'
- if text == "help":
- print 'Possible commands:'
- print '\tlogin'
- print '\tls\tShows the folders first, then shows files.'
- print '\tcd [Folder Name]'
- print '\tcd ..'
- print '\tget\tDownloads all the files with a folder.'
- print '\tget [number]\tDefaults to 1. | 2 would mean to start after file 100.'
- print '\tgo\tWill download the files from the generated list of links.'
- print '\texit'
- print '\thelp'
- print
- print 'Bye!'
- except Exception as ex:
- print ex
- print "\a",
- time.sleep(0.5)
- print "\a",
- print "\a",
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement