# procraftkrd/aniyomi-anime-organizer architecture

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

- Interactive diagram: https://gitdiagram.com/procraftkrd/aniyomi-anime-organizer
- Repository: https://github.com/procraftkrd/aniyomi-anime-organizer

## Overview

Aniyomi Anime Organizer is an Android shell script that makes episodes downloaded through 1DM available in Aniyomi’s offline storage. The documented workflow runs the script after downloads finish: it scans 1DM’s video directory, parses filenames, builds an index, matches anime and episode names to Aniyomi folders, and moves matching files. It preserves filenames and documents backups, logging, and skip detection. Only the README was available as evidence; internal implementation and exact call wiring could not be verified.

Main entry points: [`aniyomi-anime-organizer.sh`](https://github.com/procraftkrd/aniyomi-anime-organizer/blob/main/aniyomi-anime-organizer.sh) (Move videos)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_workflow["Episode organization"]
  node_organizer["Organizer script"]
  node_scan["Scan videos"]
  node_parse["Parse filenames"]
  node_index["Build video index"]
  node_match["Match episodes"]
  node_move["Move videos"]
  node_backup["Existing-file backup"]
  node_logging["Error logging"]
end

subgraph group_storage["Device storage"]
  node_source["1DM video folder"]
  node_aniyomi_dirs["Aniyomi episode folders"]
  node_logfile["Organizer log"]
end

subgraph group_apps["Android apps"]
  node_aniyomi(("Aniyomi app"))
  node_one_dm(("1DM downloader"))
end

node_user(("User"))

node_user -->|"runs"| node_organizer
node_aniyomi -->|"downloads via"| node_one_dm
node_one_dm -->|"saves videos"| node_source
node_organizer -->|"starts"| node_scan
node_scan -->|"reads"| node_source
node_scan -->|"passes filenames"| node_parse
node_parse -->|"indexes parsed data"| node_index
node_index -->|"supplies index"| node_match
node_match -->|"searches folders"| node_aniyomi_dirs
node_move -->|"moves from"| node_source
node_move -->|"moves to"| node_aniyomi_dirs
node_move -->|"backs up conflicts"| node_backup
node_logging -->|"writes errors"| node_logfile
node_aniyomi -->|"plays organized episodes"| node_aniyomi_dirs

click node_organizer "https://github.com/procraftkrd/aniyomi-anime-organizer/blob/main/aniyomi-anime-organizer.sh"
click node_scan "https://github.com/procraftkrd/aniyomi-anime-organizer/blob/main/aniyomi-anime-organizer.sh"
click node_parse "https://github.com/procraftkrd/aniyomi-anime-organizer/blob/main/aniyomi-anime-organizer.sh"
click node_index "https://github.com/procraftkrd/aniyomi-anime-organizer/blob/main/aniyomi-anime-organizer.sh"
click node_match "https://github.com/procraftkrd/aniyomi-anime-organizer/blob/main/aniyomi-anime-organizer.sh"
click node_move "https://github.com/procraftkrd/aniyomi-anime-organizer/blob/main/aniyomi-anime-organizer.sh"
click node_backup "https://github.com/procraftkrd/aniyomi-anime-organizer/blob/main/aniyomi-anime-organizer.sh"
click node_logging "https://github.com/procraftkrd/aniyomi-anime-organizer/blob/main/aniyomi-anime-organizer.sh"

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_organizer,node_scan,node_parse,node_index,node_match,node_move,node_backup,node_logging,node_user toneBlue
class node_source,node_aniyomi_dirs,node_logfile toneAmber
class node_aniyomi,node_one_dm toneMint
```

## Components

### Episode organization

- [Organizer script](https://github.com/procraftkrd/aniyomi-anime-organizer/blob/main/aniyomi-anime-organizer.sh): `aniyomi-anime-organizer.sh`
- [Scan videos](https://github.com/procraftkrd/aniyomi-anime-organizer/blob/main/aniyomi-anime-organizer.sh): `aniyomi-anime-organizer.sh`
- [Parse filenames](https://github.com/procraftkrd/aniyomi-anime-organizer/blob/main/aniyomi-anime-organizer.sh): `aniyomi-anime-organizer.sh`
- [Build video index](https://github.com/procraftkrd/aniyomi-anime-organizer/blob/main/aniyomi-anime-organizer.sh): `aniyomi-anime-organizer.sh`
- [Match episodes](https://github.com/procraftkrd/aniyomi-anime-organizer/blob/main/aniyomi-anime-organizer.sh): `aniyomi-anime-organizer.sh`
- [Move videos](https://github.com/procraftkrd/aniyomi-anime-organizer/blob/main/aniyomi-anime-organizer.sh): `aniyomi-anime-organizer.sh`
- [Existing-file backup](https://github.com/procraftkrd/aniyomi-anime-organizer/blob/main/aniyomi-anime-organizer.sh): `aniyomi-anime-organizer.sh`
- [Error logging](https://github.com/procraftkrd/aniyomi-anime-organizer/blob/main/aniyomi-anime-organizer.sh): `aniyomi-anime-organizer.sh`

### Device storage

- **1DM video folder**
- **Aniyomi episode folders**
- **Organizer log**

### Android apps

- **Aniyomi app**
- **1DM downloader**

### Other components

- **User**

## Connections

- User → Organizer script: runs
- Aniyomi app → 1DM downloader: downloads via
- 1DM downloader → 1DM video folder: saves videos
- Organizer script → Scan videos: starts
- Scan videos → 1DM video folder: reads
- Scan videos → Parse filenames: passes filenames
- Parse filenames → Build video index: indexes parsed data
- Build video index → Match episodes: supplies index
- Match episodes → Aniyomi episode folders: searches folders
- Move videos → 1DM video folder: moves from
- Move videos → Aniyomi episode folders: moves to
- Move videos → Existing-file backup: backs up conflicts
- Error logging → Organizer log: writes errors
- Aniyomi app → Aniyomi episode folders: plays organized episodes
