Finished implementation of social media alt redirects
Also cleaned up the javascript side of whoogle config so that it now uses arrays of available fields for parsing config values instead of manually assigning each one to a variable. This doesn't include support for Google Maps > Open Street Maps, that seems a bit more involved than the social media redirects were, so it should likely be a separate effort.
This commit is contained in:
parent
6ebde44fbe
commit
1687f7bcd9
|
@ -16,7 +16,7 @@ class Filter:
|
|||
self.dark = config['dark'] if 'dark' in config else False
|
||||
self.nojs = config['nojs'] if 'nojs' in config else False
|
||||
self.new_tab = config['new_tab'] if 'new_tab' in config else False
|
||||
self.alt_redirect = config['alts'] if 'alts' in config else True
|
||||
self.alt_redirect = config['alts'] if 'alts' in config else False
|
||||
self.mobile = mobile
|
||||
self.user_keys = user_keys
|
||||
self.main_divs = ResultSet('')
|
||||
|
@ -169,8 +169,10 @@ class Filter:
|
|||
query_link = parse_qs(result_link.query)['q'][0] if '?q=' in href else ''
|
||||
|
||||
if query_link.startswith('/'):
|
||||
# Internal google links (i.e. mail, maps, etc) should still be forwarded to Google
|
||||
link['href'] = 'https://google.com' + query_link
|
||||
elif '/search?q=' in href:
|
||||
# "li:1" implies the query should be interpreted verbatim, so we wrap it in double quotes
|
||||
if 'li:1' in href:
|
||||
query_link = '"' + query_link + '"'
|
||||
new_search = '/search?q=' + self.encrypt_path(query_link)
|
||||
|
@ -190,11 +192,13 @@ class Filter:
|
|||
else:
|
||||
link['href'] = href
|
||||
|
||||
# Replace link location
|
||||
# Replace link location if "alts" config is enabled
|
||||
if self.alt_redirect:
|
||||
# Search and replace all link descriptions with alternative location
|
||||
link['href'] = get_site_alt(link['href'])
|
||||
link_desc = link.find_all(text=re.compile('|'.join(SITE_ALTS.keys())))
|
||||
if len(link_desc) == 0:
|
||||
return
|
||||
|
||||
# Replace link destination
|
||||
link_desc[0].replace_with(get_site_alt(link_desc[0]))
|
||||
|
|
|
@ -306,6 +306,7 @@ class Config:
|
|||
self.dark = False
|
||||
self.nojs = False
|
||||
self.near = ''
|
||||
self.alts = False
|
||||
self.new_tab = False
|
||||
self.get_only = False
|
||||
|
||||
|
|
|
@ -34,10 +34,10 @@ body {
|
|||
color: #685e79;
|
||||
border-radius: 10px 10px 0 0;
|
||||
max-width: 600px;
|
||||
background: rgba(0,0,0,0);
|
||||
background: rgba(0, 0, 0, 0);
|
||||
}
|
||||
|
||||
#search-bar:focus{
|
||||
#search-bar:focus {
|
||||
color: #685e79;
|
||||
}
|
||||
|
||||
|
@ -68,7 +68,7 @@ button::-moz-focus-inner {
|
|||
|
||||
.collapsible {
|
||||
outline: 0;
|
||||
background-color: rgba(0,0,0,0);
|
||||
background-color: rgba(0, 0, 0, 0);
|
||||
color: #685e79;
|
||||
cursor: pointer;
|
||||
padding: 18px;
|
||||
|
@ -129,3 +129,8 @@ footer {
|
|||
width: 100%;
|
||||
z-index: -1;
|
||||
}
|
||||
|
||||
.info-text {
|
||||
font-style: italic;
|
||||
font-size: 12px;
|
||||
}
|
|
@ -1,3 +1,13 @@
|
|||
// Whoogle configurations that use boolean values and checkboxes
|
||||
CONFIG_BOOLS = [
|
||||
"nojs", "dark", "safe", "alts", "new_tab", "get_only"
|
||||
];
|
||||
|
||||
// Whoogle configurations that use string values and input fields
|
||||
CONFIG_STRS = [
|
||||
"near", "url"
|
||||
];
|
||||
|
||||
const setupSearchLayout = () => {
|
||||
// Setup search field
|
||||
const searchBar = document.getElementById("search-bar");
|
||||
|
@ -18,15 +28,6 @@ const setupSearchLayout = () => {
|
|||
};
|
||||
|
||||
const fillConfigValues = () => {
|
||||
// Establish all config value elements
|
||||
const near = document.getElementById("config-near");
|
||||
const noJS = document.getElementById("config-nojs");
|
||||
const dark = document.getElementById("config-dark");
|
||||
const safe = document.getElementById("config-safe");
|
||||
const url = document.getElementById("config-url");
|
||||
const newTab = document.getElementById("config-new-tab");
|
||||
const getOnly = document.getElementById("config-get-only");
|
||||
|
||||
// Request existing config info
|
||||
let xhrGET = new XMLHttpRequest();
|
||||
xhrGET.open("GET", "/config");
|
||||
|
@ -39,15 +40,15 @@ const fillConfigValues = () => {
|
|||
// Allow for updating/saving config values
|
||||
let configSettings = JSON.parse(xhrGET.responseText);
|
||||
|
||||
near.value = configSettings["near"] ? configSettings["near"] : "";
|
||||
noJS.checked = !!configSettings["nojs"];
|
||||
dark.checked = !!configSettings["dark"];
|
||||
safe.checked = !!configSettings["safe"];
|
||||
getOnly.checked = !!configSettings["get_only"];
|
||||
newTab.checked = !!configSettings["new_tab"];
|
||||
CONFIG_STRS.forEach(function(item) {
|
||||
let configElement = document.getElementById("config-" + item.replace("_", "-"));
|
||||
configElement.value = configSettings[item] ? configSettings[item] : "";
|
||||
});
|
||||
|
||||
// Addresses the issue of incorrect URL being used behind reverse proxy
|
||||
url.value = configSettings["url"] ? configSettings["url"] : "";
|
||||
CONFIG_BOOLS.forEach(function(item) {
|
||||
let configElement = document.getElementById("config-" + item.replace("_", "-"));
|
||||
configElement.checked = !!configSettings[item];
|
||||
});
|
||||
};
|
||||
|
||||
xhrGET.send();
|
||||
|
|
|
@ -96,6 +96,12 @@
|
|||
<label for="config-safe">Safe Search: </label>
|
||||
<input type="checkbox" name="safe" id="config-safe">
|
||||
</div>
|
||||
<div class="config-div">
|
||||
<label class="tooltip" for="config-alts">Replace Social Media Links: </label>
|
||||
<input type="checkbox" name="alts" id="config-alts">
|
||||
<div><span class="info-text"> — Replaces Twitter/YouTube/Instagram links
|
||||
with Nitter/Invidious/Bibliogram links.</span></div>
|
||||
</div>
|
||||
<div class="config-div">
|
||||
<label for="config-new-tab">Open Links in New Tab: </label>
|
||||
<input type="checkbox" name="new_tab" id="config-new-tab">
|
||||
|
|
Loading…
Reference in New Issue
Block a user