cardigann-go

module
v0.1.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)

Installation

go get github.com/Kcchouette/cardigann-go

Requires Go 1.23+.

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)
    }
}

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

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.
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