mirror of
https://github.com/janeczku/calibre-web
synced 2024-11-25 02:57:22 +00:00
Made stream download for normal download as well as odds
This commit is contained in:
parent
9466228c85
commit
e4a27be1a9
28
cps/web.py
28
cps/web.py
@ -764,10 +764,7 @@ def partial(total_byte_len, part_size_limit):
|
|||||||
def do_gdrive_download(df, headers):
|
def do_gdrive_download(df, headers):
|
||||||
startTime=time.time()
|
startTime=time.time()
|
||||||
total_size = int(df.metadata.get('fileSize'))
|
total_size = int(df.metadata.get('fileSize'))
|
||||||
app.logger.info (time.time()-startTime)
|
|
||||||
app.logger.info(total_size)
|
|
||||||
download_url = df.metadata.get('downloadUrl')
|
download_url = df.metadata.get('downloadUrl')
|
||||||
app.logger.info (time.time()-startTime)
|
|
||||||
s = partial(total_size, 1024 * 1024) # I'm downloading BIG files, so 100M chunk size is fine for me
|
s = partial(total_size, 1024 * 1024) # I'm downloading BIG files, so 100M chunk size is fine for me
|
||||||
def stream():
|
def stream():
|
||||||
for bytes in s:
|
for bytes in s:
|
||||||
@ -801,16 +798,11 @@ def get_opds_download_link(book_id, format):
|
|||||||
startTime=time.time()
|
startTime=time.time()
|
||||||
if config.config_use_google_drive:
|
if config.config_use_google_drive:
|
||||||
df=gdriveutils.getFileFromEbooksFolder(Gdrive.Instance().drive, book.path, data.name + "." + format)
|
df=gdriveutils.getFileFromEbooksFolder(Gdrive.Instance().drive, book.path, data.name + "." + format)
|
||||||
app.logger.info (time.time()-startTime)
|
|
||||||
#download_url = df.metadata.get('downloadUrl')
|
|
||||||
#resp, content = df.auth.Get_Http_Object().request(download_url)
|
|
||||||
#io.BytesIO(content)
|
|
||||||
#response=send_file(io.BytesIO(content))
|
|
||||||
return do_gdrive_download(df, headers)
|
return do_gdrive_download(df, headers)
|
||||||
else:
|
else:
|
||||||
# file_name = helper.get_valid_filename(file_name)
|
# file_name = helper.get_valid_filename(file_name)
|
||||||
response = make_response(send_from_directory(os.path.join(config.config_calibre_dir, book.path), data.name + "." + format))
|
response = make_response(send_from_directory(os.path.join(config.config_calibre_dir, book.path), data.name + "." + format))
|
||||||
response.headers["Content-Disposition"] = "attachment; filename*=UTF-8''%s.%s" % (urllib.quote(file_name.encode('utf8')), format)
|
response.headers=headers
|
||||||
return response
|
return response
|
||||||
|
|
||||||
|
|
||||||
@ -1602,18 +1594,18 @@ def get_download_link(book_id, format):
|
|||||||
if len(book.authors) > 0:
|
if len(book.authors) > 0:
|
||||||
file_name = book.authors[0].name + '-' + file_name
|
file_name = book.authors[0].name + '-' + file_name
|
||||||
file_name = helper.get_valid_filename(file_name)
|
file_name = helper.get_valid_filename(file_name)
|
||||||
if config.config_use_google_drive:
|
headers={}
|
||||||
df=gdriveutils.getFileFromEbooksFolder(Gdrive.Instance().drive, book.path, '%s.%s' % (data.name, format))
|
|
||||||
download_url = df.metadata.get('downloadUrl')
|
|
||||||
resp, content = df.auth.Get_Http_Object().request(download_url)
|
|
||||||
response=send_file(io.BytesIO(content))
|
|
||||||
else:
|
|
||||||
response = make_response(send_from_directory(os.path.join(config.config_calibre_dir, book.path), data.name + "." + format))
|
|
||||||
try:
|
try:
|
||||||
response.headers["Content-Type"] = mimetypes.types_map['.' + format]
|
headers["Content-Type"] = mimetypes.types_map['.' + format]
|
||||||
except:
|
except:
|
||||||
pass
|
pass
|
||||||
response.headers["Content-Disposition"] = "attachment; filename*=UTF-8''%s.%s" % (urllib.quote(file_name.encode('utf-8')), format)
|
headers["Content-Disposition"] = "attachment; filename*=UTF-8''%s.%s" % (urllib.quote(file_name.encode('utf-8')), format)
|
||||||
|
if config.config_use_google_drive:
|
||||||
|
df=gdriveutils.getFileFromEbooksFolder(Gdrive.Instance().drive, book.path, '%s.%s' % (data.name, format))
|
||||||
|
return do_gdrive_download(df, headers)
|
||||||
|
else:
|
||||||
|
response = make_response(send_from_directory(os.path.join(config.config_calibre_dir, book.path), data.name + "." + format))
|
||||||
|
response.headers=headers
|
||||||
return response
|
return response
|
||||||
else:
|
else:
|
||||||
abort(404)
|
abort(404)
|
||||||
|
Loading…
Reference in New Issue
Block a user