Merge branch 'master' of git.xpub.nl:/var/www/git.xpub.nl/repos/xpub-lib

master
Alex 7 years ago
commit 28301aa037

@ -1,17 +1,7 @@
# #https://gist.github.com/mjlavin80/186a6395c5819dbe25a8a0e001d5acfd # #https://gist.github.com/mjlavin80/186a6395c5819dbe25a8a0e001d5acfd
# import requests from flask import request
# import json
# # This script demonstrates how to query annotations for a particular URL using the hypothes.is API. An API key is required.
# # The end result of this script is a Python dictionary with annotation data in it. Top save to csv or other format, further parsing would be required
# def get_annotations():
import requests import requests
import json import json
@ -58,16 +48,17 @@ def get_annot_results(annot,name):
def get_annot_book(annot,name): def get_annot_book(annot,name):
res=[] res=[]
server = request.host
for item in annot['rows']: for item in annot['rows']:
if 'selector' in item['target'][0]: if 'selector' in item['target'][0]:
if len(item['target'][0]['selector'])>2: if len(item['target'][0]['selector'])>2:
string=item['uri'] string=item['uri']
if name==string.replace('http://localhost:8080/uploads/',''): if name==string.replace('http://' + server+'/uploads/',''):
data={'text': item['text'],'extract':item['target'][0]['selector'][2]['exact'],'title':item['document']['title'], 'url':item['uri']} data={'text': item['text'],'extract':item['target'][0]['selector'][2]['exact'],'title':item['document']['title'], 'url':item['uri']}
res.append(data) res.append(data)
else: else:
string=item['uri'] string=item['uri']
if name==string.replace('http://localhost:8080/uploads/',''): if name==string.replace('http://' + server+'/uploads/',''):
data={'text': item['text'],'extract':item['target'][0]['selector'][1]['exact'],'title':item['document']['title'], 'url':item['uri']} data={'text': item['text'],'extract':item['target'][0]['selector'][1]['exact'],'title':item['document']['title'], 'url':item['uri']}
res.append(data) res.append(data)
return res return res

