From 454fbd4b1586211cccee109f07544aab4af54ea8 Mon Sep 17 00:00:00 2001 From: Isaac Shoebottom Date: Fri, 7 Oct 2022 01:17:45 -0300 Subject: [PATCH] Update v3 extension to use code rewrite --- .idea/inspectionProfiles/Project_Default.xml | 10 ++ v3/background.js | 137 ++++++++++++++----- v3/icon128.png | Bin 0 -> 4743 bytes v3/icon16.png | Bin 0 -> 639 bytes v3/icon48.png | Bin 0 -> 1865 bytes v3/manifest.json | 2 +- 6 files changed, 111 insertions(+), 38 deletions(-) create mode 100644 .idea/inspectionProfiles/Project_Default.xml create mode 100644 v3/icon128.png create mode 100644 v3/icon16.png create mode 100644 v3/icon48.png diff --git a/.idea/inspectionProfiles/Project_Default.xml b/.idea/inspectionProfiles/Project_Default.xml new file mode 100644 index 0000000..ab18538 --- /dev/null +++ b/.idea/inspectionProfiles/Project_Default.xml @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/v3/background.js b/v3/background.js index 5690d8c..de40871 100644 --- a/v3/background.js +++ b/v3/background.js @@ -1,53 +1,116 @@ function switchSearch(tab) { - const bingSearch = "https://www.bing.com/search?q="; - const googleSearch = "https://www.google.com/search?q="; + const bingSearch = "https://www.bing.com/search?" + const bingImageSearch = "https://www.bing.com/images/search?" + const bingVideoSearch = "https://www.bing.com/videos/search?" + const bingMapSearch = "https://www.bing.com/maps?" + const bingNewsSearch = "https://www.bing.com/news/search?" + const bingShoppingSearch = "https://www.bing.com/shop?" - const bingImageSearch = "https://www.bing.com/images/search?q=" - const googleImageSearchSubstring = "&tbm=isch"; - const url = tab.url; + const googleSearch = "https://www.google.com/search?" + const googleImageSearchSubstring = "&tbm=isch" + const googleVideoSearchSubstring = "&tbm=vid" + const googleMapsSearch = "https://www.google.com/maps?" + const googleMapsSearchRewrite = "https://www.google.com/maps" + const googleNewsSearchSubstring = "&tbm=nws" + const googleShoppingSearchSubstring = "&tbm=shop" + + const url = tab.url - let newURL; - let removeEngine; - let searchEnd; - let justSearch; //Handle bing searches if (url.substring(0, bingSearch.length) === bingSearch) { - removeEngine = url.slice(bingSearch.length); - searchEnd = removeEngine.indexOf('&'); - justSearch = removeEngine.substring(0, searchEnd); - - newURL = googleSearch + justSearch + '&'; - - } - //Handle Google image searches - else if (url.indexOf(googleImageSearchSubstring) > googleSearch.length) { - removeEngine = url.slice(googleSearch.length); - searchEnd = removeEngine.indexOf('&'); - justSearch = removeEngine.substring(0, searchEnd); - - newURL = bingImageSearch + justSearch + '&'; - } - //Handle Google searches - else if (url.substring(0, googleSearch.length) === googleSearch) { - removeEngine = url.slice(googleSearch.length); - searchEnd = removeEngine.indexOf('&'); - justSearch = removeEngine.substring(0, searchEnd); - - newURL = bingSearch + justSearch + '&'; + return getSwitchedSearch(bingSearch, googleSearch, url) } //Handle bing image searches else if (url.substring(0, bingImageSearch.length) === bingImageSearch) { - removeEngine = url.slice(bingImageSearch.length) - searchEnd = removeEngine.indexOf('&'); - justSearch = removeEngine.substring(0, searchEnd); - - newURL = googleSearch + justSearch + googleImageSearchSubstring + '&'; + return getSwitchedGoogleSearch(bingImageSearch, googleSearch, googleImageSearchSubstring, url) + } + //Handle bing video searches + else if (url.substring(0, bingVideoSearch.length) === bingVideoSearch){ + return getSwitchedGoogleSearch(bingVideoSearch, googleSearch, googleVideoSearchSubstring, url) + } + //Handle bing maps searches + else if (url.substring(0, bingMapSearch.length) === bingMapSearch){ + return getSwitchedSearch(bingMapSearch, googleMapsSearch, url) + } + //Handle bing news searches + else if (url.substring(0, bingNewsSearch.length) === bingNewsSearch){ + return getSwitchedGoogleSearch(bingNewsSearch, googleSearch, googleNewsSearchSubstring, url) + } + //Handle bing shopping searches + else if (url.substring(0, bingShoppingSearch.length) === bingShoppingSearch){ + return getSwitchedGoogleSearch(bingShoppingSearch, googleSearch, googleShoppingSearchSubstring, url) } + //-------------------------------------- - return newURL; + //Handle Google image searches + else if (url.indexOf(googleImageSearchSubstring) > googleSearch.length) { + return getSwitchedSearch(googleSearch, bingImageSearch, url) + } + //Handle google video searches + else if (url.indexOf(googleVideoSearchSubstring) > googleSearch.length) { + return getSwitchedSearch(googleSearch, bingVideoSearch, url) + } + //Handle Google Maps searches + //Needs two for url before and after rewrite + else if (url.substring(0, googleMapsSearch.length) === googleMapsSearch) { + return getSwitchedSearch(googleMapsSearch, bingMapSearch, url) + } + else if (url.substring(0, googleMapsSearchRewrite.length) === googleMapsSearchRewrite) { + return getSwitchedSearch(googleMapsSearchRewrite, bingMapSearch, url) + } + //Handle Google News searches + else if (url.indexOf(googleNewsSearchSubstring) > googleSearch.length) { + return getSwitchedSearch(googleSearch, bingNewsSearch, url) + } + //Handle Google shopping searches + else if (url.indexOf(googleShoppingSearchSubstring) > googleSearch.length) { + return getSwitchedSearch(googleSearch, bingShoppingSearch, url) + } + //Handle Google searches + else if (url.substring(0, googleSearch.length) === googleSearch) { + return getSwitchedSearch(googleSearch, bingSearch, url) + } + + function getSwitchedSearch(currentEngine, newEngine, url) { + let querySelector = '&q=' + let separator = '&' + //google maps uses different url scheme + if (currentEngine === googleMapsSearchRewrite) { + querySelector = "/search/" + separator = '/' + } + + let removeEngine = url.slice(currentEngine.length) + let searchStart = removeEngine.indexOf(querySelector) + querySelector.length + let justSearch = removeEngine.substring(searchStart) + let searchEnd = justSearch.indexOf(separator) + if (searchEnd > 0) { + justSearch = justSearch.substring(0, searchEnd) + } + + const debug = true + if (debug) { + console.debug("------------------ SearchSwitch Diagnostics ------------------") + console.debug("Current Engine: ", currentEngine) + console.debug("Next Engine: ", newEngine) + console.debug("URL: ", url) + console.debug("Search query selector: ", querySelector) + console.debug("Raw Search term with engine removed: ", removeEngine) + console.debug("Index of the start of the real search: ", searchStart) + console.debug("Index of the end of the real search: ", searchEnd) + console.debug("The text that is just the raw search: ", justSearch) + console.debug("--------------------------------------------------------------") + } + return newEngine + 'q=' + justSearch + } + function getSwitchedGoogleSearch(currentEngine, newEngine, substring, url) { + let beforeSubstring = getSwitchedSearch(currentEngine, newEngine, url) + return beforeSubstring + substring + } } + chrome.action.onClicked.addListener((tab) => { chrome.scripting.executeScript({ target: {tabId: tab.id}, diff --git a/v3/icon128.png b/v3/icon128.png new file mode 100644 index 0000000000000000000000000000000000000000..664fb1583c32e8c51ffcee87eda6ec8381f80aeb GIT binary patch literal 4743 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 D`l*;2 literal 0 HcmV?d00001 diff --git a/v3/manifest.json b/v3/manifest.json index 499a828..8de1a51 100644 --- a/v3/manifest.json +++ b/v3/manifest.json @@ -1,6 +1,6 @@ { "name": "SearchSwitcher", - "version": "0.0.2", + "version": "0.0.3", "description": "Search switcher", "manifest_version": 3, "author": "Isaac Shoebottom",