.oO SearXNG Developer Documentation Oo.
Loading...
Searching...
No Matches
searx.engines.senscritique Namespace Reference

Functions

dict[str, Any] request (str query, dict[str, Any] params)
 
EngineResults response (resp)
 
MainResult|None parse_item (dict[str, Any] item)
 
list[str] build_content_parts (dict[str, Any] item, str title, Optional[str] original_title)
 

Variables

dict about
 
list categories = ['movies']
 
bool paging = True
 
int page_size = 16
 
str graphql_url = 'https://apollo.senscritique.com/'
 
str graphql_query
 

Detailed Description

SensCritique (movies)

Function Documentation

◆ build_content_parts()

list[str] searx.engines.senscritique.build_content_parts ( dict[str, Any] item,
str title,
Optional[str] original_title )
Build the content parts for an item

Definition at line 121 of file senscritique.py.

121def build_content_parts(item: dict[str, Any], title: str, original_title: Optional[str]) -> list[str]:
122 """Build the content parts for an item"""
123 content_parts = []
124
125 if item.get('category'):
126 content_parts.append(item['category'])
127
128 if original_title and original_title != title:
129 content_parts.append(f"Original title: {original_title}")
130
131 if item.get('directors'):
132 directors = [director['name'] for director in item['directors']]
133 content_parts.append(f"Director(s): {', '.join(directors)}")
134
135 if item.get('countries'):
136 countries = [country['name'] for country in item['countries']]
137 content_parts.append(f"Country: {', '.join(countries)}")
138
139 if item.get('genresInfos'):
140 genres = [genre['label'] for genre in item['genresInfos']]
141 content_parts.append(f"Genre(s): {', '.join(genres)}")
142
143 if item.get('duration'):
144 minutes = item['duration'] // 60
145 if minutes > 0:
146 content_parts.append(f"Duration: {minutes} min")
147
148 if item.get('rating') and item.get('stats', {}).get('ratingCount'):
149 content_parts.append(f"Rating: {item['rating']}/10 ({item['stats']['ratingCount']} votes)")
150
151 return content_parts

Referenced by parse_item().

+ Here is the caller graph for this function:

◆ parse_item()

MainResult | None searx.engines.senscritique.parse_item ( dict[str, Any] item)
Parse a single item from the SensCritique API response

Definition at line 98 of file senscritique.py.

98def parse_item(item: dict[str, Any]) -> MainResult | None:
99 """Parse a single item from the SensCritique API response"""
100 title = item.get('title', '')
101 if not title:
102 return None
103 year = item.get('yearOfProduction')
104 original_title = item.get('originalTitle')
105
106 thumbnail: str = ""
107 if item.get('medias', {}) and item['medias'].get('picture'):
108 thumbnail = item['medias']['picture']
109
110 content_parts = build_content_parts(item, title, original_title)
111 url = f"https://www.senscritique.com{item['url']}"
112
113 return MainResult(
114 url=url,
115 title=title + (f' ({year})' if year else ''),
116 content=' | '.join(content_parts),
117 thumbnail=thumbnail,
118 )
119
120

References build_content_parts().

Referenced by response().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ request()

dict[str, Any] searx.engines.senscritique.request ( str query,
dict[str, Any] params )

Definition at line 64 of file senscritique.py.

64def request(query: str, params: dict[str, Any]) -> dict[str, Any]:
65 offset = (params['pageno'] - 1) * page_size
66
67 data = {
68 "operationName": "SearchProductExplorer",
69 "variables": {"offset": offset, "limit": page_size, "query": query, "sortBy": "RELEVANCE"},
70 "query": graphql_query,
71 }
72
73 params['url'] = graphql_url
74 params['method'] = 'POST'
75 params['headers']['Content-Type'] = 'application/json'
76 params['data'] = dumps(data)
77
78 return params
79
80

◆ response()

EngineResults searx.engines.senscritique.response ( resp)

Definition at line 81 of file senscritique.py.

81def response(resp) -> EngineResults:
82 res = EngineResults()
83 response_data = loads(resp.text)
84
85 items = response_data.get('data', {}).get('searchProductExplorer', {}).get('items', [])
86 if not items:
87 return res
88
89 for item in items:
90 result = parse_item(item)
91 if not result:
92 continue
93 res.add(result=result)
94
95 return res
96
97

References parse_item().

+ Here is the call graph for this function:

Variable Documentation

◆ about

dict searx.engines.senscritique.about
Initial value:
1= {
2 "website": 'https://www.senscritique.com/',
3 "wikidata_id": 'Q16676060',
4 "official_api_documentation": None,
5 "use_official_api": False,
6 "require_api_key": False,
7 "results": 'JSON',
8 'language': 'fr',
9}

Definition at line 10 of file senscritique.py.

◆ categories

list searx.engines.senscritique.categories = ['movies']

Definition at line 20 of file senscritique.py.

◆ graphql_query

str searx.engines.senscritique.graphql_query

Definition at line 25 of file senscritique.py.

◆ graphql_url

str searx.engines.senscritique.graphql_url = 'https://apollo.senscritique.com/'

Definition at line 23 of file senscritique.py.

◆ page_size

int searx.engines.senscritique.page_size = 16

Definition at line 22 of file senscritique.py.

◆ paging

bool searx.engines.senscritique.paging = True

Definition at line 21 of file senscritique.py.