Wiki

Sources

What a source is

A source is a place Anibeam searches for releases of a show: a feed or a search on some website. Downloads needs at least one before a search can find anything.

Anibeam comes with no sources, and this site names none. You add them yourself, from a source list.

What a source list is

A source list is one file, made by a person and shared by its address. It holds the definitions of some sources: where each one searches and what it needs, such as an API key. Nothing in it runs on your computer.

  • The list is signed. Anibeam checks the signature when you add it and keeps the key it was signed with. The key's fingerprint shows on the list's row under Source lists.
  • Adding a list turns on every source in it that needs nothing. A source that needs a key or a login waits until you fill it in.
  • When the list's maker updates a source, Anibeam offers the update.

A list's sources decide where your searches go, so add a list only from someone you trust.

Add a source list

The step that adds a list is the same in three places: Somewhere to search in the first setup, the Downloads page while it has no sources, and Source lists at the top of SettingsDownloads.

  1. Copy the list's address. It is the address of one file, usually ending in .json.
  2. Paste it into Paste the address of a source list and press Add.
  3. Anibeam checks the list and says what it turned on, such as Added Example: 5 sources are on. Those sources search from now on.
  4. A source that needs a key or a login is named, with asks for a value first. Press Fill in, then Install next to that source, fill in its value and press Install. The value stays in your system's password store, never in the library or an export.

A list you added before and removed shows under Used before, one click each. To check a list is the one its maker published, compare the Key fingerprint on its row with the one the maker shared.

The sources that are on show under Search sources in SettingsDownloads, in the order they are tried, and as chips on the Downloads page.

Keep sources up to date

  • Anibeam reads every list again when it starts. Refresh lists reads them now.
  • A source with a newer version shows Update to v2, with its own number. An update that sends your key to a different address asks you again first.
  • A source its list no longer offers stays installed and says so. Remove it with its Remove button.
  • A list signed with a different key from the one Anibeam kept when you added it is refused. To accept the new key, remove the list and add it again.

Add one source by hand

For a feed no list carries, use Add one by hand under Source lists in SettingsDownloads.

  1. Type a name.
  2. Type the feed's address with {query} where the search goes, as in https://feeds.example.org/rss?q={query}.
  3. Press Add.

A key in the address, such as apikey=, is moved into the password store and kept out of the address.

Make your own source list

A list is a JSON file, format anibeam-endpoint-repo version 1. It holds the index as base64 in payload and an ed25519 signature over those bytes in signature. The index has the list's name, its public key, a serial and every definition in full.

  1. Make a signing key and keep it private: openssl genpkey -algorithm ed25519 -out list-key.pem.
  2. Write one definition per source. Each has a fixed id, a name, a version, a kind and a url with {query} in it.
  3. Build and sign the index. The project's endpoint repo, in the next section, has the schema, a check script and the script that builds and signs an index, so you can copy its layout.
  4. Put the signed file where anyone can fetch it over https, such as a public GitHub repository, and share its raw address with the key's fingerprint.
{
  "id": "example-rss",
  "name": "Example",
  "version": 1,
  "lang": "en",
  "kind": "rss",
  "url": "https://feeds.example.org/rss?q={query}&key={api_key}",
  "auth": [
    { "key": "api_key", "label": "API key", "secret": true }
  ],
  "rate": { "per_minute": 30 }
}

The kind says what shape the source answers in, never which site it is:

rss
Any RSS feed whose address holds {query}.
filtered-rss
A site address the core turns into an RSS search with a category and a filter.
json-feed
A JSON feed of torrent entries in one fixed layout.
json
A JSON search API, with a map that says which field holds the title, the hash or link and the size.
torznab
A torznab search, such as an indexer proxy you run yourself.

Each auth key goes in the address as a placeholder next to {query}, so a stored address never holds a secret. rate can only slow Anibeam down.

Every time you publish, raise serial; Anibeam refuses an index older than the last one it read. Raise a definition's version when it changes, so people get the update. Keep the same key: a list signed with another one is refused.

To try a list before you host it, paste a path to the file on your computer into Paste the address of a source list.

Add a source to the project's list

Open a pull request to marcusbandit/anibeam-endpoints. Its README says how to write a definition and check it. Anibeam's own repository takes no pull request that adds a source.