|
import os
|
|
import sys
|
|
import requests
|
|
from bs4 import BeautifulSoup
|
|
|
|
def Mediafire_Download(url, output=None, filename=None):
|
|
if not filename: filename = url.split('/')[-2]
|
|
if not output: output = os.path.dirname(os.path.realpath(__file__))
|
|
output_file = os.path.join(output, filename)
|
|
|
|
sess = requests.session()
|
|
sess.headers.update({"User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6)"})
|
|
|
|
try:
|
|
with requests.get(BeautifulSoup(sess.get(url).content, "html.parser").find(id="downloadButton").get("href"), stream=True) as r:
|
|
r.raise_for_status()
|
|
with open(output_file, "wb") as f:
|
|
total_length = r.headers.get('content-length')
|
|
total_length = int(total_length)
|
|
download_progress = 0
|
|
|
|
for chunk in r.iter_content(chunk_size=1024):
|
|
download_progress += len(chunk)
|
|
f.write(chunk)
|
|
sys.stdout.write(f"\r[{filename}]: {int(100 * download_progress/total_length)}% ({round(download_progress/1024/1024, 2)}mb/{round(total_length/1024/1024, 2)}mb)")
|
|
sys.stdout.flush()
|
|
sys.stdout.write("\n")
|
|
return output_file
|
|
except Exception as e:
|
|
raise RuntimeError(e) |