forked from zaclys/searxng
		
	[feat] engine: implementation of chefkoch.de
This commit is contained in:
		
							parent
							
								
									c6b1a0e6e7
								
							
						
					
					
						commit
						d493ad30be
					
				
					 2 changed files with 78 additions and 0 deletions
				
			
		
							
								
								
									
										72
									
								
								searx/engines/chefkoch.py
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										72
									
								
								searx/engines/chefkoch.py
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,72 @@
 | 
			
		|||
# SPDX-License-Identifier: AGPL-3.0-or-later
 | 
			
		||||
# lint: pylint
 | 
			
		||||
"""Chefkoch is a German database of recipes.
 | 
			
		||||
"""
 | 
			
		||||
 | 
			
		||||
from datetime import datetime
 | 
			
		||||
from urllib.parse import urlencode
 | 
			
		||||
 | 
			
		||||
about = {
 | 
			
		||||
    'website': "https://www.chefkoch.de",
 | 
			
		||||
    'official_api_documentation': None,
 | 
			
		||||
    'use_official_api': False,
 | 
			
		||||
    'require_api_key': False,
 | 
			
		||||
    'results': 'JSON',
 | 
			
		||||
    'language': 'de',
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
paging = True
 | 
			
		||||
categories = []
 | 
			
		||||
 | 
			
		||||
number_of_results = 20
 | 
			
		||||
skip_premium = True
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
base_url = "https://api.chefkoch.de"
 | 
			
		||||
thumbnail_format = "crop-240x300"
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
def request(query, params):
 | 
			
		||||
    args = {'query': query, 'limit': number_of_results, 'offset': (params['pageno'] - 1) * number_of_results}
 | 
			
		||||
    params['url'] = f"{base_url}/v2/search-gateway/recipes?{urlencode(args)}"
 | 
			
		||||
    return params
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
def response(resp):
 | 
			
		||||
    results = []
 | 
			
		||||
 | 
			
		||||
    json = resp.json()
 | 
			
		||||
 | 
			
		||||
    for result in json['results']:
 | 
			
		||||
        recipe = result['recipe']
 | 
			
		||||
 | 
			
		||||
        if skip_premium and (recipe['isPremium'] or recipe['isPlus']):
 | 
			
		||||
            continue
 | 
			
		||||
 | 
			
		||||
        publishedDate = None
 | 
			
		||||
        if recipe['submissionDate']:
 | 
			
		||||
            publishedDate = datetime.strptime(result['recipe']['submissionDate'][:19], "%Y-%m-%dT%H:%M:%S")
 | 
			
		||||
 | 
			
		||||
        content = (
 | 
			
		||||
            "difficulity: "
 | 
			
		||||
            + str(recipe['difficulty'])
 | 
			
		||||
            + " / preparation time: "
 | 
			
		||||
            + str(recipe['preparationTime'])
 | 
			
		||||
            + "min / ingredient count: "
 | 
			
		||||
            + str(recipe['ingredientCount'])
 | 
			
		||||
        )
 | 
			
		||||
 | 
			
		||||
        if recipe['subtitle']:
 | 
			
		||||
            content = f"{recipe['subtitle']} / {content}"
 | 
			
		||||
 | 
			
		||||
        results.append(
 | 
			
		||||
            {
 | 
			
		||||
                'url': recipe['siteUrl'],
 | 
			
		||||
                'title': recipe['title'],
 | 
			
		||||
                'content': content,
 | 
			
		||||
                'thumbnail': recipe['previewImageUrlTemplate'].replace("<format>", thumbnail_format),
 | 
			
		||||
                'publishedDate': publishedDate,
 | 
			
		||||
            }
 | 
			
		||||
        )
 | 
			
		||||
 | 
			
		||||
    return results
 | 
			
		||||
| 
						 | 
				
			
			@ -448,6 +448,12 @@ engines:
 | 
			
		|||
    categories: images
 | 
			
		||||
    shortcut: opv
 | 
			
		||||
 | 
			
		||||
  - name: chefkoch
 | 
			
		||||
    engine: chefkoch
 | 
			
		||||
    shortcut: chef
 | 
			
		||||
    # to show premium or plus results too:
 | 
			
		||||
    # skip_premium: false
 | 
			
		||||
 | 
			
		||||
  # - name: core.ac.uk
 | 
			
		||||
  #   engine: core
 | 
			
		||||
  #   categories: science
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		
		Reference in a new issue