From f27b33a88240dd69414c7b8c1f3dab810e1953cb Mon Sep 17 00:00:00 2001 From: "peter.fong" Date: Mon, 1 Dec 2025 20:55:10 +0100 Subject: [PATCH] readme+context --- bookscraper/CHATGPT_CONTEXT.md | 110 ++++++++++++++++++++++++++++++++- bookscraper/README.md | 10 ++- 2 files changed, 114 insertions(+), 6 deletions(-) diff --git a/bookscraper/CHATGPT_CONTEXT.md b/bookscraper/CHATGPT_CONTEXT.md index 399d43d..8d03c1f 100644 --- a/bookscraper/CHATGPT_CONTEXT.md +++ b/bookscraper/CHATGPT_CONTEXT.md @@ -1,6 +1,110 @@ # ChatGPT Project Context – Bookscraper / Celery Branch ## 1. Scraper Status (STABIEL – NIET aanpassen zonder toestemming) De Python-based bookscraper werkt volledig end-to-end. De volgende onderdelen zijn getest, stabiel en mogen niet worden herschreven of opgeschoond zonder expliciete toestemming: ### prepare_scripts() Genereert 3 shell-scripts in de output map: - say.txt — alleen TTS (Sinji voice, timestamps) - makebook.txt — alleen m4b merge + move - allinone.txt — TTS + merge + move ### Volume structuur output///v1, v2, v3, … ### Chapter-output - Chapter 1 bevat een header - Overige chapters bevatten alleen tekst ### Werkende functionaliteit - Rate limiter - Chapter parsing - Description parsing - Cover download - Skip-logica - prepare_scripts() ## 2. Ontwikkelregels voor ChatGPT - Geen stille rewrites - Geen opschonen van werkende code - Geen herstructurering zonder toestemming - Wijzigingen minimalistisch en doelgericht - Diff/patch-stijl - Exact aangeven welke bestanden worden geraakt - Directorystructuur behouden ## 3. Focusgebied (celery_branch) - Celery worker architectuur verbeteren - Queueing & retry policies - Stabiliteit & observability - Integratie met scraping tasks - Download functionaliteit eerst; audio later ## 4. Omgeving - VS Code Dev Containers - Docker Compose aanwezig - Celery + Redis in gebruik - Redis via hostmachine: redis://host.docker.internal:6379 ## 5. Download Worker (NIEUW – Werkend) - download_worker.py volledig operationeel - Tasks worden correct geregistreerd: - tasks.scraping.download_chapter_task - tasks.scraping.download_chapter - tasks.scraping.scrape_book - Redis broker/backend correct geladen via .env - Worker pakt taken op en voert ze uit - Download pipeline werkt end-to-end ## 6. Logbus Status (NIEUW) - Logbus gebruikt nu REDIS_BACKEND of REDIS_BROKER - Geen crashes meer - Logging is non-blocking ## 7. Nog te bouwen (Download-Only fase) - DownloadController voor bulk-downloads - Flask API endpoint voor download - scrape_worker / audio_worker later ## 8. Project Tree (samengevat) scraper/ tasks/ worker/ logbus/ app.py docker-compose.yml OUTPUT structure blijft behouden. find . \ - -path "./output" -prune -o \ - -path "*/__pycache__" -prune -o \ - -print | sed -e 's;[^/]*/; |;g;s;|;|--;' + -path "./output" -prune -o \ + -path "_/**pycache**" -prune -o \ + -print | sed -e 's;[^/]_/; |;g;s;|;|--;' + +# CHATGPT_CONTEXT.md + +## 📘 Project Context — BookScraper (Celery Pipeline) + +**Status: 1 december 2025** + +Dit document brengt ChatGPT instant up-to-speed bij een nieuwe sessie. +Het beschrijft de actuele architectuur, flow, directorylayout en pending features. + +--- + +## ✅ Systeemarchitectuur (huidige implementatie) + +Het project is een **gedistribueerde Chinese webnovel-scraper** met: + +- **Flask Web GUI** (`web`) +- **Celery workers** per taaktype: + - `scraping` → boek metadata & chapterlist + - `controller` → pipelines dispatchen + - `download` → HTML binnenhalen + - `parse` → content extraheren + cleanen + hoofdstukheader maken + - `save` → tekst wegschrijven naar disk + volume-indeling + - `audio` → (later) m4b generation +- **Redis** als broker en backend + +Alle workers hebben dezelfde codebase gemount via: + +``` +volumes: + - .:/app +``` + +--- + +## 📂 Directorystructuur (relevant deel) + +``` +bookscraper/ +│ +├── scraper/ +│ ├── tasks/ +│ │ ├── scraping.py +│ │ ├── controller_tasks.py +│ │ ├── download_tasks.py +│ │ ├── parse_tasks.py +│ │ ├── save_tasks.py +│ │ └── pipeline.py +│ ├── download_controller.py +│ ├── utils.py +│ ├── sites.py +│ ├── book_scraper.py +│ +├── docker/ +│ ├── Dockerfile.scraper +│ ├── Dockerfile.web +│ └── Dockerfile.audio +│ +├── docker-compose.yml +└── CHATGPT_CONTEXT.md +``` + +--- + +## 🔄 Book Pipeline (zoals nu werkt) + +1. **start_scrape_book(url)** +2. **launch_downloads(scrape_result)** +3. **download_chapter(num, url)** +4. **parse_chapter(download_result)** +5. **save_chapter(parsed, volume_path)** + +Volumes worden correct weggeschreven naar: + +``` +BOOKSCRAPER_OUTPUT_DIR=/Users/peter/Desktop/books +``` + +--- + +## 🚀 Features op de planning + +1. download retry + delay +429 pause +1. Cover downloaden +1. Make scripts +1. Audio pipeline integratie + +--- + +## 🧵 Afspraak + +**ChatGPT moet altijd eerst om bestaande code vragen voordat het wijzigingen voorstelt.** + +--- + +## 🎯 Samenvatting + +Je hebt nu: + +✔ Een schaalbare, modulaire Celery pipeline +✔ Volume-splitting +✔ Headers voor hoofdstuk 1 +✔ Correcte I/O paths met host mount +✔ Stabiele end-to-end scraping flow diff --git a/bookscraper/README.md b/bookscraper/README.md index b3f96d4..d168f97 100644 --- a/bookscraper/README.md +++ b/bookscraper/README.md @@ -45,8 +45,7 @@ Tijdens het scrapen zie je realtime updates verschijnen, zoals: [DEBUG] GET chapter 1123 [DEBUG] HTTP 429 → retry sleep 4.0s -[DEBUG] Saved chapter: output/xxx/01123_章名.txt - +[DEBUG] Saved chapter: output/xxx/01123\_章名.txt Hierdoor voelt het alsof de scraper “live” aan het werk is. @@ -97,7 +96,6 @@ bookscraper/ ├── requirements.txt └── .env - --- # ▶️ Project handmatig starten (ZONDER Docker) @@ -123,3 +121,9 @@ docker run \ --env-file .env \ -v $(pwd)/output:/app/output \ bookscraper + + +docker compose down +docker compose build --no-cache +docker compose up +```