Commit Graph
100 Commits
Author SHA1 Message Date
Alexandre Flament e67dfaaac7 Merge branch 'master' into flask_perimeter 2017-01-27 13:47:59 +00:00
Alexandre Flament 15eef0ebdb [enh] validate input and raise an exception inside search.py. The exception message is output in json and rss format. 2017-01-20 18:52:47 +01:00
Alexandre Flament 7fdfeca3a4 [mod] add a __common__ template that can't be selected but that provides a common place for shared templates.
What has been moved into this template :
* opensearch*.xml is always the same whatever the themes.
* the text inside */about.html
2017-01-20 15:40:38 +01:00
Alexandre Flament 7a16aca346 Merge branch 'master' into flask_perimeter 2017-01-15 22:18:20 +01:00
Alexandre Flament 448903cd4a [fix] searching for "!google_images text" doesn't work (bang with underscore) 2017-01-12 16:17:29 +01:00
Dalf 06bea82935 [mod] /config API : add language_support, paging, safesearch, supported_languages, time_range_support, timeout fields. 2017-01-07 14:42:55 +01:00
Alexandre Flament 0af50e8505 Remove pyasn1-modules from dependencies
According to https://github.com/kennethreitz/requests/issues/749#issuecomment-19187417 there is no need to install pyasn1-modules.
2017-01-06 17:23:54 +01:00
Alexandre Flament 369ec017b7 [enh] standalone_seax.py is a command line interface to searx with JSON output. 2017-01-04 14:14:01 +01:00
Alexandre Flament 6db25fc5c2 [mod] ./manage.sh can download geckodriver and install it into the virtual environment 2017-01-03 19:25:04 +01:00
Alexandre Flament 7bcdc27a2e [fix] fix standalone_search.py 2017-01-03 19:15:55 +01:00
Alexandre Flament 20c94592e7 [mod] upgrade versions in requirements.txt 2017-01-02 14:11:48 +01:00
Alexandre Flament 84a2c97a65 [mod] searx uses flask framework only in webapp.py. Make migration to another framework easier. 2017-01-02 12:06:04 +01:00
Alexandre Flament 90e1db3e5c [fix] extract_text: use html.tostring instead html_to_text. Fix #711 2016-12-31 13:56:09 +01:00
Alexandre Flament 5a9551925d [fix] fix bugs introduced by commit 0a2fde19d0 from dalf/searchpy4 2016-12-30 18:10:14 +01:00
Alexandre Flament 28d51fd063 [mod] timeout in log are readable (the timeouts are compare to the start_time of the request). 2016-12-30 17:37:46 +01:00
Alexandre Flament 3a8ab5880a [mod] result_container.extend sets result['engine'] = engine_name for each result 2016-12-30 17:18:02 +01:00
Alexandre Flament 0a2fde19d0 [mod] add a search_one_request_safe function wrapper to call search_one_request. All exceptions are catched in this wrapper. 2016-12-30 11:51:49 +01:00
Alexandre Flament e48f07a367 Merge branch 'master' into searchpy2 2016-12-09 23:11:45 +01:00
Alexandre Flament 219f047bf3 Merge branch 'master' into searchpy2 2016-11-06 09:44:07 +01:00
Alexandre Flament 01e2648e93 Simplify search.py, basically updated PR #518
The timeouts in settings.yml is about the total time (not only the HTTP request but also the prepare the request and parsing the response)
It was more or less the case before since the threaded_requests function ignores the thread after the timeout even the HTTP request is ended.

New / changed stats :
* page_load_time : record the HTTP request time
* page_load_count: the number of HTTP request
* engine_time : the execution total time of an engine
* engine_time_count : the number of "engine_time" measure

The avg response times in the preferences are the engine response time (engine_load_time / engine_load_count)

To sum up :
* Search.search() filters the engines that can't process the request
* Search.search() call search_multiple_requests function
* search_multiple_requests creates one thread per engine, each thread runs the search_one_request function
* search_one_request calls the request function, make the HTTP request, calls the response function, extends the result_container
* search_multiple_requests waits for the the thread to finish (or timeout)
2016-11-05 13:45:20 +01:00
Alexandre Flament 58a6c045c8 [mod] replace references request.request_data (GET or POST parameters) by request.form (based on merge of POST and GET parameters) 2016-11-02 14:52:22 +01:00
dalf fbb080f358 Change plugin API :
- pre_search(request, search)
- post_search(request, search)
- on_result(request, search, result)

with
- request is the Flask request
- search a searx.Search instance
- result a searx result as usual
2016-11-02 14:22:16 +01:00
dalf 67e11c42b9 Clean up the architecture
Purposes :
- isolate the plugins calls
- distinction between parsing the web request and running the search (Search class). To be able to test code easily, to run searx code outside a web server, to filter the search query parameters with plugins more easily, etc...

