{% localize off %}
<script type="application/json" id="interesting-references">
{
- {% for ref in book.reference_set.all %}
+ {% for ref in book.references %}
{% if ref.entity.is_interesting %}
"{{ ref.entity.uri }}": {
{% if ref.entity.lat and ref.entity.lon %}
import json
+import urllib.parse
from django.db import models
from wikidata.client import Client
WIKIDATA_IMAGE = 'P18'
WIKIDATA_COORDINATE_LOCATION = 'P625'
WIKIDATA_EARTH = 'Q2'
+ WIKIDATA_IMAGE_QUERY = './w/api.php?action=query&titles={}&format=json&prop=imageinfo&iiprop=url&iiurlwidth=240&iiurlheight=200'
uri = models.CharField(max_length=255, unique=True, db_index=True)
label = models.CharField(max_length=1024, blank=True)
self.lon = location.longitude
images = entity.getlist(client.get(self.WIKIDATA_IMAGE))
- self.images = json.dumps([
- {
+ image_data_list = []
+ for image in images:
+ image_data = {
"url": image.image_url,
"page": image.page_url,
"resolution": image.image_resolution,
- } for image in images
- ])
+ }
+
+ result = client.request(
+ self.WIKIDATA_IMAGE_QUERY.format(
+ urllib.parse.quote(image.title)
+ )
+ )
+
+ result_data = next(iter(result['query']['pages'].values()))['imageinfo'][0]
+ image_data['thumburl'] = result_data['thumburl']
+ image_data['thumbresolution'] = [
+ result_data['thumbwidth'],
+ result_data['thumbheight']
+ ]
+ image_data['responsiveUrls'] = result_data['responsiveUrls']
+
+ image_data_list.append(image_data)
+
+ self.images = json.dumps(image_data_list)
class Reference(models.Model):
$.each(ref.images, function(i, e) {
$i = $("<a target='_blank'><img></a>");
$i.attr('href', e.page);
- $('img', $i).attr('src', e.url);
+ $('img', $i).attr('src', e.thumburl || e.url);
+ if (e.thumbresolution) {
+ $('img', $i).attr('width', e.thumbresolution[0]).attr('height', e.thumbresolution[1]);
+ }
+
$("#reference-images").append($i);
})
}