From 96a03a0abedffdc16ce5bab8e877d23cc053b6b4 Mon Sep 17 00:00:00 2001 From: Edward Betts Date: Mon, 7 Oct 2019 21:45:21 +0100 Subject: [PATCH] Search for wikibase for unused depicts. --- app.py | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/app.py b/app.py index a7ae69d..cb15b28 100755 --- a/app.py +++ b/app.py @@ -943,6 +943,7 @@ def depicts_lookup(): item_ids = [] hits = [] q1 = DepictsItem.query.filter(DepictsItem.label.ilike(terms + '%')) + seen = set() for item in q1: hit = { 'label': item.label, @@ -952,6 +953,7 @@ def depicts_lookup(): } item_ids.append(item.item_id) hits.append(hit) + seen.add(item.qid) cls = DepictsItemAltLabel q2 = cls.query.filter(cls.alt_label.ilike(terms + '%'), @@ -967,9 +969,31 @@ def depicts_lookup(): 'alt_label': alt.alt_label, } hits.append(hit) + seen.add(item.qid) + r = mediawiki.api_call({ + 'action': 'wbsearchentities', + 'search': terms, + 'limit': 'max', + 'language': 'en' + }) hits.sort(key=lambda hit: hit['count'], reverse=True) + for result in r.json()['search']: + if result['id'] in seen: + continue + + seen.add(result['id']) + hit = { + 'label': result['label'], + 'description': result.get('description') or None, + 'qid': result['id'], + 'count': 0, + } + if result['match']['type'] == 'alias': + hit['alt_label'] = result['match']['text'] + hits.append(hit) + ret = { 'count': q1.count() + q2.count(), 'hits': hits,