- Fixed download with anonymous user in opds feed
- Added mor filetypes to opds feed, if unknown filetype, nothing is published instead of mobi
This commit is contained in:
OzzieIsaacs 2017-01-15 11:05:28 +01:00
parent 4fb3a84b4d
commit 99430fc98e
2 changed files with 17 additions and 8 deletions

View File

@ -58,11 +58,19 @@
<link rel="http://opds-spec.org/acquisition" href="{{ url_for('get_opds_download_link', book_id=entry.id, format=format.format|lower)}}" <link rel="http://opds-spec.org/acquisition" href="{{ url_for('get_opds_download_link', book_id=entry.id, format=format.format|lower)}}"
length="{{format.uncompressed_size}}" mtime="{{entry.timestamp}}" length="{{format.uncompressed_size}}" mtime="{{entry.timestamp}}"
{% if format.format|lower == "epub" %} {% if format.format|lower == "epub" %}
type="application/epub+zip"/> type="application/epub+zip"/>
{% elif format.format|lower == "cbr" %} {% elif format.format|lower == "cbr" %}
type="application/x-cbr"/> type="application/x-cbr"/>
{% else %} {% elif format.format|lower == "mobi" %}
type="application/x-mobipocket-ebook"/> type="application/x-mobipocket-ebook"/>
{% elif format.format|lower == "pdf" %}
type="application/pdf"/>
{% elif format.format|lower == "rtf" %}
type="text/rtf"/>
{% elif format.format|lower == "txt" %}
type="text/plain"/>
{% elif format.format|lower == "doc" %}
type="application/msword"/>
{% endif %} {% endif %}
{% endfor %} {% endfor %}
</entry> </entry>

View File

@ -608,25 +608,26 @@ def feed_series(id):
return response return response
@app.route("/opds/download/<int:book_id>/<format>") @app.route("/opds/download/<book_id>/<format>/")
@requires_basic_auth_if_no_ano @requires_basic_auth_if_no_ano
@download_required @download_required
def get_opds_download_link(book_id, format): def get_opds_download_link(book_id, format):
format = format.split(".")[0] format = format.split(".")[0]
book = db.session.query(db.Books).filter(db.Books.id == book_id).first() book = db.session.query(db.Books).filter(db.Books.id == book_id).first()
data = db.session.query(db.Data).filter(db.Data.book == book.id).filter(db.Data.format == format.upper()).first() data = db.session.query(db.Data).filter(db.Data.book == book.id).filter(db.Data.format == format.upper()).first()
helper.update_download(book_id, int(current_user.id)) if current_user.is_authenticated:
helper.update_download(book_id, int(current_user.id))
author = helper.get_normalized_author(book.author_sort) author = helper.get_normalized_author(book.author_sort)
file_name = book.title file_name = book.title
if len(author) > 0: if len(author) > 0:
file_name = author + '-' + file_name file_name = author + '-' + file_name
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.DB_ROOT, book.path), data.name + "." + format)) response = make_response(send_from_directory(os.path.join(config.DB_ROOT, book.path), data.name + "." + format))
response.headers["Content-Disposition"] = "attachment; filename=%s.%s" % (data.name, format) response.headers["Content-Disposition"] = "attachment; filename=\"%s.%s\"" % (data.name, format)
return response return response
@app.route("/ajax/book/<string:uuid>") @app.route("/ajax/book/<string:uuid>")
@login_required_if_no_ano @requires_basic_auth_if_no_ano
def get_metadata_calibre_companion(uuid): def get_metadata_calibre_companion(uuid):
entry = db.session.query(db.Books).filter(db.Books.uuid.like("%"+uuid+"%")).first() entry = db.session.query(db.Books).filter(db.Books.uuid.like("%"+uuid+"%")).first()
if entry is not None : if entry is not None :