Repository files navigation

PyPIPython versionsLicenseBuild status

Asciicast

sp is a command line utility to search Startpage.com from the terminal.

It is inspired by the projects ddgr and googler.

Table of contents

Installation

$ pip install spcli

Usage

Command Line

$ sp -h
usage: sp.py [-h] [-d] [-f] [-s SITE] [-t SPAN] [-u] [-v] [-np]
[--browser BROWSER] [--json] [--no-color]
[keywords [keywords ...]]
Search Startpage.com from the terminal.
positional arguments:
keywords search keywords
optional arguments:
-h, --help show this help message and exit
-d, --debug enable debug logging
-f, --first open the first result in a web browser
-s SITE, --site SITE search a site
-t SPAN, --time SPAN time limit search to 1 d|w|m|y (day,week,month,year)
-u, --unsafe disable the family filter
-v, --version show program's version number and exit
-np, --no-prompt do not enter interactive mode
--browser BROWSER open results using this web browser
--json output the results in JSON; implies --no-prompt
--no-color disable color output
Version 1.0.4
Copyright Β© 2018 Gary Blackwood <gary@garyblackwood.co.uk>
License: GPLv3
Website: https://github.com/garee/sp

Interactive Mode

f view the first set of results
n view the next set of results
p view the previous set of results
[index] open search result in web browser
c [index] copy the search result link to the clipboard
s KEYWORDS perform a search for KEYWORDS
? show help
q exit
* all other inputs are treated as new search keywords

Examples

  1. Search for terms.
$ sp hello world
  1. Search bbc.co.uk for news about brexit:
$ sp -s bbc.co.uk brexit
  1. Search for results from the past 24 hours.
$ sp -t d barcelona fc
  1. Open the first result automatically
$ sp -f python docs
  1. Disable safe search.
$ sp -u pawn
  1. Output in JSON format.
$ sp --json climate change papers

Browser Support

If the BROWSER environment variable exists, it will be used to open search results. If not, sp will attempt to use one from the this list.

You can specify which browser to use using the --browser flag. This also accepts a path to the browser executable.

$ sp --browser firefox

Proxies

The requests library is used to perform the HTTP requests. You can configure proxies by setting the environment variablesHTTP_PROXY and HTTPS_PROXY.

$ export HTTP_PROXY="http://10.10.1.10:3128"
$ export HTTPS_PROXY="http://10.10.2.10.1080"

Development Quick Start

Create and activate a virtual environment.

$ mkvirtualenv -p python3 sp
$ workon sp

Install the dependencies.

$ pip install -r requirements.txt

Format the code.

