forked from XPUB/XPPL
You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
68 lines
2.3 KiB
Python
68 lines
2.3 KiB
Python
|
|
|
|
# #https://gist.github.com/mjlavin80/186a6395c5819dbe25a8a0e001d5acfd
|
|
from flask import request
|
|
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-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
|
|
}
|
|
|
|
base_url = "https://hypothes.is/api/search?user=xpub@hypothes.is"
|
|
|
|
search_url = "".join([base_url])
|
|
|
|
r = requests.get(search_url, headers=headers)
|
|
#data is a python dictionary
|
|
data = json.loads(r.text)
|
|
|
|
# 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'], 'url':item['uri']}
|
|
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'], 'url':item['uri']}
|
|
res.append(data)
|
|
return res
|
|
|
|
def get_annot_book(annot,name):
|
|
res=[]
|
|
server = request.host
|
|
for item in annot['rows']:
|
|
if 'selector' in item['target'][0]:
|
|
if len(item['target'][0]['selector'])>2:
|
|
string=item['uri']
|
|
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']}
|
|
res.append(data)
|
|
else:
|
|
string=item['uri']
|
|
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']}
|
|
res.append(data)
|
|
return res
|
|
|
|
|
|
|