54 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
		
		
			
		
	
	
			54 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
| 
								 | 
							
								# SPDX-License-Identifier: AGPL-3.0-or-later
							 | 
						||
| 
								 | 
							
								"""
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								 Creative Commons search engine (Images)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								"""
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								from json import loads
							 | 
						||
| 
								 | 
							
								from urllib.parse import urlencode
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								about = {
							 | 
						||
| 
								 | 
							
								    "website": 'https://search.creativecommons.org/',
							 | 
						||
| 
								 | 
							
								    "wikidata_id": None,
							 | 
						||
| 
								 | 
							
								    "official_api_documentation": 'https://api.creativecommons.engineering/v1/',
							 | 
						||
| 
								 | 
							
								    "use_official_api": True,
							 | 
						||
| 
								 | 
							
								    "require_api_key": False,
							 | 
						||
| 
								 | 
							
								    "results": 'JSON',
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								categories = ['images']
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								paging = True
							 | 
						||
| 
								 | 
							
								nb_per_page = 20
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								base_url = 'https://api.creativecommons.engineering/v1/images?'
							 | 
						||
| 
								 | 
							
								search_string = '&page={page}&page_size={nb_per_page}&format=json&{query}'
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								def request(query, params):
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    search_path = search_string.format(
							 | 
						||
| 
								 | 
							
								        query=urlencode({'q': query}),
							 | 
						||
| 
								 | 
							
								        nb_per_page=nb_per_page,
							 | 
						||
| 
								 | 
							
								        page=params['pageno'])
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    params['url'] = base_url + search_path
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    return params
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								def response(resp):
							 | 
						||
| 
								 | 
							
								    results = []
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    json_data = loads(resp.text)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    for result in json_data['results']:
							 | 
						||
| 
								 | 
							
								        results.append({'url': result['foreign_landing_url'],
							 | 
						||
| 
								 | 
							
								                        'title': result['title'],
							 | 
						||
| 
								 | 
							
								                        'img_src': result['url'],
							 | 
						||
| 
								 | 
							
								                        'template': 'images.html'})
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    return results
							 |