$ black sp/*.py

Run static analysis on the code.

$ pylint sp/*.py
$ flake8 sp/*.py

Troubleshooting

Please create an issue for any problems that you encounter.

  1. Disable the coloured output if it does not work correctly on your system:
$ sp --no-color

About

Search Startpage.com from the terminal πŸ”Ž

Topics

Resources

Stars

15 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

Repository files navigation

PyPIPython versionsLicenseBuild status

Asciicast

sp is a command line utility to search Startpage.com from the terminal.

It is inspired by the projects ddgr and googler.

Table of contents

Installation

$ pip install spcli

Usage

Command Line

$ sp -h
usage: sp.py [-h] [-d] [-f] [-s SITE] [-t SPAN] [-u] [-v] [-np]
[--browser BROWSER] [--json] [--no-color]
[keywords [keywords ...]]
Search Startpage.com from the terminal.
positional arguments:
keywords search keywords
optional arguments:
-h, --help show this help message and exit
-d, --debug enable debug logging
-f, --first open the first result in a web browser
-s SITE, --site SITE search a site
-t SPAN, --time SPAN time limit search to 1 d|w|m|y (day,week,month,year)
-u, --unsafe disable the family filter
-v, --version show program's version number and exit
-np, --no-prompt do not enter interactive mode
--browser BROWSER open results using this web browser
--json output the results in JSON; implies --no-prompt
--no-color disable color output
Version 1.0.4
Copyright Β© 2018 Gary Blackwood <gary@garyblackwood.co.uk>
License: GPLv3
Website: https://github.com/garee/sp

Interactive Mode

f view the first set of results
n view the next set of results
p view the previous set of results
[index] open search result in web browser
c [index] copy the search result link to the clipboard
s KEYWORDS perform a search for KEYWORDS
? show help
q exit
* all other inputs are treated as new search keywords

Examples

  1. Search for terms.
$ sp hello world
  1. Search bbc.co.uk for news about brexit:
$ sp -s bbc.co.uk brexit
  1. Search for results from the past 24 hours.
$ sp -t d barcelona fc
  1. Open the first result automatically
$ sp -f python docs
  1. Disable safe search.
$ sp -u pawn
  1. Output in JSON format.
$ sp --json climate change papers

Browser Support

If the BROWSER environment variable exists, it will be used to open search results. If not, sp will attempt to use one from the this list.

You can specify which browser to use using the --browser flag. This also accepts a path to the browser executable.

$ sp --browser firefox

Proxies

The requests library is used to perform the HTTP requests. You can configure proxies by setting the environment variablesHTTP_PROXY and HTTPS_PROXY.

$ export HTTP_PROXY="http://10.10.1.10:3128"
$ export HTTPS_PROXY="http://10.10.2.10.1080"

Development Quick Start

Create and activate a virtual environment.

$ mkvirtualenv -p python3 sp
$ workon sp

Install the dependencies.

$ pip install -r requirements.txt

Format the code.

$ black sp/*.py

Run static analysis on the code.

$ pylint sp/*.py
$ flake8 sp/*.py

Troubleshooting

Please create an issue for any problems that you encounter.

  1. Disable the coloured output if it does not work correctly on your system:
$ sp --no-color

About

Search Startpage.com from the terminal πŸ”Ž

Topics

Resources

Stars

15 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

PyPIPython versionsLicenseBuild status

Asciicast

sp is a command line utility to search Startpage.com from the terminal.

It is inspired by the projects ddgr and googler.

Table of contents

Installation

$ pip install spcli

Usage

Command Line

$ sp -h
usage: sp.py [-h] [-d] [-f] [-s SITE] [-t SPAN] [-u] [-v] [-np]
[--browser BROWSER] [--json] [--no-color]
[keywords [keywords ...]]
Search Startpage.com from the terminal.
positional arguments:
keywords search keywords
optional arguments:
-h, --help show this help message and exit
-d, --debug enable debug logging
-f, --first open the first result in a web browser
-s SITE, --site SITE search a site
-t SPAN, --time SPAN time limit search to 1 d|w|m|y (day,week,month,year)
-u, --unsafe disable the family filter
-v, --version show program's version number and exit
-np, --no-prompt do not enter interactive mode
--browser BROWSER open results using this web browser
--json output the results in JSON; implies --no-prompt
--no-color disable color output
Version 1.0.4
Copyright Β© 2018 Gary Blackwood <gary@garyblackwood.co.uk>
License: GPLv3
Website: https://github.com/garee/sp

Interactive Mode

f view the first set of results
n view the next set of results
p view the previous set of results
[index] open search result in web browser
c [index] copy the search result link to the clipboard
s KEYWORDS perform a search for KEYWORDS
? show help
q exit
* all other inputs are treated as new search keywords

Examples

  1. Search for terms.
$ sp hello world
  1. Search bbc.co.uk for news about brexit:
$ sp -s bbc.co.uk brexit
  1. Search for results from the past 24 hours.
$ sp -t d barcelona fc
  1. Open the first result automatically
$ sp -f python docs
  1. Disable safe search.
$ sp -u pawn
  1. Output in JSON format.
$ sp --json climate change papers

Browser Support

If the BROWSER environment variable exists, it will be used to open search results. If not, sp will attempt to use one from the this list.

You can specify which browser to use using the --browser flag. This also accepts a path to the browser executable.

$ sp --browser firefox

Proxies

The requests library is used to perform the HTTP requests. You can configure proxies by setting the environment variablesHTTP_PROXY and HTTPS_PROXY.

$ export HTTP_PROXY="http://10.10.1.10:3128"
$ export HTTPS_PROXY="http://10.10.2.10.1080"

Development Quick Start

Create and activate a virtual environment.

$ mkvirtualenv -p python3 sp
$ workon sp

Install the dependencies.

$ pip install -r requirements.txt

Format the code.

$ black sp/*.py

Run static analysis on the code.

$ pylint sp/*.py
$ flake8 sp/*.py

Troubleshooting

Please create an issue for any problems that you encounter.

  1. Disable the coloured output if it does not work correctly on your system:
$ sp --no-color

About

Search Startpage.com from the terminal πŸ”Ž

Topics

Resources

Stars

15 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

PyPIPython versionsLicenseBuild status

Asciicast

sp is a command line utility to search Startpage.com from the terminal.

It is inspired by the projects ddgr and googler.

Table of contents

Installation

$ pip install spcli

Usage

Command Line

$ sp -h
usage: sp.py [-h] [-d] [-f] [-s SITE] [-t SPAN] [-u] [-v] [-np]
[--browser BROWSER] [--json] [--no-color]
[keywords [keywords ...]]
Search Startpage.com from the terminal.
positional arguments:
keywords search keywords
optional arguments:
-h, --help show this help message and exit
-d, --debug enable debug logging
-f, --first open the first result in a web browser
-s SITE, --site SITE search a site
-t SPAN, --time SPAN time limit search to 1 d|w|m|y (day,week,month,year)
-u, --unsafe disable the family filter
-v, --version show program's version number and exit
-np, --no-prompt do not enter interactive mode
--browser BROWSER open results using this web browser
--json output the results in JSON; implies --no-prompt
--no-color disable color output
Version 1.0.4
Copyright Β© 2018 Gary Blackwood <gary@garyblackwood.co.uk>
License: GPLv3
Website: https://github.com/garee/sp

Interactive Mode

f view the first set of results
n view the next set of results
p view the previous set of results
[index] open search result in web browser
c [index] copy the search result link to the clipboard
s KEYWORDS perform a search for KEYWORDS
? show help
q exit
* all other inputs are treated as new search keywords

Examples

  1. Search for terms.
$ sp hello world
  1. Search bbc.co.uk for news about brexit:
$ sp -s bbc.co.uk brexit
  1. Search for results from the past 24 hours.
$ sp -t d barcelona fc
  1. Open the first result automatically
$ sp -f python docs
  1. Disable safe search.
$ sp -u pawn
  1. Output in JSON format.
$ sp --json climate change papers

Browser Support

If the BROWSER environment variable exists, it will be used to open search results. If not, sp will attempt to use one from the this list.

You can specify which browser to use using the --browser flag. This also accepts a path to the browser executable.

$ sp --browser firefox

Proxies

The requests library is used to perform the HTTP requests. You can configure proxies by setting the environment variablesHTTP_PROXY and HTTPS_PROXY.

$ export HTTP_PROXY="http://10.10.1.10:3128"
$ export HTTPS_PROXY="http://10.10.2.10.1080"

Development Quick Start

Create and activate a virtual environment.

$ mkvirtualenv -p python3 sp
$ workon sp

Install the dependencies.

$ pip install -r requirements.txt

Format the code.

$ black sp/*.py

Run static analysis on the code.

$ pylint sp/*.py
$ flake8 sp/*.py

Troubleshooting

Please create an issue for any problems that you encounter.

  1. Disable the coloured output if it does not work correctly on your system:
$ sp --no-color

About

Search Startpage.com from the terminal πŸ”Ž

Topics

Resources

Stars

15 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

Repository files navigation

PyPIPython versionsLicenseBuild status

Asciicast

sp is a command line utility to search Startpage.com from the terminal.

It is inspired by the projects ddgr and googler.

Table of contents

Installation

$ pip install spcli

Usage

Command Line

$ sp -h
usage: sp.py [-h] [-d] [-f] [-s SITE] [-t SPAN] [-u] [-v] [-np]
[--browser BROWSER] [--json] [--no-color]
[keywords [keywords ...]]
Search Startpage.com from the terminal.
positional arguments:
keywords search keywords
optional arguments:
-h, --help show this help message and exit
-d, --debug enable debug logging
-f, --first open the first result in a web browser
-s SITE, --site SITE search a site
-t SPAN, --time SPAN time limit search to 1 d|w|m|y (day,week,month,year)
-u, --unsafe disable the family filter
-v, --version show program's version number and exit
-np, --no-prompt do not enter interactive mode
--browser BROWSER open results using this web browser
--json output the results in JSON; implies --no-prompt
--no-color disable color output
Version 1.0.4
Copyright Β© 2018 Gary Blackwood <gary@garyblackwood.co.uk>
License: GPLv3
Website: https://github.com/garee/sp

Interactive Mode

f view the first set of results
n view the next set of results
p view the previous set of results
[index] open search result in web browser
c [index] copy the search result link to the clipboard
s KEYWORDS perform a search for KEYWORDS
? show help
q exit
* all other inputs are treated as new search keywords

Examples

  1. Search for terms.
$ sp hello world
  1. Search bbc.co.uk for news about brexit:
$ sp -s bbc.co.uk brexit
  1. Search for results from the past 24 hours.
$ sp -t d barcelona fc
  1. Open the first result automatically
$ sp -f python docs
  1. Disable safe search.
$ sp -u pawn
  1. Output in JSON format.
$ sp --json climate change papers

Browser Support

If the BROWSER environment variable exists, it will be used to open search results. If not, sp will attempt to use one from the this list.

You can specify which browser to use using the --browser flag. This also accepts a path to the browser executable.

$ sp --browser firefox

Proxies

The requests library is used to perform the HTTP requests. You can configure proxies by setting the environment variablesHTTP_PROXY and HTTPS_PROXY.

$ export HTTP_PROXY="http://10.10.1.10:3128"
$ export HTTPS_PROXY="http://10.10.2.10.1080"

Development Quick Start

Create and activate a virtual environment.

$ mkvirtualenv -p python3 sp
$ workon sp

Install the dependencies.

$ pip install -r requirements.txt

Format the code.

$ black sp/*.py

Run static analysis on the code.

$ pylint sp/*.py
$ flake8 sp/*.py

Troubleshooting

Please create an issue for any problems that you encounter.

  1. Disable the coloured output if it does not work correctly on your system:
$ sp --no-color

About

Search Startpage.com from the terminal πŸ”Ž

Topics

Resources

Stars

15 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

PyPIPython versionsLicenseBuild status

Asciicast

sp is a command line utility to search Startpage.com from the terminal.

It is inspired by the projects ddgr and googler.

Table of contents

Installation

$ pip install spcli

Usage

Command Line

$ sp -h
usage: sp.py [-h] [-d] [-f] [-s SITE] [-t SPAN] [-u] [-v] [-np]
[--browser BROWSER] [--json] [--no-color]
[keywords [keywords ...]]
Search Startpage.com from the terminal.
positional arguments:
keywords search keywords
optional arguments:
-h, --help show this help message and exit
-d, --debug enable debug logging
-f, --first open the first result in a web browser
-s SITE, --site SITE search a site
-t SPAN, --time SPAN time limit search to 1 d|w|m|y (day,week,month,year)
-u, --unsafe disable the family filter
-v, --version show program's version number and exit
-np, --no-prompt do not enter interactive mode
--browser BROWSER open results using this web browser
--json output the results in JSON; implies --no-prompt
--no-color disable color output
Version 1.0.4
Copyright Β© 2018 Gary Blackwood <gary@garyblackwood.co.uk>
License: GPLv3
Website: https://github.com/garee/sp

Interactive Mode

f view the first set of results
n view the next set of results
p view the previous set of results
[index] open search result in web browser
c [index] copy the search result link to the clipboard
s KEYWORDS perform a search for KEYWORDS
? show help
q exit
* all other inputs are treated as new search keywords

Examples

  1. Search for terms.
$ sp hello world
  1. Search bbc.co.uk for news about brexit:
$ sp -s bbc.co.uk brexit
  1. Search for results from the past 24 hours.
$ sp -t d barcelona fc
  1. Open the first result automatically
$ sp -f python docs
  1. Disable safe search.
$ sp -u pawn
  1. Output in JSON format.
$ sp --json climate change papers

Browser Support

If the BROWSER environment variable exists, it will be used to open search results. If not, sp will attempt to use one from the this list.

You can specify which browser to use using the --browser flag. This also accepts a path to the browser executable.

$ sp --browser firefox

Proxies

The requests library is used to perform the HTTP requests. You can configure proxies by setting the environment variablesHTTP_PROXY and HTTPS_PROXY.

$ export HTTP_PROXY="http://10.10.1.10:3128"
$ export HTTPS_PROXY="http://10.10.2.10.1080"

Development Quick Start

Create and activate a virtual environment.

$ mkvirtualenv -p python3 sp
$ workon sp

Install the dependencies.

$ pip install -r requirements.txt

Format the code.

$ black sp/*.py

Run static analysis on the code.

$ pylint sp/*.py
$ flake8 sp/*.py

Troubleshooting

Please create an issue for any problems that you encounter.

  1. Disable the coloured output if it does not work correctly on your system:
$ sp --no-color

About

Search Startpage.com from the terminal πŸ”Ž

Topics

Resources

Stars

15 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

PyPIPython versionsLicenseBuild status

Asciicast

sp is a command line utility to search Startpage.com from the terminal.

It is inspired by the projects ddgr and googler.

Table of contents

Installation

$ pip install spcli

Usage

Command Line

$ sp -h
usage: sp.py [-h] [-d] [-f] [-s SITE] [-t SPAN] [-u] [-v] [-np]
[--browser BROWSER] [--json] [--no-color]
[keywords [keywords ...]]
Search Startpage.com from the terminal.
positional arguments:
keywords search keywords
optional arguments:
-h, --help show this help message and exit
-d, --debug enable debug logging
-f, --first open the first result in a web browser
-s SITE, --site SITE search a site
-t SPAN, --time SPAN time limit search to 1 d|w|m|y (day,week,month,year)
-u, --unsafe disable the family filter
-v, --version show program's version number and exit
-np, --no-prompt do not enter interactive mode
--browser BROWSER open results using this web browser
--json output the results in JSON; implies --no-prompt
--no-color disable color output
Version 1.0.4
Copyright Β© 2018 Gary Blackwood <gary@garyblackwood.co.uk>
License: GPLv3
Website: https://github.com/garee/sp

Interactive Mode

f view the first set of results
n view the next set of results
p view the previous set of results
[index] open search result in web browser
c [index] copy the search result link to the clipboard
s KEYWORDS perform a search for KEYWORDS
? show help
q exit
* all other inputs are treated as new search keywords

Examples

  1. Search for terms.
$ sp hello world
  1. Search bbc.co.uk for news about brexit:
$ sp -s bbc.co.uk brexit
  1. Search for results from the past 24 hours.
$ sp -t d barcelona fc
  1. Open the first result automatically
$ sp -f python docs
  1. Disable safe search.
$ sp -u pawn
  1. Output in JSON format.
$ sp --json climate change papers

Browser Support

If the BROWSER environment variable exists, it will be used to open search results. If not, sp will attempt to use one from the this list.

You can specify which browser to use using the --browser flag. This also accepts a path to the browser executable.

$ sp --browser firefox

Proxies

The requests library is used to perform the HTTP requests. You can configure proxies by setting the environment variablesHTTP_PROXY and HTTPS_PROXY.

$ export HTTP_PROXY="http://10.10.1.10:3128"
$ export HTTPS_PROXY="http://10.10.2.10.1080"

Development Quick Start

Create and activate a virtual environment.

$ mkvirtualenv -p python3 sp
$ workon sp

Install the dependencies.

$ pip install -r requirements.txt

Format the code.

$ black sp/*.py

Run static analysis on the code.

$ pylint sp/*.py
$ flake8 sp/*.py

Troubleshooting

Please create an issue for any problems that you encounter.

  1. Disable the coloured output if it does not work correctly on your system:
$ sp --no-color

About

Search Startpage.com from the terminal πŸ”Ž

Topics

Resources

Stars

15 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

Repository files navigation

PyPIPython versionsLicenseBuild status

Asciicast

sp is a command line utility to search Startpage.com from the terminal.

It is inspired by the projects ddgr and googler.

Table of contents

Installation

$ pip install spcli

Usage

Command Line

$ sp -h
usage: sp.py [-h] [-d] [-f] [-s SITE] [-t SPAN] [-u] [-v] [-np]
[--browser BROWSER] [--json] [--no-color]
[keywords [keywords ...]]
Search Startpage.com from the terminal.
positional arguments:
keywords search keywords
optional arguments:
-h, --help show this help message and exit
-d, --debug enable debug logging
-f, --first open the first result in a web browser
-s SITE, --site SITE search a site
-t SPAN, --time SPAN time limit search to 1 d|w|m|y (day,week,month,year)
-u, --unsafe disable the family filter
-v, --version show program's version number and exit
-np, --no-prompt do not enter interactive mode
--browser BROWSER open results using this web browser
--json output the results in JSON; implies --no-prompt
--no-color disable color output
Version 1.0.4
Copyright Β© 2018 Gary Blackwood <gary@garyblackwood.co.uk>
License: GPLv3
Website: https://github.com/garee/sp

Interactive Mode

f view the first set of results
n view the next set of results
p view the previous set of results
[index] open search result in web browser
c [index] copy the search result link to the clipboard
s KEYWORDS perform a search for KEYWORDS
? show help
q exit
* all other inputs are treated as new search keywords

Examples

  1. Search for terms.
$ sp hello world
  1. Search bbc.co.uk for news about brexit:
$ sp -s bbc.co.uk brexit
  1. Search for results from the past 24 hours.
$ sp -t d barcelona fc
  1. Open the first result automatically
$ sp -f python docs
  1. Disable safe search.
$ sp -u pawn
  1. Output in JSON format.
$ sp --json climate change papers

Browser Support

If the BROWSER environment variable exists, it will be used to open search results. If not, sp will attempt to use one from the this list.

You can specify which browser to use using the --browser flag. This also accepts a path to the browser executable.

$ sp --browser firefox

Proxies

The requests library is used to perform the HTTP requests. You can configure proxies by setting the environment variablesHTTP_PROXY and HTTPS_PROXY.

$ export HTTP_PROXY="http://10.10.1.10:3128"
$ export HTTPS_PROXY="http://10.10.2.10.1080"

Development Quick Start

Create and activate a virtual environment.

$ mkvirtualenv -p python3 sp
$ workon sp

Install the dependencies.

$ pip install -r requirements.txt

Format the code.

$ black sp/*.py

Run static analysis on the code.

$ pylint sp/*.py
$ flake8 sp/*.py

Troubleshooting

Please create an issue for any problems that you encounter.

  1. Disable the coloured output if it does not work correctly on your system:
$ sp --no-color

About

Search Startpage.com from the terminal πŸ”Ž

Topics

Resources

Stars

15 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages