# thebeastlt/torrentio-scraper architecture

> Architecture diagram of the GitHub repository thebeastlt/torrentio-scraper, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-25). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/thebeastlt/torrentio-scraper
- Repository: https://github.com/thebeastlt/torrentio-scraper

## Overview

Torrentio is a Stremio addon that finds scraped torrent entries and presents them as playable streams; its resolve route can then hand a selected stream to a debrid provider. A separate catalogs addon exposes catalog metadata derived from indexed torrents. The main flow is supported by the README and sampled routing, repository, and provider excerpts; source for the core addon handlers and catalog metadata implementation was not sampled, so their internal wiring is shown only at a high level.

Main entry points: [`addon/serverless.js`](https://github.com/thebeastlt/torrentio-scraper/blob/master/addon/serverless.js) (Addon HTTP routes), [`addon/addon.js`](https://github.com/thebeastlt/torrentio-scraper/blob/master/addon/addon.js) (Addon handlers), [`addon/moch/moch.js`](https://github.com/thebeastlt/torrentio-scraper/blob/master/addon/moch/moch.js) (Provider dispatch), [`addon/moch/realdebrid.js`](https://github.com/thebeastlt/torrentio-scraper/blob/master/addon/moch/realdebrid.js) (Real-Debrid adapter)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_serving["Addon serving"]
  node_addon_http["Addon HTTP routes<br/>[serverless.js]"]
  node_addon_core["Addon handlers<br/>[addon.js]"]
  node_configuration["Configuration UI<br/>[landingTemplate.js]"]
end

subgraph group_discovery["Stream discovery"]
  node_torrent_index[("Torrent index<br/>[repository.js]")]
  node_stream_rules["Stream selection<br/>[filter.js]"]
  node_stream_sort["Stream ordering<br/>[sort.js]"]
  node_magnet["Magnet lookup<br/>[magnetHelper.js]"]
  node_stream_cache[("Availability cache<br/>[cache.js]")]
end

subgraph group_debrid["Debrid resolution"]
  node_resolve_dispatch["Provider dispatch<br/>[moch.js]"]
  node_realdebrid["Real-Debrid adapter<br/>[realdebrid.js]"]
  node_torbox["TorBox adapter<br/>[torbox.js]"]
  node_other_debrid["Other adapters"]
  node_debrid_services(("Debrid services"))
end

subgraph group_catalogs["Catalog service"]
  node_catalog_http["Catalog HTTP routes<br/>[serverless.js]"]
  node_catalog_core["Catalog handlers<br/>[addon.js]"]
  node_catalog_index[("Catalog index query<br/>[repository.js]")]
  node_catalog_cache[("Catalog caching<br/>[cache.js]")]
  node_catalog_metadata["Metadata lookup<br/>[metadata.js]"]
end

node_stremio(("Stremio client"))
node_metadata_source(("Metadata source"))

node_stremio -->|"requests streams"| node_addon_http
node_addon_http -->|"dispatches requests"| node_addon_core
node_addon_http -->|"renders setup"| node_configuration
node_addon_core -->|"queries entries"| node_torrent_index
node_addon_core -->|"filters results"| node_stream_rules
node_addon_core -->|"orders results"| node_stream_sort
node_addon_http -->|"dispatches resolve"| node_resolve_dispatch
node_resolve_dispatch -->|"calls adapter"| node_realdebrid
node_resolve_dispatch -->|"calls adapter"| node_torbox
node_resolve_dispatch -->|"calls adapter"| node_other_debrid
node_realdebrid -->|"reads availability"| node_stream_cache
node_realdebrid -->|"gets magnet"| node_magnet
node_torbox -->|"gets magnet"| node_magnet
node_realdebrid -->|"requests links"| node_debrid_services
node_torbox -->|"requests links"| node_debrid_services
node_other_debrid -.->|"requests links"| node_debrid_services
node_stremio -->|"requests catalogs"| node_catalog_http
node_catalog_http -->|"dispatches requests"| node_catalog_core
node_catalog_core -->|"caches catalog data"| node_catalog_cache
node_catalog_core -->|"queries identifiers"| node_catalog_index
node_catalog_core -->|"loads metadata"| node_catalog_metadata
node_catalog_metadata -.->|"looks up metadata"| node_metadata_source

click node_addon_http "https://github.com/thebeastlt/torrentio-scraper/blob/master/addon/serverless.js"
click node_addon_core "https://github.com/thebeastlt/torrentio-scraper/blob/master/addon/addon.js"
click node_configuration "https://github.com/thebeastlt/torrentio-scraper/blob/master/addon/lib/landingTemplate.js"
click node_torrent_index "https://github.com/thebeastlt/torrentio-scraper/blob/master/addon/lib/repository.js"
click node_stream_rules "https://github.com/thebeastlt/torrentio-scraper/blob/master/addon/lib/filter.js"
click node_stream_sort "https://github.com/thebeastlt/torrentio-scraper/blob/master/addon/lib/sort.js"
click node_magnet "https://github.com/thebeastlt/torrentio-scraper/blob/master/addon/lib/magnetHelper.js"
click node_stream_cache "https://github.com/thebeastlt/torrentio-scraper/blob/master/addon/lib/cache.js"
click node_resolve_dispatch "https://github.com/thebeastlt/torrentio-scraper/blob/master/addon/moch/moch.js"
click node_realdebrid "https://github.com/thebeastlt/torrentio-scraper/blob/master/addon/moch/realdebrid.js"
click node_torbox "https://github.com/thebeastlt/torrentio-scraper/blob/master/addon/moch/torbox.js"
click node_other_debrid "https://github.com/thebeastlt/torrentio-scraper/tree/master/addon/moch"
click node_catalog_http "https://github.com/thebeastlt/torrentio-scraper/blob/master/catalogs/serverless.js"
click node_catalog_core "https://github.com/thebeastlt/torrentio-scraper/blob/master/catalogs/addon.js"
click node_catalog_index "https://github.com/thebeastlt/torrentio-scraper/blob/master/catalogs/lib/repository.js"
click node_catalog_cache "https://github.com/thebeastlt/torrentio-scraper/blob/master/catalogs/lib/cache.js"
click node_catalog_metadata "https://github.com/thebeastlt/torrentio-scraper/blob/master/catalogs/lib/metadata.js"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_addon_http,node_addon_core,node_configuration,node_stremio toneBlue
class node_torrent_index,node_stream_rules,node_stream_sort,node_magnet,node_stream_cache toneAmber
class node_resolve_dispatch,node_realdebrid,node_torbox,node_other_debrid,node_debrid_services toneMint
class node_catalog_http,node_catalog_core,node_catalog_index,node_catalog_cache,node_catalog_metadata toneRose
class node_metadata_source toneIndigo
```

## Components

### Addon serving

- [Addon HTTP routes](https://github.com/thebeastlt/torrentio-scraper/blob/master/addon/serverless.js): `addon/serverless.js`
- [Addon handlers](https://github.com/thebeastlt/torrentio-scraper/blob/master/addon/addon.js): `addon/addon.js`
- [Configuration UI](https://github.com/thebeastlt/torrentio-scraper/blob/master/addon/lib/landingTemplate.js): `addon/lib/landingTemplate.js`

### Stream discovery

- [Torrent index](https://github.com/thebeastlt/torrentio-scraper/blob/master/addon/lib/repository.js): `addon/lib/repository.js`
- [Stream selection](https://github.com/thebeastlt/torrentio-scraper/blob/master/addon/lib/filter.js): `addon/lib/filter.js`
- [Stream ordering](https://github.com/thebeastlt/torrentio-scraper/blob/master/addon/lib/sort.js): `addon/lib/sort.js`
- [Magnet lookup](https://github.com/thebeastlt/torrentio-scraper/blob/master/addon/lib/magnetHelper.js): `addon/lib/magnetHelper.js`
- [Availability cache](https://github.com/thebeastlt/torrentio-scraper/blob/master/addon/lib/cache.js): `addon/lib/cache.js`

### Debrid resolution

- [Provider dispatch](https://github.com/thebeastlt/torrentio-scraper/blob/master/addon/moch/moch.js): `addon/moch/moch.js`
- [Real-Debrid adapter](https://github.com/thebeastlt/torrentio-scraper/blob/master/addon/moch/realdebrid.js): `addon/moch/realdebrid.js`
- [TorBox adapter](https://github.com/thebeastlt/torrentio-scraper/blob/master/addon/moch/torbox.js): `addon/moch/torbox.js`
- [Other adapters](https://github.com/thebeastlt/torrentio-scraper/tree/master/addon/moch): `addon/moch`
- **Debrid services**

### Catalog service

- [Catalog HTTP routes](https://github.com/thebeastlt/torrentio-scraper/blob/master/catalogs/serverless.js): `catalogs/serverless.js`
- [Catalog handlers](https://github.com/thebeastlt/torrentio-scraper/blob/master/catalogs/addon.js): `catalogs/addon.js`
- [Catalog index query](https://github.com/thebeastlt/torrentio-scraper/blob/master/catalogs/lib/repository.js): `catalogs/lib/repository.js`
- [Catalog caching](https://github.com/thebeastlt/torrentio-scraper/blob/master/catalogs/lib/cache.js): `catalogs/lib/cache.js`
- [Metadata lookup](https://github.com/thebeastlt/torrentio-scraper/blob/master/catalogs/lib/metadata.js): `catalogs/lib/metadata.js`

### Other components

- **Stremio client**
- **Metadata source**

## Connections

- Stremio client → Addon HTTP routes: requests streams
- Addon HTTP routes → Addon handlers: dispatches requests
- Addon HTTP routes → Configuration UI: renders setup
- Addon handlers → Torrent index: queries entries
- Addon handlers → Stream selection: filters results
- Addon handlers → Stream ordering: orders results
- Addon HTTP routes → Provider dispatch: dispatches resolve
- Provider dispatch → Real-Debrid adapter: calls adapter
- Provider dispatch → TorBox adapter: calls adapter
- Provider dispatch → Other adapters: calls adapter
- Real-Debrid adapter → Availability cache: reads availability
- Real-Debrid adapter → Magnet lookup: gets magnet
- TorBox adapter → Magnet lookup: gets magnet
- Real-Debrid adapter → Debrid services: requests links
- TorBox adapter → Debrid services: requests links
- Other adapters → Debrid services: requests links
- Stremio client → Catalog HTTP routes: requests catalogs
- Catalog HTTP routes → Catalog handlers: dispatches requests
- Catalog handlers → Catalog caching: caches catalog data
- Catalog handlers → Catalog index query: queries identifiers
- Catalog handlers → Metadata lookup: loads metadata
- Metadata lookup → Metadata source: looks up metadata
