Metadata viewing should work with calibre-companion now (#79)

This commit is contained in:
OzzieIsaacs 2017-01-09 21:18:49 +01:00
parent 6cf82dc9b9
commit c6d1c186f0
2 changed files with 61 additions and 0 deletions

49
cps/templates/json.txt Normal file
View File

@ -0,0 +1,49 @@
{
"pubdate": "{{entry.pubdate}}",
"title": "{{entry.title}}",
"format_metadata": {
{% for format in entry.data %}
"{{format.format}}": {
"mtime": "{{entry.last_modified}}",
"size": {{format.uncompressed_size}},
"path": "/mnt/share/Data/alte_ebooks/Cornelia Ziegler/111 Orte auf Kreta die man gesehen haben muss (391)/111 Orte auf Kreta die man gesehen haben m - Cornelia Ziegler.epub"
}{% if not loop.last %},{% endif %}
{% endfor %}
},
"formats": [
{% for format in entry.data %}
"{{format.format}}"{% if not loop.last %},{% endif %}
{% endfor %}
],
"series": null,
"cover": "/opds/cover/{{entry.id}}",
"languages": [
{% for lang in entry.languages %}
"{{lang.lang_code}}"{% if not loop.last %},{% endif %}
{% endfor %}
],
"comments": "{% if entry.comments|length > 0 %}{{entry.comments[0].text|safe}}{% endif %}",
"tags": [
{% for tag in entry.tags %}
"{{tag.name}}"{% if not loop.last %},{% endif %}
{% endfor %}
],
"application_id": {{entry.id}},
"series_index": {% if entry.series|length > 0 %}"{{entry.series_index}}"{% else %}null{% endif %},
"last_modified": "{{entry.last_modified}}",
"author_sort": "{{entry.author_sort}}",
"uuid": "{{entry.uuid}}",
"timestamp": "{{entry.timestamp}}",
"thumbnail": "/opds/cover/{{entry.id}}",
"main_format": {
"epub": "/get/epub/391"
},
"rating": 0.0,
"authors": [
{% for author in entry.authors %}
"{{author.name}}"{% if not loop.last %},{% endif %}
{% endfor %}
],
"other_formats": {},
"title_sort": "{{entry.sort}}"
}

View File

@ -664,6 +664,17 @@ def get_opds_download_link(book_id, format):
response.headers["Content-Disposition"] = "attachment; filename=%s.%s" % (data.name, format)
return response
@app.route("/ajax/book/<string:uuid>")
@login_required_if_no_ano
def get_metadata_calibre_companion(uuid):
entry = db.session.query(db.Books).filter(db.Books.uuid.like("%"+uuid+"%")).first()
if entry is not None :
js = render_template('json.txt',entry=entry)
response = make_response(js)
response.headers["Content-Type"] = "application/json"
return response
else:
return ""
@app.route("/get_authors_json", methods=['GET', 'POST'])
@login_required_if_no_ano
@ -1064,6 +1075,7 @@ def get_cover(cover_path):
return send_from_directory(os.path.join(config.DB_ROOT, cover_path), "cover.jpg")
@app.route("/opds/thumb_240_240/<path:book_id>")
@app.route("/opds/cover_240_240/<path:book_id>")
@app.route("/opds/cover_90_90/<path:book_id>")
@app.route("/opds/cover/<path:book_id>")
@requires_basic_auth_if_no_ano