

# #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



