forked from zaclys/searxng
		
	[enh] infoboxes : if the result doesn't contain anything except one link, use the normal result template
This commit is contained in:
		
							parent
							
								
									295b1699ce
								
							
						
					
					
						commit
						cac1761a54
					
				
					 2 changed files with 58 additions and 29 deletions
				
			
		|  | @ -116,15 +116,22 @@ def response(resp): | ||||||
| 
 | 
 | ||||||
|     if len(heading)>0: |     if len(heading)>0: | ||||||
|         # TODO get infobox.meta.value where .label='article_title' |         # TODO get infobox.meta.value where .label='article_title' | ||||||
|         results.append({ |         if image==None and len(attributes)==0 and len(urls)==1 and len(relatedTopics)==0 and len(content)==0: | ||||||
|                'infobox': heading, |             results.append({ | ||||||
|                'id': infobox_id, |                     'url': urls[0]['url'], | ||||||
|                'entity': entity, |                     'title': heading, | ||||||
|                'content': content, |                     'content': content | ||||||
|                'img_src' : image, |                     }) | ||||||
|                'attributes': attributes, |         else: | ||||||
|                'urls': urls, |             results.append({ | ||||||
|                'relatedTopics': relatedTopics |                     'infobox': heading, | ||||||
|                }) |                     'id': infobox_id, | ||||||
|  |                     'entity': entity, | ||||||
|  |                     'content': content, | ||||||
|  |                     'img_src' : image, | ||||||
|  |                     'attributes': attributes, | ||||||
|  |                     'urls': urls, | ||||||
|  |                     'relatedTopics': relatedTopics | ||||||
|  |                     }) | ||||||
| 
 | 
 | ||||||
|     return results |     return results | ||||||
|  |  | ||||||
|  | @ -33,17 +33,20 @@ def response(resp): | ||||||
|     return results |     return results | ||||||
| 
 | 
 | ||||||
| def getDetail(jsonresponse, wikidata_id, language): | def getDetail(jsonresponse, wikidata_id, language): | ||||||
|     result = jsonresponse.get('entities', {}).get(wikidata_id, {}) |  | ||||||
| 
 |  | ||||||
|     title = result.get('labels', {}).get(language, {}).get('value', None) |  | ||||||
|     if title == None: |  | ||||||
|         title = result.get('labels', {}).get('en', {}).get('value', wikidata_id) |  | ||||||
|     results = [] |     results = [] | ||||||
|     urls = [] |     urls = [] | ||||||
|     attributes = [] |     attributes = [] | ||||||
| 
 | 
 | ||||||
|     description = result.get('descriptions', {}).get(language, {}).get('value', '') |     result = jsonresponse.get('entities', {}).get(wikidata_id, {}) | ||||||
|     if description == '': | 
 | ||||||
|  |     title = result.get('labels', {}).get(language, {}).get('value', None) | ||||||
|  |     if title == None: | ||||||
|  |         title = result.get('labels', {}).get('en', {}).get('value', None) | ||||||
|  |     if title == None: | ||||||
|  |         return results | ||||||
|  | 
 | ||||||
|  |     description = result.get('descriptions', {}).get(language, {}).get('value', None) | ||||||
|  |     if description == None: | ||||||
|         description = result.get('descriptions', {}).get('en', {}).get('value', '') |         description = result.get('descriptions', {}).get('en', {}).get('value', '') | ||||||
| 
 | 
 | ||||||
|     claims = result.get('claims', {}) |     claims = result.get('claims', {}) | ||||||
|  | @ -52,11 +55,16 @@ def getDetail(jsonresponse, wikidata_id, language): | ||||||
|         urls.append({ 'title' : 'Official site', 'url': official_website }) |         urls.append({ 'title' : 'Official site', 'url': official_website }) | ||||||
|         results.append({ 'title': title, 'url' : official_website }) |         results.append({ 'title': title, 'url' : official_website }) | ||||||
| 
 | 
 | ||||||