Details :
- request.request_data contains request.form or request.args (initialize inside pre_request() function)
- Query class is renamed RawTextQuery
- SearchQuery class defines all search parameters
- get_search_query_from_webapp create a SearchQuery instance (basically the previous Search.__init__ code)
- Search class and SearchWithPlugins class takes a SearchQuery instance as class constructor parameter
- SearchWithPlugins class inherites from Search class, and run plugins
- A dedicated function search_with_plugins executes plugins to have a well define locals() (which is used by the plugins code).
- All plugins code is executed inside the try...except block (webapp.py, index function)
- advanced_search HTTP parameter value stays in webapp.py (it is only part of UI)
- multiple calls to result_container.get_ordered_results() doesn't compute the order multiple time (note : this method was call only once before)
- paging value is stored in the result_container class (compute in the extend method)
- test about engine.suspend_end_time is done during search method call (instead of __init__)
- check that the format parameter value is one of these : html, rss, json, rss (before the html value was assumed but some text formatting wasn't not done)
2016-11-02 14:22:16 +01:00
dalf 3e7554422b [mod] the environment variable SEARX_DEBUG can override the general.debug value in settings.yml 2016-10-22 21:36:13 +02:00
dalf 972f32d973 [fix] ixquick : fetch results from ixquick.eu instead of ixquick.com, close #727 2016-10-22 20:56:18 +02:00
Alexandre Flament a88768efd8 Merge branch 'master' into http1.1 2016-10-22 14:25:50 +02:00
Alexandre Flament 5b21a7fb65 Merge branch 'master' into opensearch_shortname 2016-10-16 20:03:14 +02:00
dalf cae84e71a5 [fix] seeks URLS, close #731 2016-10-15 18:43:03 +02:00
Alexandre Flament bd4d904002 [mod] remove the kickass engine from settings.yml 2016-07-25 16:00:05 +02:00
Alexandre Flament e655e44133 [fix] close #637 : the search box doesn't overlap the menu. 2016-07-25 15:45:58 +02:00
Alexandre Flament 34835b77e2 [fix] Close #640 : remove MapQuest maps. Add in comment maps.wikimedia.org maps, see https://www.mediawiki.org/wiki/Maps 2016-07-25 15:28:25 +02:00
Alexandre Flament 6ab91515df [enh] autocompletion : add qwant 2016-03-02 19:54:06 +08:00
Alexandre Flament 250777e8a7 Merge pull request #493 from cy8aer/cy8aer
Dockerfile : bug fixes. 
Perhaps "COPY requirements.txt ./requirements.txt" is unnecessary but it doesn't hurt (instead of "COPY requirements.txt .")
2016-02-06 20:26:57 +08:00
Dalf 21332a3e52 update dependency versions described by versions.cfg 2015-06-26 17:44:51 +02:00
Alexandre Flament 1b77befe1f Merge pull request #367 from glogiotatidis/dockerfileupdate
Update Dockerfile.
2015-06-10 19:09:57 +02:00
Dalf ded3f98218 www1x engine: remove comment about unavailable https (https is working now) 2015-06-06 19:44:41 +02:00
Dalf 9e147d91f0 bing_images & www1x engines use https connections 2015-06-06 19:23:07 +02:00
Dalf fc0ae0f907 google engine: code cleanup 2015-06-06 00:18:00 +02:00
Dalf 72c8de35a2 google engine :remove OSM map 2015-06-05 23:56:23 +02:00
Alexandre Flament b8fc531b60 [enh] google engine : parse map links and more 2015-06-05 11:23:24 +02:00
Dalf dafedbfc55 youtube_noapi uses searx.utils.list_get 2015-06-04 18:34:44 +02:00
Dalf 62cc2a5658 [fix] bing_news based on RSS output format 2015-06-04 18:30:08 +02:00
Dalf 4e0f079a8c [fix] youtube_noapi : don't crash when there is no content 2015-06-03 10:12:30 +02:00
Dalf 9d10277c22 remove 'print' 2015-06-02 10:50:49 +02:00
Alexandre Flament fb4df9d6c3 Merge pull request #349 from Cqoicebordel/startpage_autocomplete
Add startpage as an autocompleter engine
2015-06-02 10:43:10 +02:00
Alexandre Flament 39ff21237c [enh] google engine : avoid some "sorry google" by adding another cookie : NID. This cookie is specific by hostname.
This allow to send request to google.* (according to the search language).
Before this commit, request in other languages than english was sent to www.google.com which was redirected to www.google.*
The PREF is still use on the www.google.com domain.
2015-05-30 17:41:40 +02:00
Alexandre Flament 484d0974f7 startpage and ixquick enignes : disabled by default, and timeout set to 6 seconds. 2015-05-30 13:36:10 +02:00
Alexandre Flament 6765823c56 [fix] set engine.safesearch to False if not defined 2015-05-30 12:37:18 +02:00
Alexandre Flament d4d2dd9cb3 [enh] oscar theme: display engine response times in the preferences 2015-05-30 12:15:23 +02:00
Alexandre Flament 7afd02c94e [fix] flickr engine 2015-05-27 13:49:25 +02:00
Alexandre Flament 36a08f2a6a [fix] piratebay engine (and disable it by default) 2015-05-27 12:35:45 +02:00
Alexandre Flament 3d70921175 [fix] bing_news 2015-05-27 12:08:50 +02:00
Alexandre Flament 5525625dae [enh] currency_convert engine: user can write "1 dollars in euros" instead of "1 USD in EUR".
The currency names are fetched wikidata and store into a static file : searx/data/currencies.json
This file is loaded when the currency_converter is loaded.
A database is perhaps more appropiated.
2015-05-12 20:52:08 +02:00
Alexandre Flament 44ed4424f6 [fix] yahoo_news engine 2015-05-03 13:41:36 +02:00
Alexandre Flament 48cffb141b [fix] twitter engine 2015-05-02 18:20:12 +02:00
Alexandre Flament 4689fe341c update versions.cfg to use the current up-to-date packages 2015-05-02 15:45:17 +02:00
Alexandre Flament 59ee040424 [fix] remove a useless print 2015-05-02 15:28:08 +02:00
Alexandre Flament 65e6737413 [fix] google engine tests 2015-05-02 13:21:01 +02:00
Alexandre Flament 732ed952dc [fix] 1x.com tests 2015-05-02 13:09:18 +02:00
Alexandre Flament e7fd546aae [fix] revert of 1x.com (no valid https certificate) 2015-05-02 13:02:42 +02:00
Alexandre Flament 6cd9a045f8 [fix] flickr engine 2015-05-02 12:36:49 +02:00
Alexandre Flament f5d3b21566 [fix] user agent : the "rv:{version}" was missing (can be a issue with some engine, like flickr) 2015-05-02 12:35:57 +02:00
Alexandre Flament 78edc16e66 [enh] reduce the number of http outgoing connections.
engines that still use http : gigablast, bing image for thumbnails, 1x and dbpedia autocompleter
2015-05-02 11:43:12 +02:00
Alexandre Flament 8a69ade875 Revert of #195 when the search language is not english
Sometimes there is two requests to google (depending of the source IP) : one to google.com, the second to google.fr (for instance).

Going to https://www.google.com/ncr and saving the PREF cookie for future use prevent this (there is no redirection).

But, recently (or not ?), by doing this the search returns English results even if the Accept-Language is specified.

There is still a way to prevent this : going to preference, set the search language. I don't know if this can be done by searx.

For now, a quick fix is to disable the use of the PREF cookie when the search language is not English (google engine will slower but returns excepted results).
2015-05-01 21:20:09 +02:00
Alexandre Flament 043b269c6e [fix] tests 2015-04-26 19:23:06 +02:00
Alexandre Flament 8806002886 Merge remote-tracking branch 'origin/ssl' into https 2015-04-26 19:12:17 +02:00
Alexandre Flament 187617498a Log an error if the ndg-httpsclient, pyopenssl and pyasn1 packages are not installed.
See #298
2015-04-26 18:58:31 +02:00
Alexandre Flament 99efd790c8 engines: use https when possible 2015-04-26 18:13:09 +02:00
Alexandre Flament 47b011829d settings.yml clean up : remove locale
locale was declared for bing* engines and vimeo.

  * bing* engines use the language settings.
  * vimeo uses neither locale nor language settings.

This avoid confusion
2015-04-26 17:35:31 +02:00
Alexandre Flament ada5993f61 [fix] #264 : implementation using Referrer Policy (Editor’s Draft, 3 March 2015)
see http://w3c.github.io/webappsec/specs/referrer-policy/
2015-04-26 15:48:48 +02:00
Alexandre Flament 77b2fbb61e [enh] implements #264 : add rel="noreferrer" to external links 2015-04-26 15:32:26 +02:00
Alexandre Flament 2be52b74ad [fix] tests 2015-04-26 12:34:09 +02:00
Alexandre Flament 201928d2b0 [fix] SSL : SNI support 2015-04-26 12:04:29 +02:00
Alexandre Flament 83e48fa89b flake8 fix 2015-04-25 12:05:35 +02:00
Alexandre Flament cde37be4f5 [enh] basic support for http proxy (see #236) 2015-04-25 11:44:53 +02:00
dalf 7cc5146c14 [fix] btdigg: disable ssl check,
avoid this error : SSLError: hostname 'btdigg.org' doesn't match either of 'ssl2000.cloudflare.com', 'cloudflare.com', '*.cloudflare.com'
2015-02-20 22:56:04 +01:00
dalf 57996b12fc [fix] update yahoo engine according to the web site changes 2015-02-20 12:34:13 +01:00
dalf 5029cb4787 [fix] close #197 for all engines 2015-02-13 11:17:00 +01:00
dalf 9d537c0bad [fix] kickass tests 2015-02-12 14:50:41 +01:00
dalf c4dd7c3a54 Merge branch 'master' of https://github.com/dalf/searx 2015-02-12 14:33:28 +01:00
dalf 9db0bbc304 [fix] kickass engine : change the hostname to kickass.to (since kickass.so doesn't respond).
Close #197 perhaps not in clean way. Explanation :
In fact 301 responses are followed, except the hook is called for each HTTP response,
the first time for the HTTP 301 response then for HTTP 200 response.
Since the kickass engine excepts a real result, the engine crashes, AND the requests lib stops here.
Add a simple test at the beginning of the result function allows pass the first response and handle correctly the second response (the real one)

May be a proper way is to add this test in search.py ?

Code inside requests :
https://github.com/kennethreitz/requests/blob/53d02381e22436b6d0757eb305eb1a960f82d361/requests/sessions.py#L579
and line 591
2015-02-12 14:30:03 +01:00
dalf 1cf870c024 [fix] kickass engine : change the hostname to kickass.to (since kickass.so doesn't respond).
Close #197 perhaps not in clean way. Explaination :
In fact 301 responses are followed, except the hook is called for each HTTP response,
the first time for the HTTP 301 response then for HTTP 200 response.
Since the kickass engine excepts a real result, the engine crashes, AND the requests lib stops here.
Add a simple test at the begining of the result function allows pass the first response and handle correctly the second response (the real one)

May be a proper way is to add this test in search.py ?

Code inside requests :
https://github.com/kennethreitz/requests/blob/53d02381e22436b6d0757eb305eb1a960f82d361/requests/sessions.py#L579
and line 591
2015-02-12 12:30:03 +01:00
dalf 0a83be0ec9 [fix] google engine: depending on the IP of the searx instance, each searx request where making two HTTP requests (see https://support.google.com/websearch/answer/873?hl=en ) 2015-01-22 11:40:28 +01:00
dalf d07cfd9089 [enh] use one single http connection pool : improve response time. close #100 2015-01-21 11:33:16 +01:00
dalf 1d51512152 Proxify most of images references
Create hash only when necessary
2015-01-18 09:54:24 +01:00
dalf 9154cf7930 Proxify images inside infoboxes 2015-01-17 22:36:48 +01:00
dalf b6d27aca59 [enh] image-proxy : handle ETag and date related headers, add hash to URL 2015-01-17 21:54:40 +01:00
dalf 7c13d630e4 [fix] pep8 : engines (errors E121, E127, E128 and E501 still exist) 2014-12-07 16:37:56 +01:00
dalf ffcec383b7 [fix] pep8 : duckduckgo_definitions and wikidata engines 2014-12-07 16:36:20 +01:00
dalf 8534d8b87a [fix] test : the icon is included inside the <h3> element 2014-10-26 12:01:54 +01:00
dalf a71b326d9e [mod] default template modifications
- more smartphone friendly
- more text browser friendly
- next button always on the right
- in case of small screen supporting touch event, categories are displayed on one line with a scroll
2014-10-26 11:14:05 +01:00
dalf be4d219ae7 [mod] use pngcrush to reduce the size of png files 2014-10-25 17:07:39 +02:00
dalf 400279182e [fix] no horizontal scrolling on small screen
[fix] small images in the results aren't not "zoomed"
2014-10-25 17:05:37 +02:00
dalf cac1761a54 [enh] infoboxes : if the result doesn't contain anything except one link, use the normal result template 2014-10-11 15:49:50 +02:00
dalf 295b1699ce [mod] return only one result from the wikidata engine 2014-10-11 12:47:30 +02:00
dalf 599c1137bb [fix] the bang was included in the search string 2014-10-11 12:46:12 +02:00
dalf 63a0328c8b [enh] wikidata engine : add links to musicbrainz 2014-10-02 23:40:06 +02:00
dalf 728fc611da [fix] infoboxes and answers : pass all tests 2014-10-01 22:46:31 +02:00
dalf 829c758970 Merge remote-tracking branch 'upstream/master' 2014-10-01 22:25:11 +02:00
Dalf 0a71525ab6 [enh] add infoboxes and answers (clean up) 2014-10-01 22:17:35 +02:00