convoviz 0.4.4__py3-none-any.whl → 0.4.6__py3-none-any.whl
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.
- convoviz/interactive.py +17 -30
- {convoviz-0.4.4.dist-info → convoviz-0.4.6.dist-info}/METADATA +14 -12
- {convoviz-0.4.4.dist-info → convoviz-0.4.6.dist-info}/RECORD +5 -5
- {convoviz-0.4.4.dist-info → convoviz-0.4.6.dist-info}/WHEEL +0 -0
- {convoviz-0.4.4.dist-info → convoviz-0.4.6.dist-info}/entry_points.txt +0 -0
convoviz/interactive.py
CHANGED
|
@@ -8,10 +8,16 @@ from questionary import Choice, Style, checkbox, select
|
|
|
8
8
|
from questionary import path as qst_path
|
|
9
9
|
from questionary import text as qst_text
|
|
10
10
|
|
|
11
|
-
from convoviz.config import ConvovizConfig, OutputKind, get_default_config
|
|
11
|
+
from convoviz.config import ConvovizConfig, OutputKind, YAMLConfig, get_default_config
|
|
12
12
|
from convoviz.io.loaders import find_latest_zip, validate_zip
|
|
13
13
|
from convoviz.utils import colormaps, default_font_path, font_names, font_path, validate_header
|
|
14
14
|
|
|
15
|
+
OUTPUT_TITLES = {
|
|
16
|
+
OutputKind.MARKDOWN: "Markdown conversations",
|
|
17
|
+
OutputKind.GRAPHS: "Graphs (usage analytics)",
|
|
18
|
+
OutputKind.WORDCLOUDS: "Word clouds",
|
|
19
|
+
}
|
|
20
|
+
|
|
15
21
|
CUSTOM_STYLE = Style(
|
|
16
22
|
[
|
|
17
23
|
("qmark", "fg:#34eb9b bold"),
|
|
@@ -92,7 +98,7 @@ def run_interactive_config(initial_config: ConvovizConfig | None = None) -> Conv
|
|
|
92
98
|
input_default = str(config.input_path) if config.input_path else ""
|
|
93
99
|
input_result: str = _ask_or_cancel(
|
|
94
100
|
qst_path(
|
|
95
|
-
"Enter the path to the export ZIP, conversations JSON, or extracted directory:",
|
|
101
|
+
"Enter the path to the export ZIP:", # , conversations JSON, or extracted directory:",
|
|
96
102
|
default=input_default,
|
|
97
103
|
validate=_validate_input_path,
|
|
98
104
|
style=CUSTOM_STYLE,
|
|
@@ -118,9 +124,12 @@ def run_interactive_config(initial_config: ConvovizConfig | None = None) -> Conv
|
|
|
118
124
|
|
|
119
125
|
# Prompt for outputs to generate
|
|
120
126
|
output_choices = [
|
|
121
|
-
Choice(
|
|
122
|
-
|
|
123
|
-
|
|
127
|
+
Choice(
|
|
128
|
+
title=OUTPUT_TITLES.get(kind, kind.value.title()),
|
|
129
|
+
value=kind,
|
|
130
|
+
checked=kind in config.outputs,
|
|
131
|
+
)
|
|
132
|
+
for kind in OutputKind
|
|
124
133
|
]
|
|
125
134
|
|
|
126
135
|
selected_outputs: list[OutputKind] = _ask_or_cancel(
|
|
@@ -172,20 +181,9 @@ def run_interactive_config(initial_config: ConvovizConfig | None = None) -> Conv
|
|
|
172
181
|
|
|
173
182
|
# Prompt for YAML headers
|
|
174
183
|
yaml_config = config.conversation.yaml
|
|
184
|
+
yaml_fields = list(YAMLConfig.model_fields.keys())
|
|
175
185
|
yaml_choices = [
|
|
176
|
-
Choice(title=field, checked=getattr(yaml_config, field))
|
|
177
|
-
for field in [
|
|
178
|
-
"title",
|
|
179
|
-
"tags",
|
|
180
|
-
"chat_link",
|
|
181
|
-
"create_time",
|
|
182
|
-
"update_time",
|
|
183
|
-
"model",
|
|
184
|
-
"used_plugins",
|
|
185
|
-
"message_count",
|
|
186
|
-
"content_types",
|
|
187
|
-
"custom_instructions",
|
|
188
|
-
]
|
|
186
|
+
Choice(title=field, checked=getattr(yaml_config, field)) for field in yaml_fields
|
|
189
187
|
]
|
|
190
188
|
|
|
191
189
|
selected: list[str] = _ask_or_cancel(
|
|
@@ -197,18 +195,7 @@ def run_interactive_config(initial_config: ConvovizConfig | None = None) -> Conv
|
|
|
197
195
|
)
|
|
198
196
|
|
|
199
197
|
selected_set = set(selected)
|
|
200
|
-
for field_name in
|
|
201
|
-
"title",
|
|
202
|
-
"tags",
|
|
203
|
-
"chat_link",
|
|
204
|
-
"create_time",
|
|
205
|
-
"update_time",
|
|
206
|
-
"model",
|
|
207
|
-
"used_plugins",
|
|
208
|
-
"message_count",
|
|
209
|
-
"content_types",
|
|
210
|
-
"custom_instructions",
|
|
211
|
-
]:
|
|
198
|
+
for field_name in yaml_fields:
|
|
212
199
|
setattr(yaml_config, field_name, field_name in selected_set)
|
|
213
200
|
|
|
214
201
|
# Prompt for wordcloud settings (only if wordclouds output is selected)
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: convoviz
|
|
3
|
-
Version: 0.4.
|
|
3
|
+
Version: 0.4.6
|
|
4
4
|
Summary: Convert your ChatGPT export (ZIP) into clean Markdown text files with inline media, and generate data visualizations like word clouds and usage graphs.
|
|
5
5
|
Keywords: markdown,chatgpt,openai,visualization,analytics,json,export,data-analysis,obsidian
|
|
6
6
|
Author: Mohamed Cheikh Sidiya
|
|
@@ -194,6 +194,19 @@ Interested in contributing? Check out the **[Contributing Guide](https://github.
|
|
|
194
194
|
|
|
195
195
|
## 📝 Notes
|
|
196
196
|
|
|
197
|
+
<details>
|
|
198
|
+
<summary><strong>Offline</strong></summary>
|
|
199
|
+
|
|
200
|
+
Word clouds use NLTK stopwords. If you're offline and NLTK data isn't installed yet, pre-download it:
|
|
201
|
+
|
|
202
|
+
```bash
|
|
203
|
+
python -c "import nltk; nltk.download('stopwords')"
|
|
204
|
+
```
|
|
205
|
+
|
|
206
|
+
**NOTE:** The install script already handles this, so you can immediately go offline after running it.
|
|
207
|
+
|
|
208
|
+
</details>
|
|
209
|
+
|
|
197
210
|
<details>
|
|
198
211
|
<summary><strong>About This Project</strong></summary>
|
|
199
212
|
|
|
@@ -212,17 +225,6 @@ It should also work as a library, so you can import and use the models and funct
|
|
|
212
225
|
|
|
213
226
|
</details>
|
|
214
227
|
|
|
215
|
-
<details>
|
|
216
|
-
<summary><strong>Offline / Reproducible Runs</strong></summary>
|
|
217
|
-
|
|
218
|
-
Word clouds use NLTK stopwords. If you're offline and NLTK data isn't installed yet, pre-download it:
|
|
219
|
-
|
|
220
|
-
```bash
|
|
221
|
-
python -c "import nltk; nltk.download('stopwords')"
|
|
222
|
-
```
|
|
223
|
-
|
|
224
|
-
</details>
|
|
225
|
-
|
|
226
228
|
<details>
|
|
227
229
|
<summary><strong>Bookmarklet (Experimental)</strong></summary>
|
|
228
230
|
|
|
@@ -39,7 +39,7 @@ convoviz/assets/stopwords.txt,sha256=AbpHGcgLb-kRsJGnwFEktk7uzpZOCcBY74-YBdrKVGs
|
|
|
39
39
|
convoviz/cli.py,sha256=nniH7QPbbH_buQJGa35vd3IEl7RvZsWRiLpUuhlxXaI,5314
|
|
40
40
|
convoviz/config.py,sha256=qo4JPkJRx1UgvVN_x-XmycxdjU9XwPlqoZWJLsDMSAs,3592
|
|
41
41
|
convoviz/exceptions.py,sha256=bQpIKls48uOQpagEJAxpXf5LF7QoagRRfbD0MjWC7Ak,1476
|
|
42
|
-
convoviz/interactive.py,sha256=
|
|
42
|
+
convoviz/interactive.py,sha256=z4Xdhk_47R1Zx_CaPpY_Gq88i6l9A8YKN3mlc5Uz6KU,8284
|
|
43
43
|
convoviz/io/__init__.py,sha256=y70TYypJ36_kaEA04E2wa1EDaKQVjprKItoKR6MMs4M,471
|
|
44
44
|
convoviz/io/assets.py,sha256=5zcZPlQa9niDw9o-sqJIKgLc0OJ9auzd6KAve5WfBkQ,3459
|
|
45
45
|
convoviz/io/loaders.py,sha256=SqmBWUBqT5lsCf01yy-FUhwIxbiKTFMQnj4k213DsGI,5891
|
|
@@ -56,7 +56,7 @@ convoviz/renderers/__init__.py,sha256=IQgwD9NqtUgbS9zwyPBNZbBIZcFrbZ9C7WMAV-X3Xd
|
|
|
56
56
|
convoviz/renderers/markdown.py,sha256=55PACkd-F0mmBXWXQ5SrfJr3UNrK_z2spQnePdk1UsQ,7849
|
|
57
57
|
convoviz/renderers/yaml.py,sha256=XG1s4VhDdx-TiqekTkgED87RZ1lVQ7IwrbA-sZHrs7k,4056
|
|
58
58
|
convoviz/utils.py,sha256=IQEKYHhWOnYxlr4GwAHoquG0BXTlVRkORL80oUSaIeQ,3417
|
|
59
|
-
convoviz-0.4.
|
|
60
|
-
convoviz-0.4.
|
|
61
|
-
convoviz-0.4.
|
|
62
|
-
convoviz-0.4.
|
|
59
|
+
convoviz-0.4.6.dist-info/WHEEL,sha256=fAguSjoiATBe7TNBkJwOjyL1Tt4wwiaQGtNtjRPNMQA,80
|
|
60
|
+
convoviz-0.4.6.dist-info/entry_points.txt,sha256=HYsmsw5vt36yYHB05uVU48AK2WLkcwshly7m7KKuZMY,54
|
|
61
|
+
convoviz-0.4.6.dist-info/METADATA,sha256=fENPZKn4I91ef6UKhUBffEUP6dX_-U0ie0-YPnZN5x4,7887
|
|
62
|
+
convoviz-0.4.6.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|