Commit Graph

412 Commits

Author SHA1 Message Date
Ben Busby
bfd7d1441d
Merge remote-tracking branch 'origin/main' into heroku-app 2021-07-05 00:20:10 -04:00
Ben Busby
694642ccb3
Set bg color for "top stories" elements 2021-07-05 00:18:28 -04:00
Ben Busby
858c923239
Merge remote-tracking branch 'origin/main' into heroku-app 2021-07-04 15:25:34 -04:00
Ben Busby
38c38a772f
Find valid parent element when collapsing result content
Previously if a result element marked for collapsing didn't have a valid
"parent" element, the collapsing was skipped altogether. This loops
through child elements until a valid parent is found (or if one isn't
found, the element will not be collapsed).
2021-07-04 15:20:19 -04:00
Ben Busby
958faed1b6
Set user ownership of static build dir 2021-07-02 16:21:43 -04:00
Ben Busby
13202cc6b1
Ensure existence of static build dir 2021-07-02 16:21:38 -04:00
Ben Busby
155dfafabf
Merge remote-tracking branch 'origin/main' into heroku-app 2021-06-30 19:01:18 -04:00
Ben Busby
68fdd55482
Use cache busting for css/js files
On app init, short hashes are generated from file checksums to use for
cache busting. These hashes are added into the full file name and used
to symlink to the actual file contents. These symlinks are loaded in the
jinja templates for each page, and can tell the browser to load a new
file if the hash changes.

This is only in place for css and js files, but can be extended in the
future for other file types if needed.
2021-06-30 19:00:01 -04:00
Ben Busby
d2ae04f8c8
Merge remote-tracking branch 'origin/main' into heroku-app 2021-06-28 10:30:48 -04:00
Ben Busby
c41e0fc239
Allow theme to mirror user system settings
Introduces a new config element and environment variable
(WHOOGLE_CONFIG_THEME) for setting the theme of the app. Rather than
just having either light or dark, this allows a user to have their
instance use their current system light/dark preference to determine the
theme to use.

As a result, the dark mode setting (and WHOOGLE_CONFIG_DARK) have been
deprecated, but will still work as expected until a system theme has
been chosen.
2021-06-28 10:26:51 -04:00
Ben Busby
fae0740542
Merge remote-tracking branch 'origin/main' into heroku-app 2021-06-23 19:03:49 -04:00
Ben Busby
afd01820bb
Collapse long result sections into details/summary elements
Sections such as "People also asked" and "related searches" typically
take up a lot of room on the results page, and don't always have the
most useful information. This checks for result elements with more than
7 child divs, extracts the section title, and wraps all elements in a
"details" element that can be expanded/collapsed by the user.