@ -176,6 +176,64 @@ background-color:red;
color: #fafafa; color: #fafafa;
} }
.ui-autocomplete {
position: absolute;
top: 100%;
left: 0;
z-index: 1000;
float: left;
display: none;
min-width: 160px;
padding: 4px 0;
margin: 0 0 10px 25px;
list-style: none;
background-color: #ffffff;
border-color: #ccc;
border-color: rgba(0, 0, 0, 0.2);
border-style: solid;
border-width: 1px;
-webkit-border-radius: 5px;
-moz-border-radius: 5px;
border-radius: 5px;
-webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);
-moz-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);
box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);
-webkit-background-clip: padding-box;
-moz-background-clip: padding;
background-clip: padding-box;
*border-right-width: 2px;
*border-bottom-width: 2px;
}
.ui-menu-item > a.ui-corner-all {
display: block;
padding: 3px 15px;
clear: both;
font-weight: normal;
line-height: 18px;
color: #555555;
white-space: nowrap;
text-decoration: none;
}
.ui-menu-item {
margin: 3px 15px;
}
.ui-state-hover, .ui-state-active {
color: #ffffff;
text-decoration: none;
background-color: #0088cc;
border-radius: 0px;
-webkit-border-radius: 0px;
-moz-border-radius: 0px;
background-image: none;
}
.ui-helper-hidden-accessible {
display: none;
}
.footer{ .footer{
@ -489,4 +547,4 @@ nav { font-size: .7em }
@page { size: A5; margin: 1cm } @page { size: A5; margin: 1cm }
@media print { @media print {
nav { display: none } nav { display: none }
} }

@ -13,7 +13,7 @@ This digital library gathers all the books and articles floating around on the s
It starts at XPUB, but can go anywhere we want it to. It starts at XPUB, but can go anywhere we want it to.
<br> <br>
<br> <br>
Are you interested in how this library works? Have a look at the source code in <a href 'https://git.xpub.nl/xpub-lib/log.html'> our git. </a> Are you interested in how this library works? Have a look at the source code in <a href= 'https://git.xpub.nl/xpub-lib/log.html'> our git. </a>
</p> </p>
<h2> What's the deal with the stacks? </h2> <h2> What's the deal with the stacks? </h2>
<p class='about'> <p class='about'>

@ -15,7 +15,6 @@
<script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script> <script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script>
<![endif]--> <![endif]-->
<link rel="stylesheet" href="/static/css/style.css"> <link rel="stylesheet" href="/static/css/style.css">
<link rel="stylesheet" href="/static/js/jquery-ui-1.12.1.custom/jquery-ui.css">
{% block css %} {% endblock%} {% block css %} {% endblock%}
</head> </head>
<body> <body>

@ -26,6 +26,7 @@ Feel free to browse our catalogue, interfaced in many different ways.
</form> </form>
</div> </div>
{%endif%} {%endif%}
{{ chat.message }}
<div id="app" class="container"> <div id="app" class="container">
<div class="messageback1"></div> <div class="messageback1"></div>

@ -6,12 +6,12 @@
<form style="float:left;" action="/search_annot" method="GET"> <form style="float:left;" action="/search_annot" method="GET">
<div style="float:left;" class="search"> <div style="float:left;" class="search">
<input type="text" name="query" value="{{name}}"> <input type="text" name="query" value="">
</div> </div>
<input style="background-color: grey; color:white; font-family: archivo narrow; font-size: 18px; border: none;padding: 8px 24px;" type="submit" value="browse annotations"></input> <input style="background-color: grey; color:white; font-family: archivo narrow; font-size: 18px; border: none;padding: 8px 24px;" type="submit" value="browse annotations"></input>
</form> </form>
<br><br><br> <br><br><br>
<!-- <a href="{{ url_for('mybook_pdf')}}" style="color:#ff3300;">Get as PDF</a> -->&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="annotations" style="color:#ff3300;"> All annotations</a><br><br> <a href="annotations" style="color:#ff3300;"> All annotations</a><br><br>
<h1 class="header">Annotations/ Extracts with:&nbsp;&nbsp;<i>{{name}}</i></h1> <h1 class="header">Annotations/ Extracts with:&nbsp;&nbsp;<i>{{name}}</i></h1>
@ -52,4 +52,4 @@
{% endblock %} {% endblock %}

@ -109,9 +109,9 @@
<br><br> <br><br>
{%endif%} {%endif%}
{%if res %}
<div style="padding-bottom:20px;"> <div style="padding-bottom:20px;">
<p>Annotations for <i>{{book.title}}</i>:</p> <h2>Annotations for <i>{{book.title}}</i>:</h4>
{% for row in res%} {% for row in res%}
<hr> <hr>
<p style="font-family:archivo narrow;font-size:10px;">Extract</p> <p style="font-family:archivo narrow;font-size:10px;">Extract</p>
@ -128,6 +128,8 @@
{% endif %} {% endif %}
{% endfor %} {% endfor %}
{%else%}<div style="padding-bottom:50px;"><i> No annotations yet for this book </i></div>
{%endif%}
</div> </div>
<hr> <hr>
{% if previousbook %} {% if previousbook %}
@ -137,8 +139,4 @@
</div> </div>
{% endblock %} {% endblock %}

@ -111,14 +111,14 @@ def annotations():
# id = book.id # id = book.id
annot = get_annotations() annot = get_annotations()
print(annot) print(annot)
return render_template('annotations.html', annot=annot, books=books) return render_template('annotations.html', annot=annot, books=books, light=light)
# PDF from annotations # PDF from annotations
@app.route('/annotations.pdf') @app.route('/annotations.pdf')
def annotations_pdf(): def annotations_pdf():
annot = get_annotations() annot = get_annotations()
# Make a PDF straight from HTML in a string. # Make a PDF straight from HTML in a string.
html = render_template(('annotations.html'), annot=annot) html = render_template(('annotations.html'), annot=annot, light=light)
return render_pdf(HTML(string=html)) return render_pdf(HTML(string=html))
@app.route('/viewpdf/<filename>') @app.route('/viewpdf/<filename>')
@ -136,7 +136,7 @@ def get_updates():
allbooks = db.session.query(Book).all() allbooks = db.session.query(Book).all()
id = len(allbooks) id = len(allbooks)
latest_upload = allbooks[-1] latest_upload = allbooks[-1]
return "This is the XPPL ~ Library XPUB ~ Updates / / / / / / / Last viewed: " + userin.info + " / / / / / / / " + str(len(allbooks)) + " Books online "+ " / / / / / / / " + "Latest upload: " + latest_upload.title return "This is the XPPL ~ Library XPUB ~ Updates / / / / / / / Last viewed: " + userin.info + " / / / / / / / " + str(len(allbooks)) + " Books online "+ " / / / / / / / " + "Latest entry: " + latest_upload.title
@app.route('/scape', methods=['POST', 'GET']) @app.route('/scape', methods=['POST', 'GET'])
def scape(): def scape():
@ -204,7 +204,7 @@ def show_book_by_id(id):
if not book: if not book:
return render_template('red_link.html', id=id, light=light) return render_template('red_link.html', id=id, light=light)
else: else:
return render_template('show_book_detail.html', book=book, previousbook = previousbook, nextbook = nextbook, all_instances=all_instances, name=name, annot=annot, res=res) return render_template('show_book_detail.html', book=book, previousbook = previousbook, nextbook = nextbook, all_instances=all_instances, name=name, annot=annot, res=res, light=light)
@ -763,7 +763,7 @@ def import_csv():
name, file_extension = os.path.splitext(row['file']) name, file_extension = os.path.splitext(row['file'])
print ('get_cover', fullpath, name) print ('get_cover', fullpath, name)
cover = get_cover(fullpath, name) cover = get_cover(fullpath, name)
file = str(id) + "_" + row['file'] file = row['file']
if row['year_published']: if row['year_published']:
year_published = int(row['year_published']) year_published = int(row['year_published'])

Loading…
Cancel
Save