# ccf-2012/seedcross architecture

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

- Interactive diagram: https://gitdiagram.com/ccf-2012/seedcross
- Repository: https://github.com/ccf-2012/seedcross

## Overview

SeedCross is a Django web app for finding and adding cross-seed torrents to Deluge, qBittorrent, or Transmission. Its main workflow is: configure a download client and Jackett/Prowlarr, start a background run, enumerate local torrents, derive searchable titles, query indexers, compare title and size, then add matches paused for user verification. The README also describes run limits and cancellation, search history, progress/log views, tracker categorization, and path fixing. The core source excerpts are partial, so unsampled internals are represented only where README capabilities support them.

Main entry points: [`crseed/views.py`](https://github.com/ccf-2012/seedcross/blob/main/crseed/views.py) (Views and actions), [`crseed/CrossSeedAutoDL.py`](https://github.com/ccf-2012/seedcross/blob/main/crseed/CrossSeedAutoDL.py) (Cross-seed engine), [`crseed/tasks.py`](https://github.com/ccf-2012/seedcross/blob/main/crseed/tasks.py) (Background task), [`crseed/torclient.py`](https://github.com/ccf-2012/seedcross/blob/main/crseed/torclient.py) (Client adapter)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_web["Web interface"]
  node_views["Views and actions<br/>[views.py]"]
  node_pages["Web pages"]
  node_auth["Account access"]
  node_history_ui["History views<br/>[history.html]"]
  node_list_ui["Torrent list<br/>[list.html]"]
end

subgraph group_run["Cross-seed run"]
  node_run_task["Background task<br/>[tasks.py]"]
  node_engine["Cross-seed engine<br/>[CrossSeedAutoDL.py]"]
  node_title["Title parsing<br/>[tortitle.py]"]
  node_categories["Indexer categories<br/>[torcategory.py]"]
  node_fix["Path fixing<br/>[views.py]"]
end

subgraph group_integrations["External services"]
  node_client_adapter["Client adapter<br/>[torclient.py]"]
end

subgraph group_state["Application state"]
  node_settings[("Configuration<br/>[models.py]")]
  node_history[("Search history<br/>[models.py]")]
  node_crossed[("Crossed torrents<br/>[models.py]")]
  node_process_log[("Run progress and logs<br/>[models.py]")]
end

node_user(("User"))
node_downloader{{"Download client"}}
node_indexer{{"Jackett / Prowlarr"}}

node_user -->|"uses"| node_views
node_views -->|"renders"| node_pages
node_views -->|"authenticates"| node_auth
node_views -->|"reads / saves"| node_settings
node_views -->|"starts / cancels"| node_run_task
node_run_task -->|"gets configuration"| node_views
node_run_task -->|"updates"| node_process_log
node_run_task -->|"connects through"| node_client_adapter
node_client_adapter -->|"loads / adds torrents"| node_downloader
node_run_task -->|"iterates torrents"| node_engine
node_engine -->|"loads / adds torrents"| node_client_adapter
node_engine -->|"parses names"| node_title
node_engine -->|"selects indexers"| node_categories
node_engine -->|"searches"| node_indexer
node_engine -->|"records searches"| node_history
node_engine -->|"records matches"| node_crossed
node_engine -->|"reports progress"| node_process_log
node_views -->|"clears / deletes"| node_history
node_views -->|"renders history"| node_history_ui
node_views -->|"renders list"| node_list_ui
node_views -->|"clears records"| node_crossed
node_views -->|"refreshes status"| node_process_log
node_user -->|"requests fix"| node_fix
node_fix -->|"updates client paths"| node_client_adapter
node_fix -->|"updates record"| node_crossed

click node_views "https://github.com/ccf-2012/seedcross/blob/main/crseed/views.py"
click node_pages "https://github.com/ccf-2012/seedcross/tree/main/templates/crseed"
click node_auth "https://github.com/ccf-2012/seedcross/tree/main/accounts"
click node_run_task "https://github.com/ccf-2012/seedcross/blob/main/crseed/tasks.py"
click node_engine "https://github.com/ccf-2012/seedcross/blob/main/crseed/CrossSeedAutoDL.py"
click node_title "https://github.com/ccf-2012/seedcross/blob/main/crseed/tortitle.py"
click node_categories "https://github.com/ccf-2012/seedcross/blob/main/crseed/torcategory.py"
click node_client_adapter "https://github.com/ccf-2012/seedcross/blob/main/crseed/torclient.py"
click node_settings "https://github.com/ccf-2012/seedcross/blob/main/crseed/models.py"
click node_history "https://github.com/ccf-2012/seedcross/blob/main/crseed/models.py"
click node_crossed "https://github.com/ccf-2012/seedcross/blob/main/crseed/models.py"
click node_process_log "https://github.com/ccf-2012/seedcross/blob/main/crseed/models.py"
click node_history_ui "https://github.com/ccf-2012/seedcross/blob/main/templates/crseed/history.html"
click node_list_ui "https://github.com/ccf-2012/seedcross/blob/main/templates/crseed/list.html"
click node_fix "https://github.com/ccf-2012/seedcross/blob/main/crseed/views.py"

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_views,node_pages,node_auth,node_history_ui,node_list_ui,node_user,node_downloader toneBlue
class node_run_task,node_engine,node_title,node_categories,node_fix toneAmber
class node_client_adapter toneMint
class node_settings,node_history,node_crossed,node_process_log toneRose
class node_indexer toneIndigo
```

## Components

### Web interface

- [Views and actions](https://github.com/ccf-2012/seedcross/blob/main/crseed/views.py): `crseed/views.py`
- [Web pages](https://github.com/ccf-2012/seedcross/tree/main/templates/crseed): `templates/crseed`
- [Account access](https://github.com/ccf-2012/seedcross/tree/main/accounts): `accounts`
- [History views](https://github.com/ccf-2012/seedcross/blob/main/templates/crseed/history.html): `templates/crseed/history.html`
- [Torrent list](https://github.com/ccf-2012/seedcross/blob/main/templates/crseed/list.html): `templates/crseed/list.html`

### Cross-seed run

- [Background task](https://github.com/ccf-2012/seedcross/blob/main/crseed/tasks.py): `crseed/tasks.py`
- [Cross-seed engine](https://github.com/ccf-2012/seedcross/blob/main/crseed/CrossSeedAutoDL.py): `crseed/CrossSeedAutoDL.py`
- [Title parsing](https://github.com/ccf-2012/seedcross/blob/main/crseed/tortitle.py): `crseed/tortitle.py`
- [Indexer categories](https://github.com/ccf-2012/seedcross/blob/main/crseed/torcategory.py): `crseed/torcategory.py`
- [Path fixing](https://github.com/ccf-2012/seedcross/blob/main/crseed/views.py): `crseed/views.py`

### External services

- [Client adapter](https://github.com/ccf-2012/seedcross/blob/main/crseed/torclient.py): `crseed/torclient.py`

### Application state

- [Configuration](https://github.com/ccf-2012/seedcross/blob/main/crseed/models.py): `crseed/models.py`
- [Search history](https://github.com/ccf-2012/seedcross/blob/main/crseed/models.py): `crseed/models.py`
- [Crossed torrents](https://github.com/ccf-2012/seedcross/blob/main/crseed/models.py): `crseed/models.py`
- [Run progress and logs](https://github.com/ccf-2012/seedcross/blob/main/crseed/models.py): `crseed/models.py`

### Other components

- **User**
- **Download client**
- **Jackett / Prowlarr**

## Connections

- User → Views and actions: uses
- Views and actions → Web pages: renders
- Views and actions → Account access: authenticates
- Views and actions → Configuration: reads / saves
- Views and actions → Background task: starts / cancels
- Background task → Views and actions: gets configuration
- Background task → Run progress and logs: updates
- Background task → Client adapter: connects through
- Client adapter → Download client: loads / adds torrents
- Background task → Cross-seed engine: iterates torrents
- Cross-seed engine → Client adapter: loads / adds torrents
- Cross-seed engine → Title parsing: parses names
- Cross-seed engine → Indexer categories: selects indexers
- Cross-seed engine → Jackett / Prowlarr: searches
- Cross-seed engine → Search history: records searches
- Cross-seed engine → Crossed torrents: records matches
- Cross-seed engine → Run progress and logs: reports progress
- Views and actions → Search history: clears / deletes
- Views and actions → History views: renders history
- Views and actions → Torrent list: renders list
- Views and actions → Crossed torrents: clears records
- Views and actions → Run progress and logs: refreshes status
- User → Path fixing: requests fix
- Path fixing → Client adapter: updates client paths
- Path fixing → Crossed torrents: updates record
