ange
6 years ago
10 changed files with 274 additions and 265 deletions
@ -1,38 +1,75 @@ |
|||
#https://gist.github.com/mjlavin80/186a6395c5819dbe25a8a0e001d5acfd |
|||
|
|||
|
|||
# #https://gist.github.com/mjlavin80/186a6395c5819dbe25a8a0e001d5acfd |
|||
# import requests |
|||
# 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 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(): |
|||
KEY = "6879-rwfbfodYqhBn2OK2ODnNGkzlWUa4bPCoJi2U8pgTYHg" |
|||
KEY = "6879-n8AksBoSB7kYoQ3eEwzpEr3nFQEmSp3XN-0PcKL_Sik" |
|||
# URL = "https://monoskop.org/Monoskop" |
|||
|
|||
#a dictionary containing necessary http headers |
|||
headers = { |
|||
"Host": "hypothes.is", |
|||
"Accept": "application/json", |
|||
"Authorization": "Bearer %s" % KEY |
|||
} |
|||
|
|||
headers = { |
|||
"Host": "xppl", |
|||
"Accept": "application/json", |
|||
"Content-Type": "application/json", |
|||
"Authorization": "Bearer %s" % KEY |
|||
} |
|||
base_url = "https://hypothes.is/api/search?user=xpub@hypothes.is" |
|||
|
|||
search_url = "".join("http://localhost:5000/api/search") |
|||
search_url = "".join([base_url]) |
|||
|
|||
r = requests.get(search_url, headers=headers) |
|||
data = json.loads(r.text) |
|||
return data |
|||
r = requests.get(search_url, headers=headers) |
|||
#data is a python dictionary |
|||
data = json.loads(r.text) |
|||
|
|||
# extract=[] |
|||
# for item in data['rows']: |
|||
# # if 'exact' in item['target'][0]['selector'][2]: |
|||
# if 'selector' in item['target'][0]: |
|||
# if len(item['target'][0]['selector']) > 2: |
|||
# extract.append('extract:' + (item['target'][0]['selector'][2]['exact'])) |
|||
# extract.append('annotation:' + item['text']) |
|||
# extract.append ('-----------') |
|||
# else: |
|||
# extract.append('annotation:' + item['text']) |
|||
# extract.append ('-----------') |
|||
# return extract |
|||
# r = requests.get(search_url, headers=headers) |
|||
# data = json.loads(r.text) |
|||
return data |
|||
|
|||
|
|||
def get_annot_results(annot,name): |
|||
res=[] |
|||
annot=get_annotations() |
|||
for item in annot['rows']: |
|||
if 'selector' in item['target'][0]: |
|||
if len(item['target'][0]['selector'])>2: |
|||
if name in item['text'] or name in item['target'][0]['selector'][2]['exact']: |
|||
data={'text': item['text'],'extract':item['target'][0]['selector'][2]['exact'],'title':item['document']['title']} |
|||
res.append(data) |
|||
else: |
|||
if name in item['text'] or name in item['target'][0]['selector'][1]['exact']: |
|||
data={'text': item['text'],'extract':item['target'][0]['selector'][1]['exact'],'title':item['document']['title']} |
|||
res.append(data) |
|||
return res |
|||
|
|||
def get_annot_book(annot,name): |
|||
bannot=[] |
|||
annot=get_annotations() |
|||
for item in annot['rows']: |
|||
if 'selector' in item['target'][0]: |
|||
if len(item['target'][0]['selector'])>2: |
|||
if name==item['uri']: |
|||
data={'text': item['text'],'extract':item['target'][0]['selector'][2]['exact'],'title':item['document']['title']} |
|||
bannot.append(data) |
|||
else: |
|||
if name in item['uri']: |
|||
data={'text': item['text'],'extract':item['target'][0]['selector'][1]['exact'],'title':item['document']['title']} |
|||
bannot.append(data) |
|||
return bannot |
|||
|
|||
|
|||
|
|||
|
@ -0,0 +1,56 @@ |
|||
{% extends 'base.html' %} |
|||
|
|||
{% block main %} |
|||
<br><br><br> |
|||
<!-- <nav><a href="{{ url_for('mybook_pdf') }}">Get as PDF</a></nav> --> |
|||
|
|||
<form style="float:left;" action="/search_annot" method="GET"> |
|||
Browse annotations:<br> |
|||
<div style="float:left;" class="search"> |
|||
<input type="text" name="query" value="{{name}}"> |
|||
</div> |
|||
<input type="submit" value="Submit"></input> |
|||
</form> |
|||
<br><br><br><br><br> |
|||
|
|||
<a href="/annotations" style="font-family:archivo narrow;font-size:18px; float:center;"> All</a> |
|||
|
|||
|
|||
<br><br><br><br> |
|||
{% for row in res %} |
|||
{%for book in books%} |
|||
{%if book.file == row.uri%} |
|||
<a href="books/{{book.id}}"><p align="right" style="font-family:archivo narrow;font-size:18px;">{{book.title}}</p></a><br> |
|||
{% endif %} |
|||
{% endfor %} |
|||
|
|||
<p align="right" style="font-family:archivo narrow;font-size:14px;">{{row.title}}</p><br> |
|||
|
|||
<p style="font-family:archivo narrow;font-size:8px;">Extracts:</p> |
|||
<div style="font-family:archivo narrow;font-family:archivo narrow;font-size:18px;"> |
|||
<i>"{{ row.extract }}"</i></div><br> |
|||
|
|||
<p style="font-family:archivo narrow;font-size:8px;color:#ff3300;">Annotations:</p> |
|||
{%if 'https://www.youtube.com'in row.text %} |
|||
<a style="font-family:archivo narrow;font-size:18px;color:#ff3300;" href="{{row.text}}">{{row.text}}</a><br> |
|||
<hr> |
|||
{%elif '.jpg' in row.text%} |
|||
<img src="{{row.text}}" alt="" width="400"> |
|||
<hr> |
|||
{%else%} |
|||
<div style="font-family:archivo narrow;font-size:18px;color:#ff3300;">{{row.text}}</div><br> |
|||
<hr> |
|||
{% endif %} |
|||
|
|||
|
|||
|
|||
{% endfor %} |
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
{% endblock %} |
Loading…
Reference in new issue