Requestrr Documentation

repository·master·Indexed 19 days ago

https://github.com/thomst08/requestrr

Requestrr is a Discord chatbot server (version 2.1.10) that facilitates media requests through chat applications. It acts as an interface for media management services including Sonarr (V2-V4), Radarr (V2-V5), Lidarr (V1-V2), Overseerr, and Ombi (V3/V4). The tool allows users to request content via slash commands and buttons, provides notifications upon completion, and is configurable via a web portal or API.

Tokens
8.4K
Snippets
29
Records
39
Agent score
67%

What's inside Requestrr

  1. Overview of Requestrr

    master

    Requestrr is a chatbot designed to simplify the process of requesting content through services like Sonarr, Radarr, Lidarr, Overseerr, and Ombi using Discord. It allows users to interact via slash commands and buttons, provides notifications when requests are completed, and is fully configurable through a web portal.

    Supported Integrations:

    • Sonarr (V2-V4) & Radarr (V2-V5): Supports multiple instances via Overseerr (4k/1080p only).
    • Lidarr (V1-V2): Integration support.
    • Overseerr: Supports per-user permissions, quotas, and issue submission.
    • Ombi (V3/V4): Supports per-user roles, quotas, and issue submission.
  2. Install and start Requestrr using Docker

    master

    You can deploy Requestrr using Docker. After starting the container, access the web portal at http://youraddress:4545/ to create your admin account and perform configuration. Once the bot is invited to your Discord server, use the /help command to view available commands.

    Quick Setup (Recommended): Use these commands to create the necessary directory structure and start the container with a persistent config volume at /opt/Requestrr/config:

    mkdir /opt/Requestrr
    mkdir /opt/Requestrr/config
    docker run -d \
      --name requestrr \
      -p 4545:4545 \
      -v /opt/Requestrr/config:/root/config \
      --restart=unless-stopped \
      thomst08/requestrr
  3. Configure Requestrr with Environment Variables

    master

    Requestrr uses environment variables to customize deployment settings, such as the internal port and the base URL path. This is particularly useful when deploying behind a reverse proxy.

    Available Environment Variables:

    VariableDescriptionDefaultExample
    REQUESTRR_PORTSets the port the application listens on inside the container.4545-e REQUESTRR_PORT=5000
    REQUESTRR_BASEURLDefines a base URL path for Requestrr (e.g., for reverse proxy subpaths)./-e REQUESTRR_BASEURL=/requestrr

    Note: When setting REQUESTRR_BASEURL, ensure it matches your reverse proxy configuration if serving Requestrr under a subpath.

    docker run -d \
      --name requestrr \
      -p 5000:5000 \
      -v /opt/Requestrr/config:/root/config \
      -e REQUESTRR_PORT=5000 \
      -e REQUESTRR_BASEURL=/requestrr \
      --restart=unless-stopped \
      thomst08/requestrr
  4. Deploy Requestrr using Docker Compose

    master

    You can deploy Requestrr using the provided docker-compose.yml configuration. This setup maps the application to port 4545 and requires a persistent volume for configuration data.

    Key Configuration Details:

    • Image: thomst08/requestrr
    • Port Mapping: The container listens on port 4545, which is mapped to host port 4545.
    • Persistence: You must map a local directory to /root/config inside the container to ensure your settings and data are preserved across restarts.
    • Restart Policy: Set to unless-stopped to ensure the service recovers automatically unless manually halted.
    version: "3.4"
    services:
      requestrr:
        image: thomst08/requestrr
        hostname: requestrr
        container_name: requestrr
        ports:
        - 4545:4545
        volumes:
        - /path to config:/root/config
        restart: unless-stopped
  5. Manage Lidarr categories

    master

    Lidarr categories can be managed using the following actions:

    • addLidarrCategory(category): Adds a new category object to the existing list.
    • removeLidarrCategory(categoryId): Removes a category by its unique ID.
    • setLidarrCategory(categoryId, field, data): Updates a specific field within an existing category. Supported fields are:
      • name: The category name.
      • profileId: The associated Lidarr profile ID.
      • metadataProfileId: The associated Lidarr metadata profile ID.
      • rootFolder: The root directory for the category.
      • tags: An array of tag IDs.
  6. Manage Sonarr TV Show categories

    master

    Requestrr allows you to define categories for Sonarr, which map specific settings (like language, profile, and root folder) to groups of shows.

    Available category fields that can be updated via setSonarrCategory:

    • name: The display name of the category.
    • languageId: The ID of the language to use.
    • profileId: The quality profile ID from Sonarr.
    • rootFolder: The root path for the series.
    • tags: An array of tag IDs.
    • seriesType: The type of series (e.g., standard, daily).
    • useSeasonFolders: Boolean indicating if season folders should be used.
  7. Load Radarr metadata (Paths, Profiles, and Tags)

    master

    To populate the UI with data from your Radarr instance, use these loading actions. They all accept an optional forceReload boolean. If forceReload is true, the action will bypass the local cache and fetch fresh data from the API.

    • loadRadarrRootPaths(forceReload): Fetches available root folders from Radarr via /api/movies/radarr/rootpath.
    • loadRadarrProfiles(forceReload): Fetches quality profiles from Radarr via /api/movies/radarr/profile.
    • loadRadarrTags(forceReload): Fetches tags from Radarr via /api/movies/radarr/tag.
    // Load everything fresh
    await loadRadarrRootPaths(true);
    await loadRadarrProfiles(true);
    await loadRadarrTags(true);
  8. Manage music client settings via the API

    master

    The Requestrr WebApi provides endpoints to retrieve and modify the status of music clients. These operations require a Bearer token for authorization.

    Get Music Settings

    Perform a GET request to ../api/music to retrieve the current configuration of music clients. The response is expected to be a JSON object containing the settings.

    Disable a Music Client

    Perform a POST request to ../api/music/disable to disable a music client. The API returns a JSON response indicating success or failure via an ok field. If ok is true, the client has been successfully disabled.

    # Get music settings
    curl -X GET "../api/music" \
         -H "Accept: application/json" \
         -H "Content-Type: application/json" \
         -H "Authorization: Bearer <YOUR_TOKEN>"
    
    # Disable a music client
    curl -X POST "../api/music/disable" \
         -H "Accept: application/json" \
         -H "Content-Type: application/json" \
         -H "Authorization: Bearer <YOUR_TOKEN>"
  9. Configure Overseerr client settings

    master

    To configure or update Overseerr as a TV show client, use the saveOverseerrClient action. This sends a POST request to ../api/tvshows/overseerr.

    Overseerr Configuration Schema: When saving settings, the payload must include the following fields within the overseerr object and a top-level restrictions field:

    • hostname: The hostname of the Overseerr instance.
    • port: The port number (must be a number).
    • apiKey: The Overseerr API key.
    • defaultApiUserID: The default API User ID for Overseerr.
    • useSSL: Boolean indicating if SSL should be used.
    • version: The version of the Overseerr instance.
    • restrictions: Client-specific restrictions.
    // Example structure for saveOverseerrClient(saveModel)
    const saveModel = {
        overseerr: {
            hostname: "overseerr.example.com",
            port: 443,
            apiKey: "your_api_key",
            defaultApiUserID: 1,
            useSSL: true,
            version: "v2"
        },
        restrictions: {}
    };