2024-08-24 16:48:20 +02:00
2024-08-22 21:57:43 +02:00
2024-08-24 14:48:56 +02:00
2024-08-21 00:38:39 +02:00
2024-08-21 21:33:25 +02:00
2024-08-23 18:40:43 +02:00
2024-08-21 00:21:26 +02:00
2024-08-23 21:03:05 +02:00
2024-08-24 15:16:04 +02:00
2024-08-21 00:21:26 +02:00

Overcrawlrr

Overcrawlrr Release

CRON based bot that automatically requests movies you may like in Overseer using your own rules.

  # Accept Sci-fi movie with a global rating above 5
  rules:
    - name: Acceptable sci-fi movie
      whenMatch:
        - genres:
            - science-fiction
        - score: above 5
      action: accept

Requirement:

Installation

To create a container for Overcrawlrr you can either use docker-compose or the docker cli.

See docker-compose.yaml file for full example

services:
  overcrawlrr:
    image: ghcr.io/psyko-gh/overcrawlrr:latest
    container_name: overcrawlrr
    restart: unless-stopped
    ports:
      - 5056:5056
    environment:
      - OVERSEERR_USER=
      - OVERSEERR_PASSWORD=
    volumes:
      - /path/to/config:/config

docker cli

docker run -d \
  --name=overcralwrr \
  --restart=unless-stopped \
  - OVERSEERR_USER= \
  - OVERSEERR_PASSWORD= \
  -v /path/to/config:/config \
  ghcr.io/psyko-gh/overcrawlrr:latest

Configuration

Configure Overseerr

An Overseerr user must be configured to post requests.

It is recommended to create a local user in Overseerr for Overcrawlrr. When testing your rules, you can disable Overseerr automatic validations for this user. You'll need to validate the requests in Overseerr, allowing for a double check on your rules.

  config:
    overseerr:
      apiUrl: xxx
      # Required - either the explicit value or '{{ OVERSEERR_USER }}' to load it from the matching environment variable
      user: '{{ OVERSEERR_USER }}'
      # Required - either the explicit value or '{{ OVERSEERR_PASSWORD }}' to load it from the matching environment variable
      password: '{{ OVERSEERR_PASSWORD }}'
      dryRun: true # Optional - dryRun will not send requests to Overseerr allowing you to test your rules

Configure the cron

It's time to configure the discovery job. It will fetch movies from Overseerr (from the upcoming/popular/trending sections) and evaluate each of them.

config:
  overseer:
    # ....
  discovery:
    # Required
    cron: '? 30 3 * * *'
    # Required - the overseer streams to search through
    # Possible values: upcoming, popular, trending
    streams:
      - upcoming
      - popular
      - trending
    # Required - the name of the ruleset used to evaluate movies
    ruleset: Ruleset name

Rulesets

A ruleset defines a group of rules, used to detect if a movie should be requested or not.

config:
  # ...
  rulesets:
      # Required - the name of the ruleset
    - name: Ruleset name
      # Optional - the name of another ruleset. This ruleset will apply all the rules in the extended rulese
      #            before applying its own rules
      extends: Another ruleset
      # Required - An array defining the rules of the ruleset
      rules:
        - # rule 1
        - # rule 2
        - # rule ...
  • The rules are applied in the declared order,
  • When a rule matches, the rule action is applied, and the evaluation of the ruleset stops.
  • If a rule doesn't match, it is ignored, and the next rule is evaluated.

Rule definition

    # Required - the name of the rule
  - name: The rule name
    # Required - an array defining the predicates used in the rule
    whenMatch:
      - # predicate 1
      - # predicate 2
      - # ...
      - # predicate n
    # Required - the action to apply when the rule matches
    # Possible values: accept or reject
    action: accept

The rule will match if all the predicates in the whenMatch match.

When matching:

  • If action: accept, a request is sent to Overseerr to add the movie,
  • If action: reject, the movie is ignored, and the evaluation of the ruleset stops.

Rule predicates


released

Filters on the released status of the movie.

    - released: yes
      # or
    - released: no

age

Filters on the age of the movie.

    - age: less than 2 years
      # or
    - age: more than 6 months

score

Filters on the score of the movie.

    - score: above 6.5
      # or
    - score: below 5.5

voteCount

Filters on the vote count of the movie.

    - voteCount: above 1000
      # or
    - voteCount: below 100

genre

Filters on the genre of the movie. Will match when one or more of the listed genres matches the genre of the movie.

Case insensitive

    - genres:
        - animation
        - romance

watchProviders

Filters based on the available Streaming/VOD platforms. Will match when one or more of the listed provider matches.

Case insensitive

    # This predicate will match when the movie is available in Germany on Netflix or Amazon Prime
    - watchProviders:
          # ISO 3166-1 alpha-2 format of the region (de, au, us, fr...)
        - region: de
        - names:
            - Netflix
            - Amazon Prime

cast

Filters based on the cast of the movie. Will match when one or more of the listed name matches.

Case insensitive

    - cast:
        - Denzel Washington
        - Jessica Alba

crew

Filters based on the crew of the movie. Will match when one or more of the listed name matches.

Case insensitive

    - crew:
        - James Cameron
        - Hans Zimmer

It is also possible to specify the job

    - crew:
        job: director
        names:
          - James Cameron
          - Steven Spielberg

productionCompany

Filters based on the production companies of the movie. Will match when one or more of the listed company matches.

Case insensitive

    - productionCompany:
        - 20th Century Fox
        - Warner Bros. Pictures
        - Twisted Pictures

or

Predicate that will match if any of its predicate matches

    # Will match if the movie is less than 2 years old OR if the movie score is above 8
    - or:
        - age: less than 2 years
        - score: above 8

and

Predicate that will match if all of its predicate matches

    # Will match if the movie is less than 2 years old AND if the movie genre is 'animation'
    - and:
        - age: less than 2 years
        - genres:
            - animation

not

Predicate that invert the result of its child predicate

    - not:
        - genres:
            - animation

Description
Automated smart movies request for Overseerr/Jellyseerr
Readme 1.8 MiB
Languages
TypeScript 99.1%
JavaScript 0.5%
Dockerfile 0.4%