/metasearch2

a cute metasearch engine

Primary LanguageRustCreative Commons Zero v1.0 UniversalCC0-1.0

                                   ==========
                                   metasearch
                                   ==========

                      https://github.com/mat-1/metasearch2

----
INFO
----

metasearch (aka metasearch2) is a cute metasearch engine. It sources its results
from Google, Bing, Brave, and several others. It's designed to be as lightweight
as possible, both on the server and client. There is no required client-side
JavaScript.

There's a public demo instance at https://s.matdoes.dev, but please do not use
it as your default or rely on it. This is so I don't get ratelimited by Google
or other engines. Run your own instance instead!

------------
INSTALLATION
------------

The easiest way to install metasearch is with `cargo install metasearch`. To get
the unstable version with the latest features, you can install it with
`cargo install --git https://github.com/mat-1/metasearch2`.

Usage: `metasearch [config_file]`

The config_file argument is optional; if it's not specified then it'll be
checked at the following locations:

  - $XDG_CONFIG_HOME/metasearch/config.toml
  - $HOME/.config/metasearch/config.toml
  - ./config.toml

If no config file exists, it'll be created at the first valid path in the list.

By default, metasearch runs on port 28019. You are encouraged to use a reverse
proxy.

-------------
CONFIGURATION
-------------

You can see all the default config options at `src/config.rs`. Some interesting
options you may want to change are:

  - bind - the host and port that the web server runs on, defaults to
    `0.0.0.0:28019`.
  - api - whether your instance is accessible through a JSON API. See below for
    more details.
  - ui.stylesheet_url - a link to a stylesheet that will be loaded alongside the
    main one, for example `/themes/catppuccin-mocha.css`.
  - image_search.enabled - add a tab for viewing image results for your query.
    this is disabled by default as the image proxy could be used to make GET
    requests to arbitrary URLs from your server.
  - engines.google.weight - the ranking score multiplier for an engine, you can
    modify this if you prefer the results from certain engines.

--------
JSON API
--------

metasearch has a JSON API that can be enabled by setting `api = true` in your
config. To use it, set the `Accept: application/json` header in your requests.

For example:
curl 'http://localhost:28019/search?q=sandcats' -H 'Accept: application/json'

The structure of the API is not guaranteed to be stable, as it relies on
serializing internal structs. It may change without warning in the future.