# souhardyaghosh/irctc_seat_availibilty architecture

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

- Interactive diagram: https://gitdiagram.com/souhardyaghosh/irctc_seat_availibilty
- Repository: https://github.com/souhardyaghosh/irctc_seat_availibilty

## Overview

This repository provides train-seat availability lookups through a Flask endpoint and standalone command-line crawlers. The main documented workflow accepts a station pair, class, date, and train number; it resolves a CAPTCHA, looks up train details, requests availability, and returns the result. The crawler variants additionally fetch a train list and schedule before checking availability. Source excerpts support these paths and their external requests; api_correct.py appears incomplete, so its intended train-data request is not represented as a working integration.

Main entry points: [`api_a.py`](https://github.com/souhardyaghosh/irctc_seat_availibilty/blob/main/api_a.py) (Availability API), [`crawl.py`](https://github.com/souhardyaghosh/irctc_seat_availibilty/blob/main/crawl.py) (List and schedule lookup), [`api_correct.py`](https://github.com/souhardyaghosh/irctc_seat_availibilty/blob/main/api_correct.py) (Train API draft), [`crawlb.py`](https://github.com/souhardyaghosh/irctc_seat_availibilty/blob/main/crawlb.py) (CLI crawler)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_interfaces["User interfaces"]
  node_api_a["Availability API<br/>[api_a.py]"]
  node_api_correct["Train API draft<br/>[api_correct.py]"]
  node_cli_crawl["CLI crawler<br/>[crawl.py]"]
  node_cli_crawla["CLI crawler<br/>[crawla.py]"]
  node_cli_crawlb["CLI crawler<br/>[crawlb.py]"]
end

subgraph group_lookup["Train lookup"]
  node_captcha["CAPTCHA handling<br/>[api_a.py]"]
  node_train_details["Train lookup<br/>[api_a.py]"]
  node_availability["Availability lookup<br/>[api_a.py]"]
  node_crawler_stages["List and schedule lookup<br/>[crawl.py]"]
end

subgraph group_external["External services"]
  node_railway{{"Indian Rail enquiry"}}
  node_ocr{{"OCR service"}}
end

node_user(("Requester"))

node_user -->|"requests"| node_api_a
node_api_a -->|"solves CAPTCHA"| node_captcha
node_api_a -->|"looks up train"| node_train_details
node_api_a -->|"checks availability"| node_availability
node_captcha -->|"fetches image"| node_railway
node_captcha -->|"submits image"| node_ocr
node_api_a -->|"resolves stations"| node_railway
node_train_details -->|"requests train data"| node_railway
node_availability -->|"requests fare data"| node_railway
node_cli_crawl -->|"runs lookup"| node_crawler_stages
node_cli_crawla -->|"runs lookup"| node_crawler_stages
node_cli_crawlb -->|"runs lookup"| node_crawler_stages
node_crawler_stages -->|"requests train data"| node_railway
node_cli_crawlb -->|"submits CAPTCHA"| node_ocr
node_api_correct -->|"submits CAPTCHA"| node_ocr
node_api_correct -.->|"intended train request"| node_railway

click node_api_a "https://github.com/souhardyaghosh/irctc_seat_availibilty/blob/main/api_a.py"
click node_api_correct "https://github.com/souhardyaghosh/irctc_seat_availibilty/blob/main/api_correct.py"
click node_cli_crawl "https://github.com/souhardyaghosh/irctc_seat_availibilty/blob/main/crawl.py"
click node_cli_crawla "https://github.com/souhardyaghosh/irctc_seat_availibilty/blob/main/crawla.py"
click node_cli_crawlb "https://github.com/souhardyaghosh/irctc_seat_availibilty/blob/main/crawlb.py"
click node_captcha "https://github.com/souhardyaghosh/irctc_seat_availibilty/blob/main/api_a.py"
click node_train_details "https://github.com/souhardyaghosh/irctc_seat_availibilty/blob/main/api_a.py"
click node_availability "https://github.com/souhardyaghosh/irctc_seat_availibilty/blob/main/api_a.py"
click node_crawler_stages "https://github.com/souhardyaghosh/irctc_seat_availibilty/blob/main/crawl.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_api_a,node_api_correct,node_cli_crawl,node_cli_crawla,node_cli_crawlb toneBlue
class node_captcha,node_train_details,node_availability,node_crawler_stages toneAmber
class node_railway,node_ocr,node_user toneMint
```

## Components

### User interfaces

- [Availability API](https://github.com/souhardyaghosh/irctc_seat_availibilty/blob/main/api_a.py): `api_a.py`
- [Train API draft](https://github.com/souhardyaghosh/irctc_seat_availibilty/blob/main/api_correct.py): `api_correct.py`
- [CLI crawler](https://github.com/souhardyaghosh/irctc_seat_availibilty/blob/main/crawl.py): `crawl.py`
- [CLI crawler](https://github.com/souhardyaghosh/irctc_seat_availibilty/blob/main/crawla.py): `crawla.py`
- [CLI crawler](https://github.com/souhardyaghosh/irctc_seat_availibilty/blob/main/crawlb.py): `crawlb.py`

### Train lookup

- [CAPTCHA handling](https://github.com/souhardyaghosh/irctc_seat_availibilty/blob/main/api_a.py): `api_a.py`
- [Train lookup](https://github.com/souhardyaghosh/irctc_seat_availibilty/blob/main/api_a.py): `api_a.py`
- [Availability lookup](https://github.com/souhardyaghosh/irctc_seat_availibilty/blob/main/api_a.py): `api_a.py`
- [List and schedule lookup](https://github.com/souhardyaghosh/irctc_seat_availibilty/blob/main/crawl.py): `crawl.py`

### External services

- **Indian Rail enquiry**
- **OCR service**

### Other components

- **Requester**

## Connections

- Requester → Availability API: requests (evidence: `README.md`)
- Availability API → CAPTCHA handling: solves CAPTCHA (evidence: `api_a.py`)
- Availability API → Train lookup: looks up train (evidence: `api_a.py`)
- Availability API → Availability lookup: checks availability (evidence: `api_a.py`)
- CAPTCHA handling → Indian Rail enquiry: fetches image (evidence: `api_a.py`)
- CAPTCHA handling → OCR service: submits image (evidence: `api_a.py`)
- Availability API → Indian Rail enquiry: resolves stations (evidence: `api_a.py`)
- Train lookup → Indian Rail enquiry: requests train data (evidence: `api_a.py`)
- Availability lookup → Indian Rail enquiry: requests fare data (evidence: `api_a.py`)
- CLI crawler → List and schedule lookup: runs lookup (evidence: `crawl.py`)
- CLI crawler → List and schedule lookup: runs lookup (evidence: `crawla.py`)
- CLI crawler → List and schedule lookup: runs lookup (evidence: `crawlb.py`)
- List and schedule lookup → Indian Rail enquiry: requests train data (evidence: `crawl.py`)
- CLI crawler → OCR service: submits CAPTCHA (evidence: `crawlb.py`)
- Train API draft → OCR service: submits CAPTCHA (evidence: `api_correct.py`)
- Train API draft → Indian Rail enquiry: intended train request
