chefkoch-cli 0.1.1__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 smlfg
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
@@ -0,0 +1,136 @@
1
+ Metadata-Version: 2.4
2
+ Name: chefkoch-cli
3
+ Version: 0.1.1
4
+ Summary: Chefkoch.de-Rezepte im Terminal: Suche, Rezeptdetails, Einkaufsliste und Watch
5
+ Author-email: smlfg <186922365+smlfg@users.noreply.github.com>
6
+ License-Expression: MIT
7
+ Project-URL: Homepage, https://github.com/smlfg/chefkoch-cli
8
+ Project-URL: Repository, https://github.com/smlfg/chefkoch-cli
9
+ Keywords: chefkoch,recipes,cli,terminal
10
+ Classifier: Environment :: Console
11
+ Classifier: Programming Language :: Python :: 3
12
+ Classifier: Programming Language :: Python :: 3.10
13
+ Classifier: Programming Language :: Python :: 3.11
14
+ Classifier: Programming Language :: Python :: 3.12
15
+ Classifier: Programming Language :: Python :: 3.13
16
+ Requires-Python: >=3.10
17
+ Description-Content-Type: text/markdown
18
+ License-File: LICENSE
19
+ Requires-Dist: httpx>=0.24
20
+ Dynamic: license-file
21
+
22
+ # chefkoch-cli
23
+
24
+ Chefkoch.de-Rezepte im Terminal: Suche mit Filtern, Rezeptdetails mit auf
25
+ Portionen skalierten Zutaten, Einkaufsliste aus mehreren Rezepten und Watch auf
26
+ neue Rezepte. Ausschließlich lesend, ohne Login.
27
+
28
+ ## Schnellstart
29
+
30
+ Voraussetzung: Python 3.10+ und `pipx`.
31
+
32
+ ```bash
33
+ pipx install git+https://github.com/smlfg/chefkoch-cli
34
+ chefkoch suche lasagne --limit 5
35
+ chefkoch rezept "vegane lasagne" --portionen 4
36
+ chefkoch einkaufsliste "die ultimative vegane lasagne" "vegetarische spinat gemüse lasagne" --portionen 4
37
+ ```
38
+
39
+ Die Suche nimmt den Begriff positional. `chefkoch rezept` und
40
+ `chefkoch einkaufsliste` akzeptieren Namen, IDs oder Chefkoch-URLs; bei
41
+ mehreren Treffern erscheint im Terminal eine nummerierte Auswahl.
42
+
43
+ ## Befehle und Beispiele
44
+
45
+ ### Suchen
46
+
47
+ ```bash
48
+ chefkoch suche lasagne --limit 5
49
+ chefkoch suche chili --vegetarisch --max-zeit 30 --min-bewertung 4.5
50
+ chefkoch suche suppe --vegan --sort zeit
51
+ chefkoch suche kuchen --sort neu --limit 10 --seite 2
52
+ ```
53
+
54
+ Filter: `--vegetarisch`, `--vegan`, `--max-zeit N`, `--min-bewertung X`,
55
+ `--schwierigkeit simpel|normal|pfiffig`, `--sort bewertung|zeit|neu`,
56
+ `--limit N`, `--seite N`.
57
+
58
+ ### Rezept anzeigen
59
+
60
+ ```bash
61
+ chefkoch rezept "vegane lasagne" --portionen 4
62
+ chefkoch rezept 745721177147257
63
+ chefkoch rezept https://www.chefkoch.de/rezepte/745721177147257/Lasagne.html --portionen 8
64
+ ```
65
+
66
+ Ein Name sucht und zeigt bei mehreren Treffern eine nummerierte Auswahl. Eine
67
+ ID oder URL lädt das Rezept direkt. `--portionen` skaliert die Zutaten.
68
+
69
+ ### Einkaufsliste
70
+
71
+ ```bash
72
+ chefkoch einkaufsliste "die ultimative vegane lasagne" "vegetarische spinat gemüse lasagne" --portionen 4
73
+ ```
74
+
75
+ Mehrere Namen, IDs oder URLs ergeben eine zusammengefasste Liste. Gleiche
76
+ Zutaten mit gleicher Einheit werden summiert, unterschiedliche Einheiten
77
+ bleiben getrennt.
78
+
79
+ ### Watch
80
+
81
+ ```bash
82
+ chefkoch watch "vegane lasagne" --min-bewertung 4.5
83
+ ```
84
+
85
+ Watch merkt sich die zuletzt gesehenen IDs pro Suchbegriff und Filter und zeigt
86
+ beim nächsten Lauf nur neue Treffer.
87
+
88
+ ## Ausgabe und JSON
89
+
90
+ Im Terminal ist die Ausgabe lesbar (Trefferliste, Rezept, Einkaufsliste). JSON
91
+ erscheint nur mit `--json` oder wenn stdout kein Terminal ist. Im JSON-Modus
92
+ steht genau ein Objekt auf stdout, auch bei Fehlern:
93
+
94
+ ```bash
95
+ chefkoch suche lasagne --limit 5 --json
96
+ chefkoch rezept "vegane lasagne" --json
97
+ ```
98
+
99
+ ## Konfiguration
100
+
101
+ | Variable | Default | Bedeutung |
102
+ |---|---|---|
103
+ | `CHEFKOCH_BASE_URL` | `https://api.chefkoch.de` | API-Basis (Test/Fake-Server) |
104
+ | `CHEFKOCH_MIN_INTERVAL` | `1` | Mindestabstand zwischen Requests in Sekunden; `0` nur für Tests |
105
+ | `XDG_STATE_HOME` | `~/.local/state` | Basis für den Watch-State |
106
+
107
+ Der Watch-State liegt unter
108
+ `$XDG_STATE_HOME/chefkoch-cli/watch.json` (Fallback
109
+ `~/.local/state/chefkoch-cli/watch.json`) und enthält nur IDs, Suchschlüssel
110
+ und Zeitstempel. Weitere Config-Dateien gibt es nicht.
111
+
112
+ ## Exit-Codes
113
+
114
+ | Exit | Bedeutung |
115
+ |---|---|
116
+ | 0 | Erfolg, inklusive `--help` und `--version` |
117
+ | 1 | Allgemeiner Fehler (z. B. kaputter Watch-State) |
118
+ | 2 | Usage: fehlende/ungültige Argumente, mehrdeutiger Name ohne TTY |
119
+ | 3 | Netz/Quelle: Timeout, HTTP-Fehler, Rezept-404, keine Treffer |
120
+ | 4 | Login erforderlich (nicht verwendet) bzw. Daten-/Parse-Fehler |
121
+
122
+ ## Datenquelle und Grenzen
123
+
124
+ `chefkoch` nutzt die inoffizielle API `https://api.chefkoch.de` über
125
+ `GET /v2/recipes` und `GET /v2/recipes/<id>`. Die Website
126
+ `www.chefkoch.de/rezepte/*?*` und `/v2/search/suggestions` werden nicht
127
+ abgerufen. Das Tool sendet keine Cookies, speichert keine Zugangsdaten und
128
+ führt keine schreibenden Web-Aktionen aus.
129
+
130
+ Die API ist nicht offiziell dokumentiert und kann sich jederzeit ändern.
131
+ Details und Befehlsvertrag stehen in `ANFORDERUNGEN.md`, `INTERFACE.md` und
132
+ `docs/UX.md`.
133
+
134
+ ## Lizenz
135
+
136
+ MIT, Copyright smlfg. Siehe `LICENSE`.
@@ -0,0 +1,115 @@
1
+ # chefkoch-cli
2
+
3
+ Chefkoch.de-Rezepte im Terminal: Suche mit Filtern, Rezeptdetails mit auf
4
+ Portionen skalierten Zutaten, Einkaufsliste aus mehreren Rezepten und Watch auf
5
+ neue Rezepte. Ausschließlich lesend, ohne Login.
6
+
7
+ ## Schnellstart
8
+
9
+ Voraussetzung: Python 3.10+ und `pipx`.
10
+
11
+ ```bash
12
+ pipx install git+https://github.com/smlfg/chefkoch-cli
13
+ chefkoch suche lasagne --limit 5
14
+ chefkoch rezept "vegane lasagne" --portionen 4
15
+ chefkoch einkaufsliste "die ultimative vegane lasagne" "vegetarische spinat gemüse lasagne" --portionen 4
16
+ ```
17
+
18
+ Die Suche nimmt den Begriff positional. `chefkoch rezept` und
19
+ `chefkoch einkaufsliste` akzeptieren Namen, IDs oder Chefkoch-URLs; bei
20
+ mehreren Treffern erscheint im Terminal eine nummerierte Auswahl.
21
+
22
+ ## Befehle und Beispiele
23
+
24
+ ### Suchen
25
+
26
+ ```bash
27
+ chefkoch suche lasagne --limit 5
28
+ chefkoch suche chili --vegetarisch --max-zeit 30 --min-bewertung 4.5
29
+ chefkoch suche suppe --vegan --sort zeit
30
+ chefkoch suche kuchen --sort neu --limit 10 --seite 2
31
+ ```
32
+
33
+ Filter: `--vegetarisch`, `--vegan`, `--max-zeit N`, `--min-bewertung X`,
34
+ `--schwierigkeit simpel|normal|pfiffig`, `--sort bewertung|zeit|neu`,
35
+ `--limit N`, `--seite N`.
36
+
37
+ ### Rezept anzeigen
38
+
39
+ ```bash
40
+ chefkoch rezept "vegane lasagne" --portionen 4
41
+ chefkoch rezept 745721177147257
42
+ chefkoch rezept https://www.chefkoch.de/rezepte/745721177147257/Lasagne.html --portionen 8
43
+ ```
44
+
45
+ Ein Name sucht und zeigt bei mehreren Treffern eine nummerierte Auswahl. Eine
46
+ ID oder URL lädt das Rezept direkt. `--portionen` skaliert die Zutaten.
47
+
48
+ ### Einkaufsliste
49
+
50
+ ```bash
51
+ chefkoch einkaufsliste "die ultimative vegane lasagne" "vegetarische spinat gemüse lasagne" --portionen 4
52
+ ```
53
+
54
+ Mehrere Namen, IDs oder URLs ergeben eine zusammengefasste Liste. Gleiche
55
+ Zutaten mit gleicher Einheit werden summiert, unterschiedliche Einheiten
56
+ bleiben getrennt.
57
+
58
+ ### Watch
59
+
60
+ ```bash
61
+ chefkoch watch "vegane lasagne" --min-bewertung 4.5
62
+ ```
63
+
64
+ Watch merkt sich die zuletzt gesehenen IDs pro Suchbegriff und Filter und zeigt
65
+ beim nächsten Lauf nur neue Treffer.
66
+
67
+ ## Ausgabe und JSON
68
+
69
+ Im Terminal ist die Ausgabe lesbar (Trefferliste, Rezept, Einkaufsliste). JSON
70
+ erscheint nur mit `--json` oder wenn stdout kein Terminal ist. Im JSON-Modus
71
+ steht genau ein Objekt auf stdout, auch bei Fehlern:
72
+
73
+ ```bash
74
+ chefkoch suche lasagne --limit 5 --json
75
+ chefkoch rezept "vegane lasagne" --json
76
+ ```
77
+
78
+ ## Konfiguration
79
+
80
+ | Variable | Default | Bedeutung |
81
+ |---|---|---|
82
+ | `CHEFKOCH_BASE_URL` | `https://api.chefkoch.de` | API-Basis (Test/Fake-Server) |
83
+ | `CHEFKOCH_MIN_INTERVAL` | `1` | Mindestabstand zwischen Requests in Sekunden; `0` nur für Tests |
84
+ | `XDG_STATE_HOME` | `~/.local/state` | Basis für den Watch-State |
85
+
86
+ Der Watch-State liegt unter
87
+ `$XDG_STATE_HOME/chefkoch-cli/watch.json` (Fallback
88
+ `~/.local/state/chefkoch-cli/watch.json`) und enthält nur IDs, Suchschlüssel
89
+ und Zeitstempel. Weitere Config-Dateien gibt es nicht.
90
+
91
+ ## Exit-Codes
92
+
93
+ | Exit | Bedeutung |
94
+ |---|---|
95
+ | 0 | Erfolg, inklusive `--help` und `--version` |
96
+ | 1 | Allgemeiner Fehler (z. B. kaputter Watch-State) |
97
+ | 2 | Usage: fehlende/ungültige Argumente, mehrdeutiger Name ohne TTY |
98
+ | 3 | Netz/Quelle: Timeout, HTTP-Fehler, Rezept-404, keine Treffer |
99
+ | 4 | Login erforderlich (nicht verwendet) bzw. Daten-/Parse-Fehler |
100
+
101
+ ## Datenquelle und Grenzen
102
+
103
+ `chefkoch` nutzt die inoffizielle API `https://api.chefkoch.de` über
104
+ `GET /v2/recipes` und `GET /v2/recipes/<id>`. Die Website
105
+ `www.chefkoch.de/rezepte/*?*` und `/v2/search/suggestions` werden nicht
106
+ abgerufen. Das Tool sendet keine Cookies, speichert keine Zugangsdaten und
107
+ führt keine schreibenden Web-Aktionen aus.
108
+
109
+ Die API ist nicht offiziell dokumentiert und kann sich jederzeit ändern.
110
+ Details und Befehlsvertrag stehen in `ANFORDERUNGEN.md`, `INTERFACE.md` und
111
+ `docs/UX.md`.
112
+
113
+ ## Lizenz
114
+
115
+ MIT, Copyright smlfg. Siehe `LICENSE`.
@@ -0,0 +1,39 @@
1
+ [build-system]
2
+ requires = ["setuptools>=68"]
3
+ build-backend = "setuptools.build_meta"
4
+
5
+ [project]
6
+ name = "chefkoch-cli"
7
+ version = "0.1.1"
8
+ description = "Chefkoch.de-Rezepte im Terminal: Suche, Rezeptdetails, Einkaufsliste und Watch"
9
+ readme = "README.md"
10
+ requires-python = ">=3.10"
11
+ license = "MIT"
12
+ authors = [
13
+ { name = "smlfg", email = "186922365+smlfg@users.noreply.github.com" },
14
+ ]
15
+ keywords = ["chefkoch", "recipes", "cli", "terminal"]
16
+ classifiers = [
17
+ "Environment :: Console",
18
+ "Programming Language :: Python :: 3",
19
+ "Programming Language :: Python :: 3.10",
20
+ "Programming Language :: Python :: 3.11",
21
+ "Programming Language :: Python :: 3.12",
22
+ "Programming Language :: Python :: 3.13",
23
+ ]
24
+ dependencies = ["httpx>=0.24"]
25
+
26
+ [project.urls]
27
+ Homepage = "https://github.com/smlfg/chefkoch-cli"
28
+ Repository = "https://github.com/smlfg/chefkoch-cli"
29
+
30
+ [project.scripts]
31
+ chefkoch = "chefkoch_cli.cli:main"
32
+
33
+ [tool.setuptools.packages.find]
34
+ where = ["src"]
35
+
36
+ [tool.pytest.ini_options]
37
+ testpaths = ["tests"]
38
+ addopts = "-ra"
39
+ pythonpath = ["src"]
@@ -0,0 +1,4 @@
1
+ [egg_info]
2
+ tag_build =
3
+ tag_date = 0
4
+
@@ -0,0 +1,5 @@
1
+ """Chefkoch.de-Rezepte im Terminal."""
2
+
3
+ __version__ = "0.1.1"
4
+
5
+ __all__ = ["__version__"]
@@ -0,0 +1,8 @@
1
+ """Einstieg für ``python -m chefkoch_cli``."""
2
+
3
+ from __future__ import annotations
4
+
5
+ from .cli import main
6
+
7
+ if __name__ == "__main__":
8
+ raise SystemExit(main())