This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<pid="module-searx.engines.json_engine">The JSON engine is a <em>generic</em> engine with which it is possible to configure
engines in the settings.</p>
<sectionid="configuration">
<h2><aclass="toc-backref"href="#id1"role="doc-backlink">Configuration</a><aclass="headerlink"href="#configuration"title="Link to this heading">¶</a></h2>
<h2><aclass="toc-backref"href="#id2"role="doc-backlink">Example</a><aclass="headerlink"href="#example"title="Link to this heading">¶</a></h2>
<p>Here is a simple example of a JSON engine configure in the <aclass="reference internal"href="../../admin/settings/settings_engine.html#settings-engine"><spanclass="std std-ref">engine:</span></a> section, further read <aclass="reference internal"href="engine_overview.html#engines-dev"><spanclass="std std-ref">Engine Overview</span></a>.</p>
<h2><aclass="toc-backref"href="#id3"role="doc-backlink">Implementations</a><aclass="headerlink"href="#implementations"title="Link to this heading">¶</a></h2>
<spanclass="sig-prename descclassname"><spanclass="pre">searx.engines.json_engine.</span></span><spanclass="sig-name descname"><spanclass="pre">search_url</span></span><emclass="property"><spanclass="w"></span><spanclass="p"><spanclass="pre">=</span></span><spanclass="w"></span><spanclass="pre">None</span></em><aclass="headerlink"href="#searx.engines.json_engine.search_url"title="Link to this definition">¶</a></dt>
replacement is taken from the <codeclass="xref py py-obj docutils literal notranslate"><spanclass="pre">safes_search_map</span></code>. Filter results:</p>
<spanclass="sig-prename descclassname"><spanclass="pre">searx.engines.json_engine.</span></span><spanclass="sig-name descname"><spanclass="pre">lang_all</span></span><emclass="property"><spanclass="w"></span><spanclass="p"><spanclass="pre">=</span></span><spanclass="w"></span><spanclass="pre">'en'</span></em><aclass="headerlink"href="#searx.engines.json_engine.lang_all"title="Link to this definition">¶</a></dt>
<dd><p>Replacement <codeclass="docutils literal notranslate"><spanclass="pre">{lang}</span></code> in <aclass="reference internal"href="#searx.engines.json_engine.search_url"title="searx.engines.json_engine.search_url"><codeclass="xref py py-obj docutils literal notranslate"><spanclass="pre">search_url</span></code></a> if language <codeclass="docutils literal notranslate"><spanclass="pre">all</span></code> is
<spanclass="sig-prename descclassname"><spanclass="pre">searx.engines.json_engine.</span></span><spanclass="sig-name descname"><spanclass="pre">no_result_for_http_status</span></span><emclass="property"><spanclass="w"></span><spanclass="p"><spanclass="pre">=</span></span><spanclass="w"></span><spanclass="pre">[]</span></em><aclass="headerlink"href="#searx.engines.json_engine.no_result_for_http_status"title="Link to this definition">¶</a></dt>
<dd><p>Return empty result for these HTTP status codes instead of throwing an error.</p>
<spanclass="sig-prename descclassname"><spanclass="pre">searx.engines.json_engine.</span></span><spanclass="sig-name descname"><spanclass="pre">soft_max_redirects</span></span><emclass="property"><spanclass="w"></span><spanclass="p"><spanclass="pre">=</span></span><spanclass="w"></span><spanclass="pre">0</span></em><aclass="headerlink"href="#searx.engines.json_engine.soft_max_redirects"title="Link to this definition">¶</a></dt>
<dd><p>Maximum redirects, soft limit. Record an error but don’t stop the engine</p>
<spanclass="sig-prename descclassname"><spanclass="pre">searx.engines.json_engine.</span></span><spanclass="sig-name descname"><spanclass="pre">method</span></span><emclass="property"><spanclass="w"></span><spanclass="p"><spanclass="pre">=</span></span><spanclass="w"></span><spanclass="pre">'GET'</span></em><aclass="headerlink"href="#searx.engines.json_engine.method"title="Link to this definition">¶</a></dt>
<dd><p>Some engines might require to do POST requests for search.</p>
<spanclass="sig-prename descclassname"><spanclass="pre">searx.engines.json_engine.</span></span><spanclass="sig-name descname"><spanclass="pre">request_body</span></span><emclass="property"><spanclass="w"></span><spanclass="p"><spanclass="pre">=</span></span><spanclass="w"></span><spanclass="pre">''</span></em><aclass="headerlink"href="#searx.engines.json_engine.request_body"title="Link to this definition">¶</a></dt>
<dd><p>The body of the request. This can only be used if different <aclass="reference internal"href="#searx.engines.json_engine.method"title="searx.engines.json_engine.method"><codeclass="xref py py-obj docutils literal notranslate"><spanclass="pre">method</span></code></a>
is set, e.g. <codeclass="docutils literal notranslate"><spanclass="pre">POST</span></code>. For formatting see the documentation of <aclass="reference internal"href="#searx.engines.json_engine.search_url"title="searx.engines.json_engine.search_url"><codeclass="xref py py-obj docutils literal notranslate"><spanclass="pre">search_url</span></code></a>.</p>
<p>Note: Curly brackets which aren’t encapsulating a replacement placeholder
must be escaped by doubling each <codeclass="docutils literal notranslate"><spanclass="pre">{</span></code> and <codeclass="docutils literal notranslate"><spanclass="pre">}</span></code>.</p>
<spanclass="sig-prename descclassname"><spanclass="pre">searx.engines.json_engine.</span></span><spanclass="sig-name descname"><spanclass="pre">cookies</span></span><emclass="property"><spanclass="w"></span><spanclass="p"><spanclass="pre">=</span></span><spanclass="w"></span><spanclass="pre">{}</span></em><aclass="headerlink"href="#searx.engines.json_engine.cookies"title="Link to this definition">¶</a></dt>
<dd><p>Some engines might offer different result based on cookies.
<spanclass="sig-prename descclassname"><spanclass="pre">searx.engines.json_engine.</span></span><spanclass="sig-name descname"><spanclass="pre">headers</span></span><emclass="property"><spanclass="w"></span><spanclass="p"><spanclass="pre">=</span></span><spanclass="w"></span><spanclass="pre">{}</span></em><aclass="headerlink"href="#searx.engines.json_engine.headers"title="Link to this definition">¶</a></dt>
<dd><p>Some engines might offer different result based on cookies or headers.
Possible use-case: To set safesearch cookie or header to moderate.</p>
<spanclass="sig-prename descclassname"><spanclass="pre">searx.engines.json_engine.</span></span><spanclass="sig-name descname"><spanclass="pre">paging</span></span><emclass="property"><spanclass="w"></span><spanclass="p"><spanclass="pre">=</span></span><spanclass="w"></span><spanclass="pre">False</span></em><aclass="headerlink"href="#searx.engines.json_engine.paging"title="Link to this definition">¶</a></dt>
<dd><p>Engine supports paging [True or False].</p>
<spanclass="sig-prename descclassname"><spanclass="pre">searx.engines.json_engine.</span></span><spanclass="sig-name descname"><spanclass="pre">page_size</span></span><emclass="property"><spanclass="w"></span><spanclass="p"><spanclass="pre">=</span></span><spanclass="w"></span><spanclass="pre">1</span></em><aclass="headerlink"href="#searx.engines.json_engine.page_size"title="Link to this definition">¶</a></dt>
<dd><p>Number of results on each page. Only needed if the site requires not a page
<spanclass="sig-prename descclassname"><spanclass="pre">searx.engines.json_engine.</span></span><spanclass="sig-name descname"><spanclass="pre">first_page_num</span></span><emclass="property"><spanclass="w"></span><spanclass="p"><spanclass="pre">=</span></span><spanclass="w"></span><spanclass="pre">1</span></em><aclass="headerlink"href="#searx.engines.json_engine.first_page_num"title="Link to this definition">¶</a></dt>
<dd><p>Number of the first page (usually 0 or 1).</p>
<spanclass="sig-prename descclassname"><spanclass="pre">searx.engines.json_engine.</span></span><spanclass="sig-name descname"><spanclass="pre">results_query</span></span><emclass="property"><spanclass="w"></span><spanclass="p"><spanclass="pre">=</span></span><spanclass="w"></span><spanclass="pre">''</span></em><aclass="headerlink"href="#searx.engines.json_engine.results_query"title="Link to this definition">¶</a></dt>
<dd><p>JSON query for the list of result items.</p>
<p>The query string is a slash <cite>/</cite> separated path of JSON key names.
Array entries can be specified using the index or can be omitted entirely,
in which case each entry is considered -
most implementations will default to the first entry in this case.</p>
<spanclass="sig-prename descclassname"><spanclass="pre">searx.engines.json_engine.</span></span><spanclass="sig-name descname"><spanclass="pre">url_query</span></span><emclass="property"><spanclass="w"></span><spanclass="p"><spanclass="pre">=</span></span><spanclass="w"></span><spanclass="pre">None</span></em><aclass="headerlink"href="#searx.engines.json_engine.url_query"title="Link to this definition">¶</a></dt>
<dd><p>JSON query of result’s <codeclass="docutils literal notranslate"><spanclass="pre">url</span></code>. For the query string documentation see <aclass="reference internal"href="#searx.engines.json_engine.results_query"title="searx.engines.json_engine.results_query"><codeclass="xref py py-obj docutils literal notranslate"><spanclass="pre">results_query</span></code></a></p>
<spanclass="sig-prename descclassname"><spanclass="pre">searx.engines.json_engine.</span></span><spanclass="sig-name descname"><spanclass="pre">url_prefix</span></span><emclass="property"><spanclass="w"></span><spanclass="p"><spanclass="pre">=</span></span><spanclass="w"></span><spanclass="pre">''</span></em><aclass="headerlink"href="#searx.engines.json_engine.url_prefix"title="Link to this definition">¶</a></dt>
<dd><p>String to prepend to the result’s <codeclass="docutils literal notranslate"><spanclass="pre">url</span></code>.</p>
<spanclass="sig-prename descclassname"><spanclass="pre">searx.engines.json_engine.</span></span><spanclass="sig-name descname"><spanclass="pre">title_query</span></span><emclass="property"><spanclass="w"></span><spanclass="p"><spanclass="pre">=</span></span><spanclass="w"></span><spanclass="pre">None</span></em><aclass="headerlink"href="#searx.engines.json_engine.title_query"title="Link to this definition">¶</a></dt>
<dd><p>JSON query of result’s <codeclass="docutils literal notranslate"><spanclass="pre">title</span></code>. For the query string documentation see <aclass="reference internal"href="#searx.engines.json_engine.results_query"title="searx.engines.json_engine.results_query"><codeclass="xref py py-obj docutils literal notranslate"><spanclass="pre">results_query</span></code></a></p>
<spanclass="sig-prename descclassname"><spanclass="pre">searx.engines.json_engine.</span></span><spanclass="sig-name descname"><spanclass="pre">content_query</span></span><emclass="property"><spanclass="w"></span><spanclass="p"><spanclass="pre">=</span></span><spanclass="w"></span><spanclass="pre">None</span></em><aclass="headerlink"href="#searx.engines.json_engine.content_query"title="Link to this definition">¶</a></dt>
<dd><p>JSON query of result’s <codeclass="docutils literal notranslate"><spanclass="pre">content</span></code>. For the query string documentation see <aclass="reference internal"href="#searx.engines.json_engine.results_query"title="searx.engines.json_engine.results_query"><codeclass="xref py py-obj docutils literal notranslate"><spanclass="pre">results_query</span></code></a></p>
<spanclass="sig-prename descclassname"><spanclass="pre">searx.engines.json_engine.</span></span><spanclass="sig-name descname"><spanclass="pre">thumbnail_query</span></span><emclass="property"><spanclass="w"></span><spanclass="p"><spanclass="pre">=</span></span><spanclass="w"></span><spanclass="pre">False</span></em><aclass="headerlink"href="#searx.engines.json_engine.thumbnail_query"title="Link to this definition">¶</a></dt>
<dd><p>JSON query of result’s <codeclass="docutils literal notranslate"><spanclass="pre">thumbnail</span></code>. For the query string documentation see <aclass="reference internal"href="#searx.engines.json_engine.results_query"title="searx.engines.json_engine.results_query"><codeclass="xref py py-obj docutils literal notranslate"><spanclass="pre">results_query</span></code></a></p>
<spanclass="sig-prename descclassname"><spanclass="pre">searx.engines.json_engine.</span></span><spanclass="sig-name descname"><spanclass="pre">thumbnail_prefix</span></span><emclass="property"><spanclass="w"></span><spanclass="p"><spanclass="pre">=</span></span><spanclass="w"></span><spanclass="pre">''</span></em><aclass="headerlink"href="#searx.engines.json_engine.thumbnail_prefix"title="Link to this definition">¶</a></dt>
<dd><p>String to prepend to the result’s <codeclass="docutils literal notranslate"><spanclass="pre">thumbnail</span></code>.</p>
<spanclass="sig-prename descclassname"><spanclass="pre">searx.engines.json_engine.</span></span><spanclass="sig-name descname"><spanclass="pre">suggestion_query</span></span><emclass="property"><spanclass="w"></span><spanclass="p"><spanclass="pre">=</span></span><spanclass="w"></span><spanclass="pre">''</span></em><aclass="headerlink"href="#searx.engines.json_engine.suggestion_query"title="Link to this definition">¶</a></dt>
<dd><p>JSON query of result’s <codeclass="docutils literal notranslate"><spanclass="pre">suggestion</span></code>. For the query string documentation see <aclass="reference internal"href="#searx.engines.json_engine.results_query"title="searx.engines.json_engine.results_query"><codeclass="xref py py-obj docutils literal notranslate"><spanclass="pre">results_query</span></code></a></p>
<spanclass="sig-prename descclassname"><spanclass="pre">searx.engines.json_engine.</span></span><spanclass="sig-name descname"><spanclass="pre">title_html_to_text</span></span><emclass="property"><spanclass="w"></span><spanclass="p"><spanclass="pre">=</span></span><spanclass="w"></span><spanclass="pre">False</span></em><aclass="headerlink"href="#searx.engines.json_engine.title_html_to_text"title="Link to this definition">¶</a></dt>
<spanclass="sig-prename descclassname"><spanclass="pre">searx.engines.json_engine.</span></span><spanclass="sig-name descname"><spanclass="pre">content_html_to_text</span></span><emclass="property"><spanclass="w"></span><spanclass="p"><spanclass="pre">=</span></span><spanclass="w"></span><spanclass="pre">False</span></em><aclass="headerlink"href="#searx.engines.json_engine.content_html_to_text"title="Link to this definition">¶</a></dt>
<dd><p>Extract text from a HTML content string</p>
<spanclass="sig-prename descclassname"><spanclass="pre">searx.engines.json_engine.</span></span><spanclass="sig-name descname"><spanclass="pre">time_range_support</span></span><emclass="property"><spanclass="w"></span><spanclass="p"><spanclass="pre">=</span></span><spanclass="w"></span><spanclass="pre">False</span></em><aclass="headerlink"href="#searx.engines.json_engine.time_range_support"title="Link to this definition">¶</a></dt>
<spanclass="sig-prename descclassname"><spanclass="pre">searx.engines.json_engine.</span></span><spanclass="sig-name descname"><spanclass="pre">time_range_url</span></span><emclass="property"><spanclass="w"></span><spanclass="p"><spanclass="pre">=</span></span><spanclass="w"></span><spanclass="pre">'&hours={time_range_val}'</span></em><aclass="headerlink"href="#searx.engines.json_engine.time_range_url"title="Link to this definition">¶</a></dt>
<dd><p>Time range URL parameter in the in <aclass="reference internal"href="#searx.engines.json_engine.search_url"title="searx.engines.json_engine.search_url"><codeclass="xref py py-obj docutils literal notranslate"><spanclass="pre">search_url</span></code></a>. If no time range is
requested by the user, the URL parameter is an empty string. The
<codeclass="docutils literal notranslate"><spanclass="pre">{time_range_val}</span></code> replacement is taken from the <aclass="reference internal"href="#searx.engines.json_engine.time_range_map"title="searx.engines.json_engine.time_range_map"><codeclass="xref py py-obj docutils literal notranslate"><spanclass="pre">time_range_map</span></code></a>.</p>
<spanclass="sig-prename descclassname"><spanclass="pre">searx.engines.json_engine.</span></span><spanclass="sig-name descname"><spanclass="pre">time_range_map</span></span><emclass="property"><spanclass="w"></span><spanclass="p"><spanclass="pre">=</span></span><spanclass="w"></span><spanclass="pre">{'day':</span><spanclass="pre">24,</span><spanclass="pre">'month':</span><spanclass="pre">720,</span><spanclass="pre">'week':</span><spanclass="pre">168,</span><spanclass="pre">'year':</span><spanclass="pre">8760}</span></em><aclass="headerlink"href="#searx.engines.json_engine.time_range_map"title="Link to this definition">¶</a></dt>
<dd><p>Maps time range value from user to <codeclass="docutils literal notranslate"><spanclass="pre">{time_range_val}</span></code> in
<spanclass="sig-prename descclassname"><spanclass="pre">searx.engines.json_engine.</span></span><spanclass="sig-name descname"><spanclass="pre">safe_search_support</span></span><emclass="property"><spanclass="w"></span><spanclass="p"><spanclass="pre">=</span></span><spanclass="w"></span><spanclass="pre">False</span></em><aclass="headerlink"href="#searx.engines.json_engine.safe_search_support"title="Link to this definition">¶</a></dt>
<spanclass="sig-prename descclassname"><spanclass="pre">searx.engines.json_engine.</span></span><spanclass="sig-name descname"><spanclass="pre">safe_search_map</span></span><emclass="property"><spanclass="w"></span><spanclass="p"><spanclass="pre">=</span></span><spanclass="w"></span><spanclass="pre">{0:</span><spanclass="pre">'&filter=none',</span><spanclass="pre">1:</span><spanclass="pre">'&filter=moderate',</span><spanclass="pre">2:</span><spanclass="pre">'&filter=strict'}</span></em><aclass="headerlink"href="#searx.engines.json_engine.safe_search_map"title="Link to this definition">¶</a></dt>
<dd><p>Maps safe-search value to <codeclass="docutils literal notranslate"><spanclass="pre">{safe_search}</span></code> in <aclass="reference internal"href="#searx.engines.json_engine.search_url"title="searx.engines.json_engine.search_url"><codeclass="xref py py-obj docutils literal notranslate"><spanclass="pre">search_url</span></code></a>.</p>
<spanclass="sig-prename descclassname"><spanclass="pre">searx.engines.json_engine.</span></span><spanclass="sig-name descname"><spanclass="pre">request</span></span><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n"><spanclass="pre">query</span></span></em>, <emclass="sig-param"><spanclass="n"><spanclass="pre">params</span></span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../../_modules/searx/engines/json_engine.html#request"><spanclass="viewcode-link"><spanclass="pre">[source]</span></span></a><aclass="headerlink"href="#searx.engines.json_engine.request"title="Link to this definition">¶</a></dt>
<dd><p>Build request parameters (see <aclass="reference internal"href="engine_overview.html#engine-request"><spanclass="std std-ref">Making a Request</span></a>).</p>
<spanclass="sig-prename descclassname"><spanclass="pre">searx.engines.json_engine.</span></span><spanclass="sig-name descname"><spanclass="pre">response</span></span><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n"><spanclass="pre">resp</span></span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../../_modules/searx/engines/json_engine.html#response"><spanclass="viewcode-link"><spanclass="pre">[source]</span></span></a><aclass="headerlink"href="#searx.engines.json_engine.response"title="Link to this definition">¶</a></dt>
<dd><p>Scrap <em>results</em> from the response (see <spanclass="xref std std-ref">engine results</span>).</p>