Marc Abonce Seguin
ccaf6ca02c
[fix] update xpaths for new google results page
2019-12-07 16:37:24 -07:00
Adam Tauber
731e34299d
Merge pull request #1744 from dalf/optimizations
...
[mod] speed optimization
2019-12-02 13:39:58 +00:00
Adam Tauber
574cb25a16
Merge pull request #1758 from return42/ddd-fix
...
[fix] duckduckgo_definitions
2019-12-02 13:38:54 +00:00
Markus Heiser
30ad0c666d
duckduckgo_definitions: remove the debug message
...
Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2019-12-02 14:26:11 +01:00
Adam Tauber
20da8f2cbf
Merge pull request #1754 from MarcAbonce/seedpeer
...
Add Seedpeer again
2019-12-02 13:09:09 +00:00
Markus Heiser
b6d9f5aa71
[fix] duckduckgo_definition issues reported by 'manage.sh test'
...
Fix this error while travis build::
/home/travis/build/asciimoo/searx/searx/engines/duckduckgo_definitions.py:21:44: E225 missing whitespace around operator
Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2019-11-29 19:59:35 +01:00
Markus Heiser
4998e9ec85
[fix] duckduckgo_definitions - where 'AnswerType' is 'calc'
...
Do not try to get text when 'AnswerType' is 'calc'.
Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2019-11-29 19:20:14 +01:00
Markus Heiser
2aa95c16e3
[fix] soundcloud: URLs of JS sources has been moved
...
The client_id is found under (new) URL:
https://a-v2.sndcdn.com/assets/49-a0c01933-3.js
Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2019-11-29 15:05:36 +01:00
Adam Tauber
8721be2f7d
Merge pull request #1682 from Venca24/devel_mojeek
...
[fix] mojeek engine
2019-11-28 19:33:08 +00:00
Adam Tauber
789d71350d
Merge pull request #1745 from lorddavidiii/python3.8-fix
...
Fix python 3.8 compatibility
2019-11-28 19:31:59 +00:00
Adam Tauber
05033ea8d8
Merge pull request #1689 from MarcAbonce/images_fixes
...
[fix] Google Images
2019-11-26 13:20:19 +00:00
Marc Abonce Seguin
9299355570
add seedpeer again
2019-11-24 22:01:44 -07:00
Marc Abonce Seguin
d0d91fa331
update user agents
2019-11-23 19:27:49 -07:00
Marc Abonce Seguin
94ca30de1b
add a shortcut for utils/fetch_firefox_version.py in manage.sh
2019-11-23 19:26:48 -07:00
Emilien Devos
8f51430f5c
[fix] Force Google old UI with a new user agent
2019-11-22 23:01:41 +01:00
lorddavidiii
5e5ff0cbf8
webapp.py: use html.escape if cgi.escape is not available
...
- cgi.escape was removed in python 3.8
- also use html.escape in framalibre.py
2019-11-16 21:58:25 +01:00
Dalf
85b3723345
[mod] speed optimization
...
compile XPath only once
avoid redundant call to urlparse
get_locale(webapp.py): avoid useless call to request.accept_languages.best_match
2019-11-15 09:33:15 +01:00
Mathieu Brunot
e9d90d06a9
Merge branch 'master' into feature/accessibility
2019-10-29 23:53:08 +01:00
Noémi Ványi
bf24b39fce
Merge branch 'master' into corrections_fix
2019-10-24 10:39:26 +02:00
Marc Abonce Seguin
dede46a2d5
fix out of range error in tracker remover plugin
2019-10-22 23:17:00 -07:00
Marc Abonce Seguin
b0f89ed477
[fix] preserve bangs in corrections
2019-10-22 21:41:50 -07:00
Mathieu Brunot
a51b2b6c20
Merge branch 'master' into feature/accessibility
2019-10-16 19:30:02 +02:00
Noémi Ványi
5796dc60c9
fix pep 8 check
2019-10-16 15:52:48 +02:00
Noémi Ványi
a6f20caf32
add initial support for offline engines && command engine
2019-10-16 15:52:48 +02:00
Adam Tauber
3c34e0c3a7
[mod] remove cloudflare protected digbt from engines list
2019-10-16 15:35:12 +02:00
Adam Tauber
7d8fd4b95e
[fix] pep8
2019-10-16 15:32:03 +02:00
Adam Tauber
bbe4442a86
[fix] update gigablast engine
2019-10-16 15:27:37 +02:00
Adam Tauber
1057e42cfd
[fix] update digg engine
2019-10-16 15:11:42 +02:00
Adam Tauber
72459b246b
[fix] convert bytes type to string in language detection (fixes dictzone)
2019-10-16 14:52:57 +02:00
Adam Tauber
7177c9e12f
[fix] update devianart engine
2019-10-16 14:42:31 +02:00
Adam Tauber
6ca1622378
[fix] update 1x engine
2019-10-16 13:27:05 +02:00
Adam Tauber
c98a2df36d
[fix] enable paging support for arxiv engine
2019-10-16 13:12:17 +02:00
Adam Tauber
ed1c1bdb04
[fix] pep8
2019-10-14 15:09:39 +02:00
Adam Tauber
27ed31c7a2
[fix] add message to SearxParameterException - fixes #1722
2019-10-14 15:06:25 +02:00
Adam Tauber
28c75c187f
[fix] update query params sanitization - closes #722
2019-10-14 14:58:20 +02:00
Adam Tauber
07a0a50e0d
[fix] update voat xpaths - closes #1581
2019-10-14 14:25:49 +02:00
Adam Tauber
77a70fe541
[fix] update startpage engine - closes #1601
2019-10-14 14:18:41 +02:00
Adam Tauber
3d0c22c58d
[fix] normalize time range parameter
2019-10-14 14:18:02 +02:00
Adam Tauber
94ea9d6622
[fix] duckduckgo paging - closes #1677
2019-10-14 13:52:15 +02:00
mathieu.brunot
4d17d453bf
♿ Add aria labels for oscar buttons
...
Signed-off-by: mathieu.brunot <mathieu.brunot@monogramm.io>
2019-10-14 01:36:11 +02:00
Marc Abonce Seguin
bb4d223770
[fix] google images
2019-08-26 21:54:01 -07:00
Venca24
07d0250241
[fix] mojeek engine
2019-08-20 16:10:25 +02:00
Dalf
6fbba63c83
oscar and simple themes: no inline script (allow A+ Content-Security-Policy)
2019-08-06 12:14:11 +02:00
Frank de Lange
e4e8e6da4c
Add image format and source information to display ( #1567 )
...
Add image format and source information to display - needs changes to engines to actually display something.
Displays result.source (website from which the image was taken) and result.img_format (image type and size).
Result is styled with result-format and result-source classes. See PR #1566 for an example of an engine which has the necessary changes.
Strip <span class="highlight">...</span> in the oscar image template.
2019-08-06 09:31:24 +02:00
Léo Bourrel
88261e111c
Fix bing engine results count ( #1387 )
...
This PR fixes the result count from bing which was throwing an (hidden) error and add a validation to avoid reading more results than avalaible.
For example :
If there is 100 results from some search and we try to get results from 120 to 130, Bing will send back the results from 0 to 10 and no error. If we compare results count with the first parameter of the request we can avoid this "invalid" results.
2019-08-05 16:15:40 +02:00
Dalf
1cee2c1796
[fix] bing engine
...
before this commit, sometimes there are no results
use a generic user-agent instead of one with the OS "Windows NT 6.3; WOW64"
2019-08-05 15:46:40 +02:00
Dalf
9a378ca8c6
[fix] etymonline, voat engines
2019-08-05 15:44:22 +02:00
Dalf
fcc9587ee9
[fix] fdroid engine
2019-08-05 15:44:02 +02:00
Dalf
fbf6b689dd
[fix] dictzone engine
2019-08-05 15:43:21 +02:00
Dalf
9ff5001816
[fix] arxiv engine
2019-08-05 15:43:01 +02:00
Alexandre Flament
333e54943d
[fix] fix monkey patch in test_webapp.py ( #1667 )
...
at the end of test_webapp.py, the monkey patch of searx.search.Search was not revert which lead to side effects on other tests
close #1663
2019-08-03 13:23:36 +02:00
Dalf
ba80a0ba38
[fix] fix paging for the oscar theme after PR #1640
2019-08-02 20:04:37 +02:00
Alexandre Flament
72029d27de
[enh] Add timeout limit per request ( #1640 )
...
The new url parameter "timeout_limit" set timeout limit defined in second.
Example "timeout_limit=1.5" means the timeout limit is 1.5 seconds.
In addition, the query can start with <[number] to set the timeout limit.
For number between 0 and 99, the unit is the second :
Example: "<30 searx" means the timeout limit is 3 seconds
For number above 100, the unit is the millisecond:
Example: "<850 searx" means the timeout is 850 milliseconds.
In addition, there is a new optional setting: outgoing.max_request_timeout.
If not set, the user timeout can't go above searx configuration (as before: the max timeout of selected engine for a query).
If the value is set, the user can set a timeout between 0 and max_request_timeout using
<[number] or timeout_limit query parameter.
Related to #1077
Updated version of PR #1413 from @isj-privacore
2019-08-02 13:50:51 +02:00
Alexandre Flament
2179079a91
[fix] fix flickr_noapi decoding ( #1655 )
...
Characters that were not ASCII were incorrectly decoded.
Add an helper function: searx.utils.ecma_unescape (Python implementation of unescape Javascript function).
2019-08-02 13:37:13 +02:00
cy8aer
4dc792e1e2
[enh] add invidious engine. ( #1657 )
...
closes #1372
2019-08-02 13:25:25 +02:00
0xhtml
b2e1ee8d35
Fix some more errors with none/wrong credentials
2019-07-31 21:09:02 +02:00
0xhtml
275b37cc7c
Fix error if the user hasn't set api credentials
2019-07-31 21:01:24 +02:00
0xhtml
ae3eeedb14
Require Spotify API credentials in settings
2019-07-31 20:51:01 +02:00
0xhtml
c329ea135e
Fix spotify engine
2019-07-31 20:44:41 +02:00
Dalf
0c032c8429
[fix] youtube_noapi engine: fix the title
2019-07-31 08:39:40 +02:00
Dalf
8b7ac56669
[fix] google_videos engine: some results don't a thumbnail
2019-07-31 08:38:45 +02:00
Dalf
d44677e226
[fix] dailymotion engine: remove HTML tags from the description
2019-07-31 08:37:51 +02:00
Dalf
6e0285b2db
[fix] wikidata engine: faster processing, remove one HTTP redirection.
...
* Search URL is https://www.wikidata.org/w/index.php?{query}&ns0=1 (with ns0=1 at the end to avoid an HTTP redirection)
* url_detail: remove the disabletidy=1 deprecated parameter
* Add eval_xpath function: compile once for all xpath.
* Add get_id_cache: retrieve all HTML with an id, avoid the slow to procress dynamic xpath '//div[@id="{propertyid}"]'.replace('{propertyid}')
* Create an etree.HTMLParser() instead of using the global one (see #1575 )
2019-07-29 07:39:39 +02:00
Frank de Lange
cbc5e13275
[enh] flickr_noapi: use complete JSON data block, add 'content', 'img_format', 'source', etc. ( #1571 )
...
Fetch complete JSON data block, use legend to extract images.
Unquote urlencoded strings.
Add image description as 'content'.
Add 'img_format' and 'source' data (needs PR #1567 to enable this data to be displayed).
Show images which lack ownerid instead of discarding them.
2019-07-28 10:42:00 +02:00
Marc Abonce Seguin
59b1370824
[fix] small fixes in preferences view's text
2019-07-27 22:53:46 -07:00
Frank de Lange
204a2cbbf0
[fix] bing_videos ( #1579 )
...
use JSON where possible, compose 'content' using all available data, use correct 'url' (direct to source instead of redirect through bing)
2019-07-27 17:49:30 +02:00
Dalf
70a01e5f02
[fix] don't merge image results if the img_src is different
2019-07-27 08:52:30 +02:00
Dalf
23611897ec
[fix] make sure then engine name is lower case
...
Minor fix: "%s engine initialized" display the right engine name
2019-07-27 08:52:30 +02:00
Dalf
8645ef717e
[fix] settings.yml: make sure all engine names are lower case
2019-07-27 08:52:30 +02:00
Dalf
7d8000d965
[fix] "!wp !wp test" send only one request to wikipedia.
...
Note that "!general !wp test" is not fixed because the category for "!wp" is "none".
2019-07-27 08:52:30 +02:00
Dalf
2fab23ab9a
[fix] fix the debug message "starting webserver on ip:port"
...
was "port:ip"
2019-07-27 08:52:30 +02:00
Marc Abonce Seguin
e1bb0e33f2
[fix] escape perecent signs in translation file ( #1528 )
2019-07-27 09:01:02 +02:00
Frank de Lange
11fc9913e9
[enh] bing_images: use data from embedded JSON to improve results (e.g. real page title) ( #1568 )
...
use data from embedded JSON to improve results (e.g. real page title), add image format and source info (see PR #1567 ), improve paging logic (it now works)
2019-07-27 08:22:02 +02:00
Alexandre Flament
f34b5cedb1
[fix] fixes google play engines ( #1651 )
...
update commit 87baa74a86
2019-07-25 09:31:47 +02:00
Jonas Zohren
cac8e7c6b8
[enh] add npm search engine ( #1510 )
2019-07-25 08:54:26 +02:00
volth
eb182df132
[mod] restore btdigg engine as btdig.com ( #1515 )
2019-07-25 08:40:48 +02:00
rachmadani haryono
3b1122c5fa
[fix] fix duden engine ( #1594 )
2019-07-25 08:17:45 +02:00
Venca24
87baa74a86
[fix] fixes google play engines and adds thumbnails to their results ( #1612 )
...
fix google play apps, google play apps, google play music engines
xpath engine: thumbnail_xpath can define an optional thumbnail
2019-07-25 07:46:41 +02:00
Dalf
da0ce5880f
[fix] fix soundcloud engine, speed up searx start time
2019-07-19 08:59:11 +02:00
Dalf
7e201cbf65
[mod] use cache in _match_language function to speed up searx start time significantly
2019-07-19 08:58:08 +02:00
Alexandre Flament
554a21e1d0
[enh] Add Server-Timing header ( #1637 )
...
Server Timing specification: https://www.w3.org/TR/server-timing/
In the browser Dev Tools, focus on the main request, there are the responses per engine in the Timing tab.
2019-07-17 10:38:45 +02:00
Alexandre Flament
cfcbc3a5c3
[mod] settings.yml: update comments about the morty key. ( #1639 )
...
Fix #1310
Since commit af77ec35d9bd28facdab645a3d57ae340d2b501c Morty accepts base64 encoded key.
2019-07-17 10:29:28 +02:00
rachmadani haryono
ec88fb8a0f
[fix] secret_key can be bytes instead of a string ( #1602 )
...
Fix #1600
In settings.yml, the secret_key can be written as string or as base64 encoded data using !!binary notation.
2019-07-17 10:09:09 +02:00
rachmadani haryono
8f44014627
[fix] preference query parameter decoding ( #1599 )
...
Fix issue #1598
2019-07-17 09:42:40 +02:00
Dalf
c7220b40ea
Suggestions: use RawTextQuery to make the suggestions URLs. Update all themes accordingly.
2019-07-17 09:05:29 +02:00
Alexandre Flament
4d38b8bef7
Merge branch 'master' into bang_fixes
2019-07-16 11:03:52 +02:00
Marc Abonce Seguin
a3368c07a7
[enh] Add Interlingua locale (requires requirements update)
2019-07-15 13:38:51 -05:00
Dalf
45702b77ca
embedded iframe (youtube, dailymotion, vimeo): use https
2019-07-13 15:49:59 +02:00
Dalf
609ac5795a
.travis.yml: robot tests: remove the xvfb dependency
2019-07-13 15:49:59 +02:00
Alexandre Flament
3b8b862d8c
Merge branch 'master' into bang_fixes
2019-07-06 18:48:03 +02:00
Alexandre Flament
3faaf34e25
Fix ./manage.sh robot_tests ( #1633 )
...
doi_resolvers / default_doi_resolver were missing in the settings_robots.yml file, so the test server was not able to start (crash). Since the output wasn't displayed, it was not obvious why the Selenium couldn't connect to searx.
2019-07-06 18:47:35 +02:00
Marc Abonce Seguin
6626f01365
[fix] preserve bangs in suggestions and corrections
2019-07-01 19:52:34 -05:00
Marc Abonce Seguin
40272b0044
[fix] never pass bangs to autocomplete suggestions
2019-07-01 17:16:02 -05:00
Noémi Ványi
6c75052874
Merge branch 'master' into ne/improve-infinite-scroll
2019-06-30 13:45:09 +02:00
Noémi Ványi
1e30f19800
Merge branch 'master' into feature/fix-config
2019-06-24 23:10:22 +02:00
Nicolas Gelot
373a66be30
Fix locale and search language
...
Locale and search language was always defined with english value.
This patch inits the locale on `pre_request` in order to define the
default value of locale and language preferences.
Plus the `best_match` function provided by flask babel library did not
work as expected. So the function `match_language` provided
by searx is used to detect that the language from Accepted-Language
header can be used in searx project.
2019-06-17 23:19:15 +02:00
Nicolas Gelot
a818d3241d
Remove get local from request.args
...
args parameters are merged in form in pre_request, so
this patch removes that useless operation.
2019-06-17 23:13:04 +02:00
Nicolas Gelot
db1dfa4a28
Add addr setup via SEARX_BIND_ADDRESS
2019-06-17 22:42:56 +02:00
Nick Espig
06979fa082
Load next page shortly before hitting the bottom
...
This improves the user experience by loading in the next entries shortly before him getting to the bottom. It makes the scrolling more smooth without a break in between.
It also fixes an error on my browser that scrolling never hits the defined number. When I debugged it I hit `.scrolltop` of 1092.5 and the `doc.height - win.height` of 1093, so the condition was never true.
2019-06-04 18:22:02 +02:00
rachmadani haryono
45eb2688d0
Merge branch 'master' into feature/fix-config
2019-05-29 19:17:28 +08:00
Emilien Devos
cbd1ebdce8
[fix] Force Google old UI ( #1597 )
2019-05-29 10:05:57 +09:00
rachmadani haryono
ac357b12e3
Merge branch 'master' into feature/fix-config
2019-05-28 19:16:58 +08:00
Frank de Lange
4b7332286a
Use string formatter to create source and img_format labels ( #1566 )
...
google_images : use JSON embedded in HTML (engine expected pure JSON)
2019-05-28 12:33:31 +09:00
Dalf
ffe0972f91
Remove some engines : subtitleseeker, seedpeer, swisscows
...
http://www.subtitleseeker.com and http://www.seedpeer.eu don't exist anymore.
https://swisscows.ch/ has change : the engine needs to be updated
2019-05-28 04:06:35 +02:00
rachmadani haryono
7a127b4547
Merge branch 'master' into feature/fix-config
2019-05-28 06:55:20 +08:00
Venca24
c66a019478
[fix] seznam engine
2019-05-21 14:27:30 +02:00
rachmadaniHaryono
535fff109f
fix: dev: python3 dict keys jsonify
2019-05-18 00:03:49 +08:00
Alexandre Flament
9012ad498c
Merge branch 'master' into patch-1
2019-04-19 09:59:04 +02:00
Alexandre Flament
df2b9a76f7
Merge branch 'master' into ne/fix-google-image-search
2019-04-14 13:55:00 +02:00
Nick Espig
1c6ab79b9f
Fix google image search
...
- Because there is not full image url in the dom, we replace "image_url" with the same url as the "url" (url of source).
See example HTML https://gist.github.com/Nachtalb/2dea8a4d2c723c49226ad9645838121f
- Remove unused import
- Fix google image search title
- Keep google image safe value up to date
2019-04-14 12:03:25 +02:00
Marc Abonce Seguin
3e1c2153f7
[fix] duckduckgo images requests
2019-04-13 00:38:37 -05:00
b_b
4ca7e68841
use instance_name for page title
...
related to #1025
2019-04-09 21:15:02 +02:00
Alexandre Flament
3e9ce2638a
Merge branch 'master' into patch-1
2019-04-09 03:32:39 +02:00
Alexandre Flament
e868650df7
Merge branch 'master' into youtube_fix
2019-04-09 03:21:37 +02:00
Elias Ojala
cef77f0d51
Merge branch 'master' into patch-1
2019-03-29 14:41:12 +00:00
Marc Abonce Seguin
aaa0524cec
[fix] stop engine from sending duplicated requests
2019-03-28 19:25:20 -06:00
Marc Abonce Seguin
f2d49a6971
[fix] get youtube results from js object
...
Results are not appearing in the html document anymore,
instead they are found inside an object embedded in a script.
2019-03-26 21:09:15 -06:00
Elias Ojala
8039a577a8
Use HTTPS for crossref
2019-03-12 12:30:47 +00:00
Noémi Ványi
2478c5395d
update pyyaml
2019-02-23 18:52:36 +01:00
Noémi Ványi
6cadbf9269
Merge branch 'master' into devel_google_scholar
2019-02-22 21:05:07 +01:00
Jonas Zohren
f7bdd827c4
[enh] adds apkmirror search engine
2019-02-13 00:37:29 +01:00
Venca24
05a73019b1
[fix] google scholar suggestions
2019-02-04 16:31:17 +01:00
Noémi Ványi
83342a2878
Merge branch 'master' into fix-engine-suspend-time
2019-01-29 11:03:35 +01:00
Léo Bourrel
bf4a38ad66
Remove asksteem
2019-01-28 11:02:43 +01:00
Noémi Ványi
36790168a1
add again accidentally removed import to search.py
2019-01-25 20:54:23 +01:00
Noémi Ványi
fdf3994364
Merge branch 'master' into devel_image_proxy
2019-01-25 20:48:55 +01:00
Venca24
e8734b37c9
[FIX] image_proxify
2019-01-18 09:04:40 +01:00
d-tux
f1814079f0
Merge branch 'master' into engines/unsplash
2019-01-14 13:40:57 +01:00
Marc Abonce Seguin
626a8e9ac9
[fix] unicode error with WolframAlpha API engine
2019-01-08 21:02:23 -06:00
d-tux
329172f66e
Merge branch 'master' into engines/unsplash
2019-01-08 09:24:45 +01:00
Noémi Ványi
97351a2c72
fix after rebase
2019-01-07 21:28:58 +01:00
Noémi Ványi
b63d645a52
Revert "remove 'all' option from search languages"
...
This reverts commit 4d1770398a
.
2019-01-07 21:19:00 +01:00
Noémi Ványi
1a850cf171
Merge branch 'master' into language_aliases_fix
2019-01-07 20:33:31 +01:00
Étienne Deparis
89deb4fbcc
[fix] Remove markup errors in simple template preferences file
2019-01-07 10:48:25 +01:00
Étienne Deparis
21beb64a72
Remove forgotten white spaces in templates/simple/preferences.html
2019-01-07 10:48:20 +01:00
Étienne Deparis
0d4d58f794
[enh] Add preference section to two upstream plugins for simple theme integration
2019-01-07 10:48:14 +01:00
Marc Abonce Seguin
0169b63e84
[fix] fetch google's supported languages
2019-01-06 21:31:45 -06:00
Marc Abonce Seguin
51111c2594
[fix] always set langauge_aliases even if it's empty
2019-01-06 20:49:56 -06:00
Marc Abonce Seguin
5568f24d6c
[fix] check language aliases when setting search language
2019-01-06 20:31:57 -06:00
Noémi Ványi
29d146dde6
update changelog and version.py
2019-01-06 21:59:59 +01:00
Noémi Ványi
62690f623d
pull translations from Transifex
2019-01-06 21:49:42 +01:00
Venca24
8567cc7433
[add] mojeek engine
2019-01-06 10:47:09 +01:00
Venca24
2456b8f571
[mod] google videos
2019-01-05 12:12:09 +01:00
Noémi Ványi
1ea56576dc
Merge branch 'master' into devel_google_videos
2019-01-04 22:27:05 +01:00
Noémi Ványi
aeb6dab187
Merge branch 'master' into master
2019-01-04 22:14:40 +01:00
Noémi Ványi
5b81f7c2cc
Merge branch 'master' into bugfix_startpage
2019-01-04 22:03:00 +01:00
Venca24
cf26aba93b
[FIX] google videos thumbnails
2019-01-04 15:48:22 +01:00
Léo Bourrel
73ec2ba74e
Update bing image engine with new image json format
2018-12-19 11:12:25 +01:00
Michael Pfitzner
44ce51f0c5
restore startpage search results
2018-12-14 21:38:48 +01:00
d-tux
4a127b19de
Merge branch 'master' into engines/unsplash
2018-12-14 07:06:19 +01:00