cardigann-go

module
v0.2.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jul 28, 2026 License: LGPL-3.0

README

cardigann-go

cardigann-go is a reusable Go implementation of the Cardigann indexer-definition engine.

It provides:

  • YAML definition parsing (definition)
  • definition fetching/sync from tarballs (defs)
  • the Cardigann search engine (engine)
  • template rendering and field filters (template, template/filters)
  • selector backends for HTML, JSON, and XML (selector)
  • per-indexer HTTP client helpers (httpclient)
  • login flows (login)
  • a library-local normalized release model (release)
  • shared HTTP utilities (internal/httputil)

Installation

go get github.com/Kcchouette/cardigann-go

Requires Go 1.21+.

Usage

package main

import (
    "fmt"
    "log"

    "github.com/Kcchouette/cardigann-go/definition"
    "github.com/Kcchouette/cardigann-go/engine"
)

func main() {
    // Parse a Cardigann YAML definition
    def, err := definition.Parse(yamlBytes)
    if err != nil {
        log.Fatal(err)
    }

    // Create a search provider
    provider := engine.NewProvider(def, "https://example.tracker.com", nil)

    // Execute a search
    releases, err := provider.Search(ctx, engine.Query{Keywords: "1080p"})
    if err != nil {
        log.Fatal(err)
    }

    for _, r := range releases {
        fmt.Printf("%s (%d bytes)\n", r.Title, r.Size)
    }
}

Breaking changes (v0.2.0)

  • CookiePersister interface: methods renamed from LoadCookies/SaveCookies to Load/Store
  • Provider struct fields (Def, BaseURL, Config, HTTPClient, Client) are now unexported. Use Provider.Def() accessor for definition access.

Supported features

Feature Status
HTML scraping (CSS selectors) Done
JSON API (gjson paths) Done
XML/RSS/Newznab (etree) Done
Login: form, cookie, get Done
21 field filters Done
Row-level filters (andmatch) Done
Template rendering Done
HTTP client (rate limit, retries, proxy) Done

Query Parameters

The following keys are available via {{ index .Query "<key>" }} in search paths and field templates. Keywords is also available as {{ .Keywords }} at the top level of the template context.

Key Type Description
Keywords string Search keywords (also: {{ .Keywords }})
q string Alias for Keywords
IMDBID string Full IMDb ID, e.g. tt1234567
IMDBIDShort string Numeric-only IMDb ID, e.g. 1234567
TMDBID string The Movie Database ID
TVDBID string TheTVDB series ID
DoubanID string Douban movie ID (Asian indexers)
Season string Season number
Ep string Episode number
Year string Release year
Genre string Genre filter string
categories string Comma-separated native category IDs (when categories are requested)

Contributing

  1. Fork the repository
  2. Create a feature branch (git checkout -b feat/my-feature)
  3. Commit your changes (git commit -am 'Add my feature')
  4. Push to the branch (git push origin feat/my-feature)
  5. Open a Pull Request

License

This library is licensed under LGPL-3.0. You may use/link it from other applications, including closed-source ones, but if you distribute a modified version of this library itself, those modifications must remain available under LGPL-3.0.

  • Not affiliated with Prowlarr, Servarr, or the wider *arr ecosystem.
  • This repository does not vendor or redistribute Cardigann indexer definitions or schema.json.
  • Users are responsible for the definitions and indexers they choose to fetch or use.

Directories

Path Synopsis
Package model contient les structures Go correspondant au format YAML Cardigann (schéma v11) utilisé par Prowlarr/Indexers.
Package model contient les structures Go correspondant au format YAML Cardigann (schéma v11) utilisé par Prowlarr/Indexers.
Package defs synchronise les définitions Cardigann depuis le dépôt GitHub Prowlarr/Indexers (jamais vendorisées ni redistribuées, cf.
Package defs synchronise les définitions Cardigann depuis le dépôt GitHub Prowlarr/Indexers (jamais vendorisées ni redistribuées, cf.
Package engine implémente le moteur d'exécution des définitions Cardigann : rendu des templates de recherche, appel HTTP, extraction des lignes/champs via les sélecteurs, application des filtres de post-traitement, et construction de releases normalisées.
Package engine implémente le moteur d'exécution des définitions Cardigann : rendu des templates de recherche, appel HTTP, extraction des lignes/champs via les sélecteurs, application des filtres de post-traitement, et construction de releases normalisées.
Package httpclient fournit le client HTTP par-indexeur : cookies persistés (SQLite), limite de débit basée sur `requestDelay`, proxy optionnel (HTTP/SOCKS5), et retries avec backoff exponentiel sur erreurs réseau/5xx.
Package httpclient fournit le client HTTP par-indexeur : cookies persistés (SQLite), limite de débit basée sur `requestDelay`, proxy optionnel (HTTP/SOCKS5), et retries avec backoff exponentiel sur erreurs réseau/5xx.
internal
httputil
Package httputil fournit des utilitaires HTTP partagés entre les packages engine et login pour éviter la duplication de logique commune.
Package httputil fournit des utilitaires HTTP partagés entre les packages engine et login pour éviter la duplication de logique commune.
Package login implémente le moteur d'authentification Cardigann : méthodes `form`, `cookie`, `get` et `oneurl` supportées.
Package login implémente le moteur d'authentification Cardigann : méthodes `form`, `cookie`, `get` et `oneurl` supportées.
Package selector fournit une abstraction commune aux différents modes d'extraction Cardigann (CSS pour HTML, JSON path pour JSON, XML via etree).
Package selector fournit une abstraction commune aux différents modes d'extraction Cardigann (CSS pour HTML, JSON path pour JSON, XML via etree).
Package template fournit le moteur de rendu des templates Cardigann (`{{ .Keywords }}`, `{{ if .Config.xxx }}...{{ end }}`, etc.), qui est nativement compatible avec la syntaxe Go text/template.
Package template fournit le moteur de rendu des templates Cardigann (`{{ .Keywords }}`, `{{ if .Config.xxx }}...{{ end }}`, etc.), qui est nativement compatible avec la syntaxe Go text/template.
filters
Package filters implémente le pipeline de filtres de post-traitement Cardigann (distinct du moteur de template) appliqué aux valeurs de champs extraites (`fields.<name>.filters`).
Package filters implémente le pipeline de filtres de post-traitement Cardigann (distinct du moteur de template) appliqué aux valeurs de champs extraites (`fields.<name>.filters`).
Package torznab génère des réponses XML au format Torznab-compatible (https://torznab.github.io/schemas/2015/feed) pour l'interopérabilité avec les clients type Sonarr/Radarr/Prowlarr.
Package torznab génère des réponses XML au format Torznab-compatible (https://torznab.github.io/schemas/2015/feed) pour l'interopérabilité avec les clients type Sonarr/Radarr/Prowlarr.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL