It's a keyword search engine, meaning you can configure it to redirect yt
to Youtube, so a search like yt weird al
would redirect right to Youtube's search.
-
Install it
$ pip install bounce
-
Start it:
$ bounce-server
-
Query it:
$ curl "http://127.0.0.1:5000/?q=yt weird al"
You can also run it using any WSGI server like uWSGI using the included bouncefile.py
as the wsgi-file
.
Bounce has a built-in configuration file with generic mappings but you can also create your own that bounce will read when starting by setting the environment variable BOUNCE_CONFIG
with a path to your custom configuration python file:
export BOUNCE_CONFIG=/path/to/bounce_config.py
The file must import bounce.core.commands
:
from bounce.core import commands
The commands.add()
method takes a space separated list of commands and a value:
commands.add("foo bar", "http://foo.com?q={}")
So, if you called bounce with the input:
foo blammo
It would redirect to:
http://foo.com?q=blammo
You could also call it with bar blammo
and get the same thing because we set up the command keywords as foo bar
so either foo or bar would redirect.
Notice that the value is a python format string.
value can also be a callback:
def callback(q):
# manipulat q in some way and then return where you would like to go
return 'http://some.url.that.needed.manipulation.q.com={}'.format(q)
commands.add("foo bar", callback)
That makes it so bounce can do all kinds of crazy things.
By default, Google is the search engine of choice, so if you don't start your request with a command, bounce will redirect to Google search with your search string. If you would like to change this just pass default=True
to one of your custom commands:
commands.add("keyword", "value", default=True)
the command ls
will list all the commands bounce supports
To test locally from the repo:
$ export BOUNCE_CONFIG=/path/to/bounce/config.py
$ python bounce/bin/bounce-server
That should produce output like this:
* Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)
* Restarting with stat
* Debugger is active!
* Debugger pin code: XXX-XXX-XXX
Which you can then use to test:
$ curl "http://127.0.0.1:5000/?q=..."
And that's it.