searxng

Crates.iosearxng
lib.rssearxng
version0.1.0
created_at2025-08-10 20:00:54.459701+00
updated_at2025-08-10 20:00:54.459701+00
descriptionLib to prepare and receive searches fo SearXNG
homepage
repositoryhttps://codeberg.org/slundi/searxng
max_upload_size
id1789253
size86,630
slundi (slundi)

documentation

README

SearXNG CLI

Asynchronous CLI for SearXNG writtent in rust 🦀, with XDG support for configuration.

Features

Install

cargo install searxng

Usage

Basic search

searxng search "rust programming"

# with filters
searxng search "news" --categories general,news --language fr --page 2

# compact output
searxng search "python" --compact

# specific search engines
searxng search "weather" --engines google,bing

# Test connection
searxng test

# List available engines
searxng engines

Configuration

# Show configuration
searxng config show

# Edit base URL
searxng config set base_url "https://search.example.com"

# Set default language to french
searxng config set language "fr"

# Set safe search level (0-2)
searxng config set safe_search 1

# Reset config
searxng config reset

Configuration

Le fichier de configuration est automatiquement créé dans :

  • Linux: ~/.config/searxng-cli/config.toml
  • macOS: ~/Library/Application Support/searxng-cli/config.toml
  • Windows: %APPDATA%\searxng-cli\config.toml

Exemple de configuration :

base_url = "https://searx.be"
default_engine = "google"
default_category = "general"
language = "fr"
safe_search = 1

API de la bibliothèque

use searxng_client::{SearXNGClient, SearXNGConfig, SearchParams};

#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
    // Configuration
    let config = SearXNGConfig {
        base_url: "https://searx.be".to_string(),
        default_category: Some("general".to_string()),
        language: Some("fr".to_string()),
        ..Default::default()
    };

    // Client
    let client = SearXNGClient::new(config);

    // Recherche simple
    let results = client.simple_search("rust programming").await?;
    println!("Trouvé {} résultats", results.number_of_results);

    // Recherche avancée
    let params = SearchParams {
        query: "python".to_string(),
        categories: Some("general,it".to_string()),
        language: Some("en".to_string()),
        pageno: Some(2),
        ..Default::default()
    };
    
    let results = client.search(params).await?;
    
    for result in results.results {
        println!("{}: {}", result.title, result.url);
    }

    Ok(())
}

Paramètres de recherche

Paramètre Description Exemples
query Terme de recherche "rust programming"
categories Catégories séparées par des virgules general,images,videos,news
engines Moteurs séparés par des virgules google,bing,duckduckgo
language Code langue ISO 639-1 fr, en, de, es
page Numéro de page 1, 2, 3
time_range Période de temps day, week, month, year
safe_search Niveau de filtrage (0=Off, 1=Modéré, 2=Strict) 0, 1, 2

JSON output

{
  "query": "lookup words",
  "number_of_results": 42,
  "results": [
    {
      "title": "Result title",
      "url": "https://example.com",
      "content": "Content sample...",
      "engine": "google",
      "category": "general",
      "score": 0.95
    }
  ],
  "suggestions": ["suggestion1", "suggestion2"],
  "corrections": [],
  "answers": [],
  "infoboxes": []
}
Commit count: 0

cargo fmt