|  |     wikipedia_link_count = 0 | ||||||
|     if language != 'en': |     if language != 'en': | ||||||
|         add_url(urls, 'Wikipedia (' + language + ')', get_wikilink(result, language + 'wiki')) |         wikipedia_link_count += add_url(urls, 'Wikipedia (' + language + ')', get_wikilink(result, language + 'wiki')) | ||||||
|     wikipedia_en_link = get_wikilink(result, 'enwiki') |     wikipedia_en_link = get_wikilink(result, 'enwiki') | ||||||
|     add_url(urls, 'Wikipedia (en)', wikipedia_en_link) |     wikipedia_link_count += add_url(urls, 'Wikipedia (en)', wikipedia_en_link) | ||||||
| 
 |     if wikipedia_link_count == 0: | ||||||
|  |         misc_language = get_wiki_firstlanguage(result, 'wiki') | ||||||
|  |         if misc_language != None: | ||||||
|  |             add_url(urls, 'Wikipedia (' + misc_language + ')', get_wikilink(result, misc_language + 'wiki')) | ||||||
|  |          | ||||||
|     if language != 'en': |     if language != 'en': | ||||||
|         add_url(urls, 'Wiki voyage (' + language + ')', get_wikilink(result, language + 'wikivoyage')) |         add_url(urls, 'Wiki voyage (' + language + ')', get_wikilink(result, language + 'wikivoyage')) | ||||||
|     add_url(urls, 'Wiki voyage (en)', get_wikilink(result, 'enwikivoyage')) |     add_url(urls, 'Wiki voyage (en)', get_wikilink(result, 'enwikivoyage')) | ||||||
|  | @ -105,14 +113,20 @@ def getDetail(jsonresponse, wikidata_id, language): | ||||||
|     if date_of_death != None: |     if date_of_death != None: | ||||||
|         attributes.append({'label' : 'Date of death', 'value' : date_of_death}) |         attributes.append({'label' : 'Date of death', 'value' : date_of_death}) | ||||||
| 
 | 
 | ||||||
| 
 |     if len(attributes)==0 and len(urls)==2 and len(description)==0: | ||||||
|     results.append({ |         results.append({ | ||||||
|             'infobox' : title, |                 'url': urls[0]['url'], | ||||||
|             'id' : wikipedia_en_link, |                 'title': title, | ||||||
|             'content' : description, |                 'content': description | ||||||
|             'attributes' : attributes, |                 }) | ||||||
|             'urls' : urls |     else: | ||||||
|             }) |         results.append({ | ||||||
|  |                 'infobox' : title, | ||||||
|  |                 'id' : wikipedia_en_link, | ||||||
|  |                 'content' : description, | ||||||
|  |                 'attributes' : attributes, | ||||||
|  |                 'urls' : urls | ||||||
|  |                 }) | ||||||
| 
 | 
 | ||||||
|     return results |     return results | ||||||
| 
 | 
 | ||||||
|  | @ -120,7 +134,9 @@ def getDetail(jsonresponse, wikidata_id, language): | ||||||
| def add_url(urls, title, url): | def add_url(urls, title, url): | ||||||
|     if url != None: |     if url != None: | ||||||
|         urls.append({'title' : title, 'url' : url}) |         urls.append({'title' : title, 'url' : url}) | ||||||
| 
 |         return 1 | ||||||
|  |     else: | ||||||
|  |         return 0 | ||||||
| 
 | 
 | ||||||
| def get_mainsnak(claims, propertyName): | def get_mainsnak(claims, propertyName): | ||||||
|     propValue = claims.get(propertyName, {}) |     propValue = claims.get(propertyName, {}) | ||||||
|  | @ -213,3 +229,9 @@ def get_wikilink(result, wikiid): | ||||||
|     elif url.startswith('//'): |     elif url.startswith('//'): | ||||||
|         url = 'https:' + url |         url = 'https:' + url | ||||||
|     return url |     return url | ||||||
|  | 
 | ||||||
|  | def get_wiki_firstlanguage(result, wikipatternid): | ||||||
|  |     for k in result.get('sitelinks', {}).keys(): | ||||||
|  |         if k.endswith(wikipatternid) and len(k)==(2+len(wikipatternid)): | ||||||
|  |             return k[0:2] | ||||||
|  |     return None | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		
		Reference in a new issue
	
	 dalf
						dalf