# jnoundu89/dropreferencescraper architecture

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

- Interactive diagram: https://gitdiagram.com/jnoundu89/dropreferencescraper
- Repository: https://github.com/jnoundu89/dropreferencescraper

## Overview

A small command-line scraper: the user supplies a component type and model, the CLI invokes the scraper, which requests matching drop data from the external API and writes successful results to a CSV file. The sampled source shows no separate parsing or persistence layer beyond JSON normalization and CSV export.

Main entry points: [`drop_reference.py`](https://github.com/jnoundu89/dropreferencescraper/blob/main/drop_reference.py) (Drop scraper), [`main.py`](https://github.com/jnoundu89/dropreferencescraper/blob/main/main.py) (CLI entry point)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_cli["Command line"]
  node_cli_entry["CLI entry point<br/>[main.py]"]
end

subgraph group_scraper["Scraping and export"]
  node_scraper_fn["Drop scraper<br/>[drop_reference.py]"]
  node_json_normalize["JSON normalization<br/>[drop_reference.py]"]
end

node_user(("User"))
node_drop_api{{"Drop Reference API"}}
node_csv_file["CSV file"]

node_user -->|"provides type/model"| node_cli_entry
node_cli_entry -->|"invokes"| node_scraper_fn
node_scraper_fn -->|"POSTs filter"| node_drop_api
node_drop_api -->|"returns response"| node_scraper_fn
node_scraper_fn -->|"normalizes drops"| node_json_normalize
node_scraper_fn -->|"writes on success"| node_csv_file

click node_cli_entry "https://github.com/jnoundu89/dropreferencescraper/blob/main/main.py"
click node_scraper_fn "https://github.com/jnoundu89/dropreferencescraper/blob/main/drop_reference.py"
click node_json_normalize "https://github.com/jnoundu89/dropreferencescraper/blob/main/drop_reference.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_cli_entry,node_user toneBlue
class node_scraper_fn,node_json_normalize toneAmber
class node_drop_api toneMint
class node_csv_file toneIndigo
```

## Components

### Command line

- [CLI entry point](https://github.com/jnoundu89/dropreferencescraper/blob/main/main.py): `main.py`

### Scraping and export

- [Drop scraper](https://github.com/jnoundu89/dropreferencescraper/blob/main/drop_reference.py): `drop_reference.py`
- [JSON normalization](https://github.com/jnoundu89/dropreferencescraper/blob/main/drop_reference.py): `drop_reference.py`

### Other components

- **User**
- **Drop Reference API**
- **CSV file**

## Connections

- User → CLI entry point: provides type/model
- CLI entry point → Drop scraper: invokes
- Drop scraper → Drop Reference API: POSTs filter
- Drop Reference API → Drop scraper: returns response
- Drop scraper → JSON normalization: normalizes drops
- Drop scraper → CSV file: writes on success
