diff --git a/README.md b/README.md index 616ccc4..d83baef 100644 --- a/README.md +++ b/README.md @@ -42,6 +42,10 @@ If deploying manually: - Docker ([Windows](https://docs.docker.com/docker-for-windows/install/), [macOS](https://docs.docker.com/docker-for-mac/install/), [Ubuntu](https://docs.docker.com/engine/install/ubuntu/), [other Linux distros](https://docs.docker.com/engine/install/binaries/)) - Only needed if you intend on deploying the app as a Docker image - [Python3](https://www.python.org/downloads/) +- `libcurl4-openssl-dev` and `libssl-dev` + - macOS: `brew install openssl curl-openssl` + - Ubuntu: `sudo apt-get install -y libcurl4-openssl-dev libssl-dev` + - Arch: `pacman -S curl openssl` - [Heroku CLI](https://devcenter.heroku.com/articles/heroku-cli) - Only needed if you want to deploy the app to Heroku but don't want to use the deploy button shortcut. diff --git a/app/filter.py b/app/filter.py index efa786f..c2a4a13 100644 --- a/app/filter.py +++ b/app/filter.py @@ -6,6 +6,12 @@ import urllib.parse as urlparse from urllib.parse import parse_qs SKIP_ARGS = ['ref_src', 'utm'] +FULL_RES_IMG = '
Full Image' +GOOG_IMG = '/images/branding/searchlogo/1x/googlelogo' +LOGO_URL = GOOG_IMG + '_desk' +BLANK_B64 = ''' +data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKCAQAAAAnOwc2AAAAD0lEQVR42mNkwAIYh7IgAAVVAAuInjI5AAAAAElFTkSuQmCC +''' class Filter: @@ -68,9 +74,21 @@ class Filter: img_src = img['src'] if img_src.startswith('//'): img_src = 'https:' + img_src + elif img_src.startswith(GOOG_IMG): + # Special rebranding for image search results + if img_src.startswith(LOGO_URL): + img['src'] = '/static/img/logo.png' + img['height'] = 40 + else: + img['src'] = BLANK_B64 + + continue enc_src = Fernet(self.secret_key).encrypt(img_src.encode()) img['src'] = '/tmp?image_url=' + enc_src.decode() + # TODO: Non-mobile image results link to website instead of image + # if not self.mobile: + # img.append(BeautifulSoup(FULL_RES_IMG.format(img_src), 'html.parser')) def update_styling(self, soup): # Remove unnecessary button(s) @@ -126,6 +144,10 @@ class Filter: link_args = parse_qs(parsed_link.query) safe_args = {} + if len(link_args) == 0 and len(parsed_link) > 0: + a['href'] = query_link + continue + for arg in link_args.keys(): if arg in SKIP_ARGS: continue diff --git a/app/request.py b/app/request.py index 536b994..471f4f4 100644 --- a/app/request.py +++ b/app/request.py @@ -80,4 +80,4 @@ class Request: if return_bytes: return b_obj.getvalue() else: - return b_obj.getvalue().decode('utf-8', 'ignore') + return b_obj.getvalue().decode('unicode-escape', 'ignore')