39 lines
898 B
JavaScript
39 lines
898 B
JavaScript
|
// ==UserScript==
|
||
|
// @name Startpage Bangs
|
||
|
// @version 1
|
||
|
// @grant none
|
||
|
// @run-at document-start
|
||
|
// @include https://*.startpage.com/*
|
||
|
// ==/UserScript==
|
||
|
|
||
|
fetch('https://s3.sbruder.de/cdn/bangs/bangs.json')
|
||
|
.then(text => text.json())
|
||
|
.then(bangs => {
|
||
|
const urlParams = new URLSearchParams(window.location.search)
|
||
|
const searchQuery = urlParams.get('query')
|
||
|
|
||
|
let matchBang = null
|
||
|
let parsedBang = null
|
||
|
|
||
|
matchBang = searchQuery.match(/(.*) \!(.*)/)
|
||
|
if (matchBang !== null) {
|
||
|
parsedBang = {
|
||
|
'bang': matchBang[2],
|
||
|
'query': matchBang[1]
|
||
|
}
|
||
|
}
|
||
|
|
||
|
matchBang = searchQuery.match(/\!(.*) (.*)/)
|
||
|
if (matchBang !== null) {
|
||
|
parsedBang = {
|
||
|
'bang': matchBang[1],
|
||
|
'query': matchBang[2]
|
||
|
}
|
||
|
}
|
||
|
|
||
|
if (parsedBang !== null) {
|
||
|
redirectURL = bangs[parsedBang.bang].replace('%s', parsedBang.query)
|
||
|
window.location.replace(redirectURL);
|
||
|
}
|
||
|
})
|