Note that this functionality existed previously (albeit not implemented
as well), but due to changes in how Google returns searches (switching
from using <h2> elements for section headers to <span> or <div>
elements), the approach to collapsing these sections needed to be
updated.
2021-06-23 18:59:57 -04:00
Ben Busby
276ea904b0
Merge remote-tracking branch 'origin/main' into heroku-app 2021-06-16 10:43:34 -04:00
Ben Busby
d894bd347d
Handle error when parsing image result url 2021-06-16 10:40:18 -04:00
Ben Busby
b21b4f4f57
Skip parsing user agent if absent from request 2021-06-16 10:37:33 -04:00
Ben Busby
65fdfe1fd7
Merge remote-tracking branch 'origin/main' into heroku-app 2021-06-15 10:42:25 -04:00
Ben Busby
bcb1d8ecc9
Add lingva translation support in search (#360)
* Add support for Lingva translations in results

Searches that contain the word "translate" and are normal search queries
(i.e. not news/images/video/etc) now create an iframe to a Lingva url to
translate the user's search using their configured search language.

The Lingva url can be configured using the WHOOGLE_ALT_TL env var, or
will fall back to the official Lingva instance url (lingva.ml).

For more info, visit https://github.com/TheDavidDelta/lingva-translate

* Add basic test for lingva results

* Allow user specified lingva instances through csp frame-src

* Fix pep8 issue
2021-06-15 10:14:42 -04:00
Ben Busby
5525aa5b4f
Merge remote-tracking branch 'origin/main' into heroku-app 2021-06-11 11:34:39 -04:00
deluxghost
82ccace647
Add zh-CN translation (#355) 2021-06-11 11:33:01 -04:00
Aikatsui
a6b4252210
Add Sinhala translation (#353) 2021-06-11 10:22:25 -04:00
Ben Busby
83d19d7644
Update instructions for Firefox 89+
Also adds steps to take for allowing searches using Firefox Containers

Closes #352
2021-06-10 11:52:30 -04:00
Ben Busby
23ce8dea27
Merge remote-tracking branch 'origin/main' into heroku-app 2021-06-06 13:50:41 -04:00
Ben Busby
904091f440
Bump version to 0.5.4 2021-06-06 13:45:03 -04:00
Ben Busby
44b0fe519c
Revert changes to default language config
A recent issue brought up a good point about how the latest changes to
setting default language to english break functionality for bilingual
users. The change was likely not the best solution for users who were
being affected by IP geolocation on their instances -- the right
solution for that would be to configure the interface/search language to
their preference instead.
2021-06-06 13:39:06 -04:00
Ben Busby
dcd546d13f
Merge remote-tracking branch 'origin/main' into heroku-app 2021-06-04 15:45:29 -04:00
Ben Busby
e7a604d428
Fix handling of http (vs https) proxy creation
The requests library requires both 'http' and 'https' values in any
included proxy dict, and whoogle was previously copying the http proxy
to https for simplicity. The assumption was that if the underlying
request wasn't able to connect via https, it would default to http
(otherwise why have the requirement to specify both?)

This led to connectivity issues for users with http only proxies as of
the latest urllib and requests package versions, which are a lot more
strict with connections over https. With the latest versions, if an
https connection cannot be made, the library returns an error.

As a result, the new proxy dict must look something like this for plain
http proxies:

{'http': 'http://domain.tld:port', 'https': 'http://domain.tld:port'}

where both http and https are identical, but both are still required.
2021-06-04 15:30:21 -04:00
Ben Busby
d2d12cc2e0
Merge remote-tracking branch 'origin/main' into heroku-app 2021-06-04 11:31:53 -04:00
Ben Busby
a64a86efb6
Bump version to 0.5.3 2021-06-04 11:31:03 -04:00
Ben Busby
0ebe688ae9
Merge remote-tracking branch 'origin/main' into heroku-app 2021-06-04 11:19:18 -04:00
Ricardo
9d024cffce
Add Portuguese translation (#345)
* Add Portuguese translation

* Update translations.json
2021-06-04 11:16:58 -04:00
Ben Busby
614dceeb70
Add fallback interface/search lang + cleanup
Since the interface language defaults to IP geolocation by google, the
default language is now set to english. Still not sure if this is the
best solution, but at least temporarily should clear up some confusion
for users with instances deployed in countries outside of their own.

Also performed some minor cleanup:
  - Updated name of strip_blocked_sites to clean_query
  - Added clean_query to list of jinja template functions
  - Ensured site block list doesn't contain duplicate filters
2021-06-04 11:09:30 -04:00
Ben Busby
5b53d7b8c0
Merge remote-tracking branch 'origin/main' into heroku-app 2021-06-03 09:25:15 -04:00
bruvv
3892355199
Add Dutch translation (#343) 2021-06-03 09:24:59 -04:00
Ben Busby
f74ead043b
Merge remote-tracking branch 'origin/main' into heroku-app 2021-06-02 09:53:46 -04:00
Ben Busby
e1a9ec03f0
Update requests version to 2.25.1
Resolves conflict between prior version of requests and the new patched
version of urllib3
2021-06-02 09:46:14 -04:00
Ben Busby
6fe19d54c7
Merge remote-tracking branch 'origin/main' into heroku-app 2021-06-02 09:39:53 -04:00
dependabot[bot]
fbbe658320
Bump urllib3 from 1.25.9 to 1.26.5 (#341)
Bumps [urllib3](https://github.com/urllib3/urllib3) from 1.25.9 to 1.26.5.
- [Release notes](https://github.com/urllib3/urllib3/releases)
- [Changelog](https://github.com/urllib3/urllib3/blob/main/CHANGES.rst)
- [Commits](https://github.com/urllib3/urllib3/compare/1.25.9...1.26.5)

---
updated-dependencies:
- dependency-name: urllib3
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2021-06-02 09:37:03 -04:00
Ben Busby
59479228bf
Add clarification note for Whoogle CSP headers
Fixes #336
2021-06-01 20:03:05 -04:00
Myzel394
7103d9eccb
Add German translation (#339)
* Added german language

* Fixed translations.json path

* Fixed German name
2021-06-01 19:57:48 -04:00
Ben Busby
69488c9f3b
Merge remote-tracking branch 'origin/main' into heroku-app 2021-05-29 12:32:04 -04:00
Ben Busby
cbe32a081e
Hotfix: extract only 'q' element from query string
Occasionally the search results will contain links with arguments such
as 'dq', which was being erroneously used in attempts to extract the 'q'
element from query strings. This enforces that only links with '?q=' or
'&q=' (elements with a standalone 'q' arg) will have the element
extracted.

I also refactored the naming of this element once extracted to be just
'q'. Although this seems counterintuitive, it makes a little more sense
since this element is the one we're extracting. It's a vague url arg
name, but it is what it is.

Bump version to 0.5.2 for hotfix release
2021-05-29 12:22:37 -04:00
Jerome Gravel-Niquet
e1e6e84649
Add instructions to deploy to Fly.io (#330)
* Add instructions to deploy to Fly.io

* Put Fly.io as #3 in the installation options
2021-05-28 10:29:19 -04:00
Ben Busby
7c3dbade09
Merge remote-tracking branch 'origin/main' into heroku-app 2021-05-27 12:09:28 -04:00
Ben Busby
43faaee77f
Hotfix: remove site filter for maps links
The new site filter breaks links to Maps results, so filter.py needed
to be updated to handle these links as a unique case. A new method was
introduced to easily remove any "-site:..." filters from the query,
which is now also used to format queries in the header template rather
than manually removing the blocked site list within the template itself.

Bumps version to 0.5.1 for releasing the bugfix

Fixes #329
2021-05-27 12:01:57 -04:00
Federico Torrielli
cf55765933
Add italian localization (#327) 2021-05-25 09:51:05 -04:00
Ben Busby
31214b50d4
Merge remote-tracking branch 'origin/main' into heroku-app 2021-05-24 17:05:40 -04:00
Ben Busby
4649d96dda
Support basic localization (#325)
* Replace hardcoded strings using translation json file

This introduces a new "translations.json" file under app/static/settings
that is loaded on app init and uses the user config value for interface
language to determine the appropriate strings to use in Whoogle-specific
elements of the UI (primarily only on the home page).

* Verify interface lang can be used for localization

Check the configured interface language against the available
localization dict before attempting to use, otherwise fall back to
english.

Also expanded language names in the languages json file.

* Add test for validating translation language keys

Also adds Spanish translation to json (the only non-English language I
can add and reasonably validate on my own).

* Validate all translations against original keyset, update readme

Readme has been updated to include basic contributing guidelines for
both code and translations.
2021-05-24 17:03:02 -04:00
Justin Goette
7c221b7f7f
Remove duplicate docker-compose restart (#324) 2021-05-24 12:56:08 -04:00
Oscar
c2a76bd73a
Add new public instance to readme (#323)
https://whoogle.silkky.cloud
2021-05-24 11:06:48 -04:00
Ben Busby
75e7410981
Add WHOOGLE_CONFIG_DISABLE doc to readme 2021-05-21 11:22:43 -04:00