novelai-python 0.1.9__tar.gz → 0.2.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.
- {novelai_python-0.1.9 → novelai_python-0.2.1}/PKG-INFO +2 -2
- {novelai_python-0.1.9 → novelai_python-0.2.1}/README.md +1 -1
- {novelai_python-0.1.9 → novelai_python-0.2.1}/pyproject.toml +1 -1
- {novelai_python-0.1.9 → novelai_python-0.2.1}/src/novelai_python/utils/random_prompt/__init__.py +97 -34
- {novelai_python-0.1.9 → novelai_python-0.2.1}/src/novelai_python/utils/random_prompt/tag.py +23 -4
- {novelai_python-0.1.9 → novelai_python-0.2.1}/src/novelai_python/utils/random_prompt/tag_artist.py +20 -2
- novelai_python-0.2.1/src/novelai_python/utils/random_prompt/tag_character.py +270 -0
- {novelai_python-0.1.9 → novelai_python-0.2.1}/src/novelai_python/utils/random_prompt/tag_nsfw.py +16 -0
- {novelai_python-0.1.9 → novelai_python-0.2.1}/NOTICE.MD +0 -0
- {novelai_python-0.1.9 → novelai_python-0.2.1}/src/novelai_python/__init__.py +0 -0
- {novelai_python-0.1.9 → novelai_python-0.2.1}/src/novelai_python/_exceptions.py +0 -0
- {novelai_python-0.1.9 → novelai_python-0.2.1}/src/novelai_python/_response/__init__.py +0 -0
- {novelai_python-0.1.9 → novelai_python-0.2.1}/src/novelai_python/_response/ai/__init__.py +0 -0
- {novelai_python-0.1.9 → novelai_python-0.2.1}/src/novelai_python/_response/ai/generate_image.py +0 -0
- {novelai_python-0.1.9 → novelai_python-0.2.1}/src/novelai_python/_response/user/__init__.py +0 -0
- {novelai_python-0.1.9 → novelai_python-0.2.1}/src/novelai_python/_response/user/login.py +0 -0
- {novelai_python-0.1.9 → novelai_python-0.2.1}/src/novelai_python/_response/user/subscription.py +0 -0
- {novelai_python-0.1.9 → novelai_python-0.2.1}/src/novelai_python/credential/JwtToken.py +0 -0
- {novelai_python-0.1.9 → novelai_python-0.2.1}/src/novelai_python/credential/UserAuth.py +0 -0
- {novelai_python-0.1.9 → novelai_python-0.2.1}/src/novelai_python/credential/__init__.py +0 -0
- {novelai_python-0.1.9 → novelai_python-0.2.1}/src/novelai_python/credential/_base.py +0 -0
- {novelai_python-0.1.9 → novelai_python-0.2.1}/src/novelai_python/sdk/__init__.py +0 -0
- {novelai_python-0.1.9 → novelai_python-0.2.1}/src/novelai_python/sdk/ai/LICENSE +0 -0
- {novelai_python-0.1.9 → novelai_python-0.2.1}/src/novelai_python/sdk/ai/__init__.py +0 -0
- {novelai_python-0.1.9 → novelai_python-0.2.1}/src/novelai_python/sdk/ai/generate_image.py +0 -0
- {novelai_python-0.1.9 → novelai_python-0.2.1}/src/novelai_python/sdk/user/__init__.py +0 -0
- {novelai_python-0.1.9 → novelai_python-0.2.1}/src/novelai_python/sdk/user/login.py +0 -0
- {novelai_python-0.1.9 → novelai_python-0.2.1}/src/novelai_python/sdk/user/subscription.py +0 -0
- {novelai_python-0.1.9 → novelai_python-0.2.1}/src/novelai_python/server.py +0 -0
- {novelai_python-0.1.9 → novelai_python-0.2.1}/src/novelai_python/utils/__init__.py +0 -0
- {novelai_python-0.1.9 → novelai_python-0.2.1}/src/novelai_python/utils/encode.py +0 -0
- {novelai_python-0.1.9 → novelai_python-0.2.1}/src/novelai_python/utils/hash.py +0 -0
- {novelai_python-0.1.9 → novelai_python-0.2.1}/tests/__init__.py +0 -0
- {novelai_python-0.1.9 → novelai_python-0.2.1}/tests/test_random_prompt.py +0 -0
- {novelai_python-0.1.9 → novelai_python-0.2.1}/tests/test_server.py +0 -0
- {novelai_python-0.1.9 → novelai_python-0.2.1}/tests/test_server_run.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: novelai-python
|
|
3
|
-
Version: 0.1
|
|
3
|
+
Version: 0.2.1
|
|
4
4
|
Summary: Novelai Python Binding With Pydantic
|
|
5
5
|
Author-Email: sudoskys <coldlando@hotmail.com>
|
|
6
6
|
License: Apache 2.0
|
|
@@ -89,7 +89,7 @@ loop.run_until_complete(main())
|
|
|
89
89
|
```python
|
|
90
90
|
from novelai_python.utils.random_prompt import RandomPromptGenerator
|
|
91
91
|
|
|
92
|
-
s = RandomPromptGenerator(nsfw_enabled=False).
|
|
92
|
+
s = RandomPromptGenerator(nsfw_enabled=False).random_prompt()
|
|
93
93
|
print(s)
|
|
94
94
|
```
|
|
95
95
|
|
|
@@ -64,7 +64,7 @@ loop.run_until_complete(main())
|
|
|
64
64
|
```python
|
|
65
65
|
from novelai_python.utils.random_prompt import RandomPromptGenerator
|
|
66
66
|
|
|
67
|
-
s = RandomPromptGenerator(nsfw_enabled=False).
|
|
67
|
+
s = RandomPromptGenerator(nsfw_enabled=False).random_prompt()
|
|
68
68
|
print(s)
|
|
69
69
|
```
|
|
70
70
|
|
{novelai_python-0.1.9 → novelai_python-0.2.1}/src/novelai_python/utils/random_prompt/__init__.py
RENAMED
|
@@ -14,6 +14,7 @@ from .tag import (
|
|
|
14
14
|
action, expression, footwears, bottoms, color as colors
|
|
15
15
|
)
|
|
16
16
|
from .tag_artist import rankArtist
|
|
17
|
+
from .tag_character import rankMoods, rankCharacter, rankIdentity
|
|
17
18
|
from .tag_nsfw import nsfw
|
|
18
19
|
|
|
19
20
|
|
|
@@ -29,22 +30,32 @@ class RandomPromptGenerator(object):
|
|
|
29
30
|
:param existing_tags: a list of existing tags
|
|
30
31
|
:return: a tag
|
|
31
32
|
"""
|
|
32
|
-
valid_tags = [tag
|
|
33
|
-
|
|
33
|
+
valid_tags = [tag
|
|
34
|
+
for tag in tags
|
|
35
|
+
if len(tag) < 3 or not tag[2] or any(sub_tag in existing_tags for sub_tag in tag[2])]
|
|
34
36
|
total_weight = sum(tagr[1] for tagr in valid_tags if len(tagr) > 1)
|
|
35
37
|
if total_weight == 0:
|
|
36
|
-
|
|
38
|
+
if isinstance(tags, list):
|
|
39
|
+
rd = random.choice(tags)
|
|
40
|
+
elif isinstance(tags, str):
|
|
41
|
+
rd = tags
|
|
42
|
+
else:
|
|
43
|
+
raise ValueError('get_weighted_choice: should not reach here')
|
|
44
|
+
return rd
|
|
37
45
|
random_number = random.randint(1, total_weight)
|
|
38
46
|
cumulative_weight = 0
|
|
39
47
|
for tag in valid_tags:
|
|
40
48
|
cumulative_weight += tag[1]
|
|
41
49
|
if random_number <= cumulative_weight:
|
|
50
|
+
if isinstance(tag, str):
|
|
51
|
+
raise Exception("tag is string")
|
|
42
52
|
return tag[0]
|
|
43
53
|
raise ValueError('get_weighted_choice: should not reach here')
|
|
44
54
|
|
|
45
|
-
def character_features(self, gender, camera_angle, nsfw_enabled, num_characters):
|
|
55
|
+
def character_features(self, gender, camera_angle, nsfw_enabled, num_characters, enable_skin_color=True):
|
|
46
56
|
"""
|
|
47
57
|
Add character features to the prompt
|
|
58
|
+
:param enable_skin_color: enable skin
|
|
48
59
|
:param gender: 'm', 'f', 'o'
|
|
49
60
|
:param camera_angle: the camera angle of the prompt
|
|
50
61
|
:param nsfw_enabled: True or False
|
|
@@ -57,26 +68,26 @@ class RandomPromptGenerator(object):
|
|
|
57
68
|
features.append(self.get_weighted_choice(animalFeatures, features))
|
|
58
69
|
unique_features = {'mermaid', 'centaur', 'lamia'}
|
|
59
70
|
has_unique_feature = any(feature in features for feature in unique_features)
|
|
60
|
-
if random.random() < 0.1:
|
|
71
|
+
if random.random() < 0.1 and enable_skin_color:
|
|
61
72
|
features.append(self.get_weighted_choice(sinkColor, features))
|
|
62
73
|
if random.random() < 0.8:
|
|
63
74
|
features.append(self.get_weighted_choice(eyeColors, features))
|
|
64
75
|
if random.random() < 0.1:
|
|
65
76
|
features.append(self.get_weighted_choice(eyeCharacteristics, features))
|
|
66
|
-
if random.random() < 0.
|
|
77
|
+
if random.random() < 0.6:
|
|
67
78
|
features.append(self.get_weighted_choice(eyesExpression, features))
|
|
68
|
-
if random.random() < 0.
|
|
79
|
+
if random.random() < 0.2:
|
|
69
80
|
features.append(self.get_weighted_choice(hairLength, features))
|
|
70
|
-
if random.random() < 0.
|
|
81
|
+
if random.random() < 0.2:
|
|
71
82
|
features.append(self.get_weighted_choice(backHairStyle, features))
|
|
72
|
-
if random.random() < 0.
|
|
83
|
+
if random.random() < 0.1:
|
|
73
84
|
features.append(self.get_weighted_choice(hairColors, features))
|
|
74
85
|
if random.random() < 0.1:
|
|
75
86
|
features.append(self.get_weighted_choice(hairColorExtra, features))
|
|
76
87
|
features.append(self.get_weighted_choice(hairColors, features))
|
|
77
|
-
if random.random() < 0.
|
|
88
|
+
if random.random() < 0.12:
|
|
78
89
|
features.append(self.get_weighted_choice(hairFeatures, features))
|
|
79
|
-
if gender.startswith('f') and random.random() < 0.
|
|
90
|
+
if gender.startswith('f') and random.random() < 0.8:
|
|
80
91
|
features.append(self.get_weighted_choice(breastsSize, features))
|
|
81
92
|
num_body_features = 0
|
|
82
93
|
if num_characters == 1:
|
|
@@ -87,9 +98,9 @@ class RandomPromptGenerator(object):
|
|
|
87
98
|
num_body_features = self.get_weighted_choice([[0, 30], [1, 30]], features)
|
|
88
99
|
for _ in range(num_body_features):
|
|
89
100
|
features.append(self.get_weighted_choice(bodyFeatures, features))
|
|
90
|
-
if random.random() < 0.
|
|
101
|
+
if random.random() < 0.3:
|
|
91
102
|
features.append(self.get_weighted_choice(headWears, features))
|
|
92
|
-
if random.random() < 0.
|
|
103
|
+
if random.random() < 0.5:
|
|
93
104
|
features.append(self.get_weighted_choice(hatOrnaments, features))
|
|
94
105
|
clothing_type = self.get_weighted_choice(['uniform', 'swimsuit', 'bodysuit', 'normal clothes'], features)
|
|
95
106
|
if nsfw_enabled and random.random() < 0.9:
|
|
@@ -101,7 +112,7 @@ class RandomPromptGenerator(object):
|
|
|
101
112
|
features.append(underwear_choice)
|
|
102
113
|
if random.random() < 0.5:
|
|
103
114
|
clothing_type = None
|
|
104
|
-
if random.random() < 0.
|
|
115
|
+
if random.random() < 0.5:
|
|
105
116
|
features.append(self.get_weighted_choice(nsfw["naked"], features))
|
|
106
117
|
clothing_type = None
|
|
107
118
|
if clothing_type == 'uniform':
|
|
@@ -130,17 +141,24 @@ class RandomPromptGenerator(object):
|
|
|
130
141
|
features.append(f'{color} {footwear}')
|
|
131
142
|
if random.random() < 0.7:
|
|
132
143
|
features.append(self.get_weighted_choice(expression, features))
|
|
133
|
-
if random.random() < (1 if nsfw_enabled and num_characters
|
|
144
|
+
if random.random() < (1 if nsfw_enabled and num_characters >= 1 else 0.5):
|
|
145
|
+
# 单角色 + nsfw 为 1
|
|
134
146
|
possible_actions = action
|
|
135
147
|
if nsfw_enabled:
|
|
148
|
+
if random.random() < 0.5:
|
|
149
|
+
features.append(self.get_weighted_choice(nsfw["action"], features))
|
|
150
|
+
if random.random() < 0.5:
|
|
151
|
+
features.append(self.get_weighted_choice(nsfw["pussyForeplay"], features))
|
|
136
152
|
possible_actions += nsfw["action"] + nsfw["analForeplay"] + nsfw["pussyForeplay"]
|
|
137
153
|
if random.random() < 0.5:
|
|
138
154
|
possible_actions += nsfw["footForeplay"]
|
|
139
155
|
features.append(self.get_weighted_choice(possible_actions, features))
|
|
156
|
+
# 睡眠
|
|
140
157
|
if any('sleeping' in feature for feature in features) \
|
|
141
158
|
or any('zzz' in feature for feature in features) \
|
|
142
159
|
or any('closed eyes' in feature for feature in features):
|
|
143
160
|
features = [feature for feature in features if not any(color[0] == feature for color in eyeColors)]
|
|
161
|
+
# 衣物
|
|
144
162
|
num_clothing_accessories = 0
|
|
145
163
|
if num_characters == 1:
|
|
146
164
|
num_clothing_accessories = self.get_weighted_choice([[0, 10], [1, 30], [2, 15], [3, 5]], features)
|
|
@@ -155,11 +173,39 @@ class RandomPromptGenerator(object):
|
|
|
155
173
|
features = [feature for feature in features if 'legwear' not in feature]
|
|
156
174
|
return features
|
|
157
175
|
|
|
158
|
-
def generate(self
|
|
159
|
-
|
|
176
|
+
def generate(self,
|
|
177
|
+
*,
|
|
178
|
+
enable_moods: bool = True,
|
|
179
|
+
enable_character: bool = False,
|
|
180
|
+
enable_identity: bool = True,
|
|
181
|
+
):
|
|
182
|
+
"""
|
|
183
|
+
Generate a random prompt
|
|
184
|
+
:param enable_moods: enable moods
|
|
185
|
+
:param enable_character: enable character
|
|
186
|
+
:param enable_identity: enable identity
|
|
187
|
+
:return:
|
|
188
|
+
"""
|
|
189
|
+
return self.random_prompt(
|
|
190
|
+
enable_moods=enable_moods,
|
|
191
|
+
enable_character=enable_character,
|
|
192
|
+
enable_identity=enable_identity
|
|
193
|
+
)
|
|
160
194
|
|
|
161
|
-
def random_prompt(self
|
|
195
|
+
def random_prompt(self, *,
|
|
196
|
+
man_w: int = 30,
|
|
197
|
+
woman_w: int = 60,
|
|
198
|
+
other_w: int = 10,
|
|
199
|
+
enable_moods: bool = True,
|
|
200
|
+
enable_character: bool = True,
|
|
201
|
+
enable_identity: bool = False,
|
|
202
|
+
must_appear=None,
|
|
203
|
+
):
|
|
204
|
+
if must_appear is None:
|
|
205
|
+
must_appear = []
|
|
162
206
|
tags = []
|
|
207
|
+
# 必须出现的标签
|
|
208
|
+
tags.extend(must_appear)
|
|
163
209
|
if self.nsfw_enabled:
|
|
164
210
|
tags.append('nsfw')
|
|
165
211
|
if random.random() < 0.1:
|
|
@@ -167,7 +213,7 @@ class RandomPromptGenerator(object):
|
|
|
167
213
|
tags.append('lewd')
|
|
168
214
|
irs = self.get_weighted_choice([[1, 70], [2, 20], [3, 7], [0, 5]], tags)
|
|
169
215
|
if self.nsfw_enabled:
|
|
170
|
-
irs = self.get_weighted_choice([[1,
|
|
216
|
+
irs = self.get_weighted_choice([[1, 40], [2, 20], [3, 7]], tags)
|
|
171
217
|
if irs == 0:
|
|
172
218
|
tags.append('no humans')
|
|
173
219
|
if random.random() < 0.3:
|
|
@@ -184,15 +230,17 @@ class RandomPromptGenerator(object):
|
|
|
184
230
|
return ', '.join(tags)
|
|
185
231
|
if random.random() < 0.3:
|
|
186
232
|
tags.append(self.get_weighted_choice(artStyle, tags))
|
|
187
|
-
if random.random() < 0.
|
|
233
|
+
if random.random() < 0.6:
|
|
188
234
|
tags.append("{" + self.get_weighted_choice(rankArtist, tags) + "}")
|
|
189
|
-
if random.random() < 0.
|
|
190
|
-
tags.append(self.get_weighted_choice(rankArtist, tags))
|
|
235
|
+
if random.random() < 0.5:
|
|
236
|
+
tags.append("[" + self.get_weighted_choice(rankArtist, tags) + "]")
|
|
237
|
+
if random.random() < 0.4:
|
|
238
|
+
tags.append("{{" + self.get_weighted_choice(rankArtist, tags) + "}}")
|
|
191
239
|
c_count = 0
|
|
192
240
|
d_count = 0
|
|
193
241
|
u_count = 0
|
|
194
242
|
for _ in range(irs):
|
|
195
|
-
random_gender = self.get_weighted_choice([['m',
|
|
243
|
+
random_gender = self.get_weighted_choice([['m', man_w], ['f', woman_w], ['o', other_w]], tags)
|
|
196
244
|
if random_gender == 'm':
|
|
197
245
|
d_count += 1
|
|
198
246
|
elif random_gender == 'f':
|
|
@@ -218,33 +266,48 @@ class RandomPromptGenerator(object):
|
|
|
218
266
|
elif u_count == 3:
|
|
219
267
|
tags.insert(0, '3others')
|
|
220
268
|
if self.nsfw_enabled:
|
|
221
|
-
g_count = c_count + u_count
|
|
269
|
+
g_count = c_count + u_count
|
|
270
|
+
if (c_count >= 2 and d_count == 0) and random.random() < 0.7:
|
|
271
|
+
# 2girls
|
|
272
|
+
tags.append(self.get_weighted_choice(nsfw["yu"], tags))
|
|
222
273
|
if g_count == 0 and d_count >= 2 and c_count == 0:
|
|
223
274
|
tags.append(nsfw["ya"])
|
|
224
275
|
if d_count > 0:
|
|
225
|
-
if
|
|
226
|
-
|
|
276
|
+
if c_count > 0:
|
|
277
|
+
if random.random() < 0.3:
|
|
278
|
+
tags.append(self.get_weighted_choice(nsfw["penis"], tags))
|
|
279
|
+
else:
|
|
280
|
+
if random.random() < 0.3:
|
|
281
|
+
tags.append(self.get_weighted_choice(nsfw["penis"], tags))
|
|
227
282
|
if d_count > 0 and g_count > 0:
|
|
228
|
-
if random.random() < 0.
|
|
283
|
+
if random.random() < 0.7:
|
|
229
284
|
tags.append(self.get_weighted_choice(nsfw["analSex"], tags))
|
|
230
285
|
if g_count > 0:
|
|
231
|
-
|
|
232
|
-
features = self.character_features(nsfw['fu'], None, True, irs)
|
|
233
|
-
else:
|
|
234
|
-
features = self.character_features(nsfw['yu'], None, True, irs)
|
|
286
|
+
features = []
|
|
235
287
|
if random.random() < 0.2:
|
|
288
|
+
features = self.character_features(nsfw['fu'], None, True, irs)
|
|
289
|
+
if random.random() < 0.6:
|
|
236
290
|
tags.append(self.get_weighted_choice(nsfw["sex"], tags))
|
|
237
|
-
if random.random() < 0.
|
|
291
|
+
if random.random() < 0.6:
|
|
238
292
|
tags.append(self.get_weighted_choice(nsfw["pussy"], tags))
|
|
239
293
|
if random.random() < 0.6:
|
|
240
294
|
tags.append(self.get_weighted_choice(nsfw["sexMod"], tags))
|
|
241
295
|
if random.random() < 0.6:
|
|
242
296
|
tags.append(self.get_weighted_choice(nsfw["sexActionMode"], tags))
|
|
243
|
-
if random.random() < 0.
|
|
297
|
+
if random.random() < 0.2:
|
|
244
298
|
tags.append(self.get_weighted_choice(nsfw["bdsm"], tags))
|
|
245
|
-
if random.random() < 0.
|
|
299
|
+
if random.random() < 0.3:
|
|
246
300
|
tags.append(self.get_weighted_choice(nsfw["sexAccessories"], tags))
|
|
247
301
|
tags.extend(features)
|
|
302
|
+
if random.random() < 0.65 and enable_moods:
|
|
303
|
+
# 心情
|
|
304
|
+
tags.append("[" + self.get_weighted_choice(rankMoods, tags) + "]")
|
|
305
|
+
if random.random() < 0.5 and enable_identity:
|
|
306
|
+
# 身份
|
|
307
|
+
tags.append("[" + self.get_weighted_choice(rankIdentity, tags) + "]")
|
|
308
|
+
if random.random() < 0.2 and enable_character:
|
|
309
|
+
# 角色
|
|
310
|
+
tags.append("[" + self.get_weighted_choice(rankCharacter, tags) + "]")
|
|
248
311
|
if random.random() < 0.1:
|
|
249
312
|
bg_color = self.get_weighted_choice(backgroundColor, tags)
|
|
250
313
|
tags.append(bg_color)
|
|
@@ -1334,7 +1334,7 @@ headWears = [
|
|
|
1334
1334
|
],
|
|
1335
1335
|
[
|
|
1336
1336
|
'jester cap',
|
|
1337
|
-
|
|
1337
|
+
1
|
|
1338
1338
|
],
|
|
1339
1339
|
[
|
|
1340
1340
|
'frilled hat',
|
|
@@ -7425,15 +7425,16 @@ hairColors = [
|
|
|
7425
7425
|
]
|
|
7426
7426
|
|
|
7427
7427
|
hairColorExtra = [
|
|
7428
|
-
[
|
|
7429
|
-
|
|
7428
|
+
[
|
|
7429
|
+
'multicolored hair',
|
|
7430
|
+
5],
|
|
7430
7431
|
[
|
|
7431
7432
|
'colored inner hair',
|
|
7432
7433
|
5
|
|
7433
7434
|
],
|
|
7434
7435
|
[
|
|
7435
7436
|
'gradient hair',
|
|
7436
|
-
|
|
7437
|
+
10
|
|
7437
7438
|
],
|
|
7438
7439
|
[
|
|
7439
7440
|
'rainbow hair',
|
|
@@ -7521,3 +7522,21 @@ color = [
|
|
|
7521
7522
|
1
|
|
7522
7523
|
]
|
|
7523
7524
|
]
|
|
7525
|
+
|
|
7526
|
+
if __name__ == "__main__":
|
|
7527
|
+
var = vars().copy()
|
|
7528
|
+
|
|
7529
|
+
# 获取tags列表
|
|
7530
|
+
tags = []
|
|
7531
|
+
for key, value in var.items():
|
|
7532
|
+
if not key.startswith('_') and key != 'var':
|
|
7533
|
+
tags.extend(value)
|
|
7534
|
+
print(tags)
|
|
7535
|
+
|
|
7536
|
+
# 展开二级列表
|
|
7537
|
+
tags = [tag[0] for tag in tags]
|
|
7538
|
+
print(tags)
|
|
7539
|
+
import json
|
|
7540
|
+
|
|
7541
|
+
with open('../../../../playground/cos/tags.json', 'w') as f:
|
|
7542
|
+
json.dump(tags, f)
|
{novelai_python-0.1.9 → novelai_python-0.2.1}/src/novelai_python/utils/random_prompt/tag_artist.py
RENAMED
|
@@ -376,5 +376,23 @@ rankArtist = [
|
|
|
376
376
|
[
|
|
377
377
|
"mamimi_(mamamimi)",
|
|
378
378
|
100
|
|
379
|
-
]
|
|
380
|
-
]
|
|
379
|
+
],
|
|
380
|
+
]
|
|
381
|
+
|
|
382
|
+
if __name__ == "__main__":
|
|
383
|
+
var = vars().copy()
|
|
384
|
+
|
|
385
|
+
# 获取tags列表
|
|
386
|
+
tags = []
|
|
387
|
+
for key, value in var.items():
|
|
388
|
+
if not key.startswith('_') and key != 'var':
|
|
389
|
+
tags.extend(value)
|
|
390
|
+
print(tags)
|
|
391
|
+
|
|
392
|
+
# 展开二级列表
|
|
393
|
+
tags = [tag[0] for tag in tags]
|
|
394
|
+
print(tags)
|
|
395
|
+
import json
|
|
396
|
+
|
|
397
|
+
with open('../../../../playground/cos/tag_artist.json', 'w') as f:
|
|
398
|
+
json.dump(tags, f)
|
|
@@ -0,0 +1,270 @@
|
|
|
1
|
+
# -*- coding: utf-8 -*-
|
|
2
|
+
# @Time : 2024/2/7 下午5:56
|
|
3
|
+
# @Author : sudoskys
|
|
4
|
+
# @File : tag_character.py
|
|
5
|
+
# @Software: PyCharm
|
|
6
|
+
|
|
7
|
+
rankCharacter = [
|
|
8
|
+
['futanari-sama_(mdf_an)', 10],
|
|
9
|
+
['kouhai-chan_(mignon)', 10],
|
|
10
|
+
['kaleina_(ricegnat)', 10],
|
|
11
|
+
['sarah-san_(mignon)', 10],
|
|
12
|
+
['shiro-chan_(mignon)', 10],
|
|
13
|
+
['ichigo-chan_(mignon)', 10],
|
|
14
|
+
['hiyake-chan', 10],
|
|
15
|
+
['pandora_acherona_(nat_the_lich)', 10],
|
|
16
|
+
['nil_sunna', 10],
|
|
17
|
+
['brown_twintails_girl_(mdf_an)', 10],
|
|
18
|
+
['blonde_ponytail_girl_(mdf_an)', 10],
|
|
19
|
+
['tsona_(nyantcha)', 10],
|
|
20
|
+
['meruccubus_(merunyaa)', 10], ['saki_(the_atko)', 10], ['ophelia_(bigrbear)', 10],
|
|
21
|
+
['chariot_(black_rock_shooter)', 10], ['hoshizuki_suzu', 10], ['hoshizuki_kaede', 10],
|
|
22
|
+
['chloe_(sciamano240)', 10], ['asutora-chan', 10], ['sunomiya_sana', 10],
|
|
23
|
+
['aibo_(gorgeous_mushroom)', 10], ['hachiouji_naoto', 10], ['gojou_wakana', 10],
|
|
24
|
+
['tokisaki_asaba', 10], ['guild_girl_(goblin_slayer!)', 10], ['chobi_(akchu)', 10],
|
|
25
|
+
['kurohanya_(niliu_chahui)', 10], ['yoshi_(nagatoro)', 10], ['oosuki_mamako', 10],
|
|
26
|
+
['riley_fairfeather', 10], ['olga_discordia', 10], ['lillia_greyrat', 10], ['thai_girl_(okpriko)', 10],
|
|
27
|
+
['uzaki_tsuki', 10], ['inui_sajuna', 10], ['okuzumi_yuiko', 10], ['tokisaki_mio', 10],
|
|
28
|
+
['shione_(niliu_chahui)', 10], ['sapphira_nyx', 10], ['cerestia_of_life', 10],
|
|
29
|
+
['celestine_lucullus', 10], ['angelise_reiter', 10], ['south_dakota_(solo_concert)_(azur_lane)', 10],
|
|
30
|
+
['anubis_(houtengeki)', 10], ['nanami_mizuki', 10],
|
|
31
|
+
['regensburg_(dark_dragon_brilliant_beach)_(azur_lane)', 10], ['ursula_(takunomi)', 10],
|
|
32
|
+
['blonde_girl_(okpriko)', 10], ['paldea_mother', 10], ['gamou_maki', 10], ['aegis_(takunomi)', 10],
|
|
33
|
+
['uketsuke_succubus_(konosuba)', 10], ['ursula_(23)', 10],
|
|
34
|
+
['aegir_(golden_dragon_among_auspicious_clouds)_(azur_lane)', 10], ['tiona_hyryute', 10],
|
|
35
|
+
['priana', 10], ['shinano_(moonlit_chrome)_(azur_lane)', 10], ['volume_(nikke)', 10],
|
|
36
|
+
['tione_hyryute', 10], ['hinano_(sky-freedom)', 10], ['noumu_(boku_no_hero_academia)', 10],
|
|
37
|
+
['st._louis_(luxurious_wheels)_(azur_lane)', 10], ['iwami_sayaka', 10],
|
|
38
|
+
['hilichurl_(genshin_impact)', 10], ['kali_belladonna', 10], ['nagatoro_hayase', 10],
|
|
39
|
+
['yui_(sky-freedom)', 10], ['new_jersey_(midsummer_leisure)_(azur_lane)', 10],
|
|
40
|
+
['yorktown_ii_(bright-sky_mermaid)_(azur_lane)', 10],
|
|
41
|
+
['new_jersey_(snow-white_ceremony)_(azur_lane)', 10], ['nonaka_kurumi', 10],
|
|
42
|
+
['carmilla_(swimsuit_rider)_(third_ascension)_(fate)', 10], ['mal_(malberrybush)', 10],
|
|
43
|
+
['rakugaki-chan', 10], ['azuma_(soft_voice_of_spring)_(azur_lane)', 10], ['reiko_(tofuubear)', 10],
|
|
44
|
+
['sekhmet_of_death', 10], ['ty_lee', 10], ["iris_(en'en_no_shouboutai)", 10],
|
|
45
|
+
['bremerton_(relaxation_consultation)_(azur_lane)', 10],
|
|
46
|
+
['owari_(shimmering_forsythia)_(azur_lane)', 10],
|
|
47
|
+
["drake_(the_golden_hind's_respite)_(azur_lane)", 10], ['komi_shuuko', 10],
|
|
48
|
+
["yuigahama_yui's_mother", 10], ['amasawa_chigusa', 10], ['alex_(aestheticc-meme)', 10],
|
|
49
|
+
['uzaki_yanagi', 10], ['nakabeni_yua', 10], ['strength_(black_rock_shooter)', 10],
|
|
50
|
+
['unzen_(sojourn_through_clear_seas)_(azur_lane)', 10], ['bastet_(houtengeki)', 10],
|
|
51
|
+
['yorra_villeneuve', 10], ['aikawa_ren', 10], ['io_(code_vein)', 10],
|
|
52
|
+
['shinano_(dreamy_white_sands)_(azur_lane)', 10], ['elder_cousin_(igarashi_kyouhei)', 10],
|
|
53
|
+
['tokage_setsuna', 10], ['chie_(ishikei)', 10], ['brown_haired_glasses_elf_(houtengeki)', 10],
|
|
54
|
+
['elinalise_dragonroad', 10], ['sword_maiden', 10], ['regensburg_(azur_lane)', 10],
|
|
55
|
+
['shinjin_succubus_(konosuba)', 10], ['marikawa_shizuka', 10], ['long-haired_girl_(motto_notto)', 10],
|
|
56
|
+
['luna_(konosuba)', 10], ['hongryeon_(last_origin)', 10], ['micchan_(ohisashiburi)', 10],
|
|
57
|
+
['sovetskaya_belorussiya_(relaxation_stratagem)_(azur_lane)', 10], ['musashi_(azur_lane)', 10],
|
|
58
|
+
['tsubasa_(kureha)', 10], ['carol_olston', 10], ['hyuuga_hanabi', 10], ['sela_(23)', 10],
|
|
59
|
+
['maki_oze', 10], ['sunao_(wokada)', 10], ['harukawa_syuria_(jack_dempa)', 10],
|
|
60
|
+
['owari_(azur_lane)', 10], ['leonardo_da_vinci_(active_sailor)_(fate)', 10],
|
|
61
|
+
['miyamae_shiho_(jack_dempa)', 10], ['tsuyuhara_miu', 10], ['nina_(wokada)', 10],
|
|
62
|
+
['ariduka_formica', 10], ['implacable_(shepherd_of_the_"lost")_(azur_lane)', 10], ['rocoroco', 10],
|
|
63
|
+
['ryuukyuu', 10], ['fia_the_deathbed_companion', 10], ['toujou_basara', 10], ['sera_(judgemint)', 10],
|
|
64
|
+
['female_commander_(azur_lane)', 10], ['inui_shinju', 10], ['mass_production_eva', 10],
|
|
65
|
+
['aloe_(ishuzoku_reviewers)', 10], ["aegir_(iron_blood's_dragon_maid)_(azur_lane)", 10], ['hinoa', 10],
|
|
66
|
+
['hasegawa_chisato', 10], ['bakugou_mitsuki', 10], ['rapi_(nikke)', 10], ['tamaki_kotatsu', 10],
|
|
67
|
+
['sakyumama_(kedama_milk)', 10], ['tomboy_childhood_friend_(cccpo)', 10],
|
|
68
|
+
['alicia_renato_(yashiro_sousaku)', 10], ['moegi_homi', 10], ['south_dakota_(azur_lane)', 10],
|
|
69
|
+
['sasaki_kanna_(kaedeko)', 10], ['vermeil_(kinsou_no_vermeil)', 10], ['goat-chan_(enarane)', 10],
|
|
70
|
+
['saruei_(vtuber)', 10], ['carmilla_(swimsuit_rider)_(fate)', 10]
|
|
71
|
+
]
|
|
72
|
+
|
|
73
|
+
rankIdentity = [
|
|
74
|
+
['vtuber', 20], ['accountant', 20], ['worker', 10], ['manager', 10], ['traffic_controller', 10],
|
|
75
|
+
['airline_cabin_crew', 10],
|
|
76
|
+
['art_therapist', 10],
|
|
77
|
+
['arts_administrator', 10], ['auditor', 10], ['automotive_engineer', 10], ['barrister', 10],
|
|
78
|
+
['band member', 10], ['maid', 15], ['teacher', 10],
|
|
79
|
+
['student', 20], ['child_psychotherapist', 10],
|
|
80
|
+
["nurse", 20], ['chiropractor', 10],
|
|
81
|
+
['lawyer', 10], ['crystallographer', 10], ['curator', 10],
|
|
82
|
+
['officer', 10], ['dancer', 10],
|
|
83
|
+
['doctor_(general_practitioner,_gp)', 10], ['doctor_(hospital)', 10], ['dramatherapist', 10],
|
|
84
|
+
['army', 15], ['firefighter', 10], ['chef', 15],
|
|
85
|
+
['actress', 10], ['baker', 10], ['bellhop', 10],
|
|
86
|
+
['blacksmith', 10], ['boxer', 10], ['butcher', 10],
|
|
87
|
+
['carpenter', 10], ['cartoonist', 10], ['cashier', 10],
|
|
88
|
+
['chemist', 10], ['clerk', 10], ['detective', 10],
|
|
89
|
+
['engineer', 10], ['fisherman', 10], ['florist', 10],
|
|
90
|
+
['flyer', 10], ['gardener', 10], ['guard', 10],
|
|
91
|
+
['guide', 10], ['hiredresseer', 10], ['housekeeper', 10],
|
|
92
|
+
['housewife', 10], ['janitor', 10], ['journalist', 10], ['hydrologist', 10],
|
|
93
|
+
['illustrator', 10], ['masseuse', 10], ['model', 10],
|
|
94
|
+
|
|
95
|
+
['monk', 10], ['movie star', 10], ['musician', 10],
|
|
96
|
+
['nun', 10], ['insurance_broker', 10],
|
|
97
|
+
|
|
98
|
+
['parachutist', 10], ['personnel', 10], ['photographer', 10],
|
|
99
|
+
['interpreter', 10], ['postman', 10], ['processfor', 10],
|
|
100
|
+
['tailor', 10], ['technician', 10], ['waiter', 20],
|
|
101
|
+
['waitress', 50], ['journalist', 10], ['fisherman', 10],
|
|
102
|
+
['vtuber', 90], ['landscape_architect', 10], ['learning_disability_nurse', 10],
|
|
103
|
+
['midwife', 10], ['photographer', 10], ['police_officer', 10],
|
|
104
|
+
['writer', 10], ['youth_worker', 10]
|
|
105
|
+
]
|
|
106
|
+
|
|
107
|
+
rankMoods = [
|
|
108
|
+
['abandoned', 10], ['absent_minded', 10], ['abused', 10], ['accepted', 10], ['accomplished', 10],
|
|
109
|
+
['accusatory', 10], ['accused', 10], ['admired', 10], ['adored', 10], ['adrift', 10], ['affectionate', 10],
|
|
110
|
+
['afraid', 10], ['aggravated', 10], ['aggressive', 10], ['agitated', 10], ['alarmed', 10], ['alert', 10],
|
|
111
|
+
['alienated', 10], ['alive', 10], ['alluring', 10], ['alone', 10], ['aloof', 10], ['amazed', 10],
|
|
112
|
+
['ambushed', 10], ['amused', 10], ['angry', 10], ['annoyed', 10], ['antagonistic', 10], ['anxious', 10],
|
|
113
|
+
['apathetic', 10], ['apologetic', 10], ['appalled', 10], ['appreciated', 10], ['appreciative', 10],
|
|
114
|
+
['apprehensive', 10], ['aroused', 10], ['ashamed', 10], ['astonished', 10], ['attacked', 10],
|
|
115
|
+
['attractive', 10], ['awake', 10], ['aware', 10], ['awe', 10], ['awed', 10], ['awestruck', 10],
|
|
116
|
+
['awkward', 10], ['bad', 10], ['baffled', 10], ['barren', 10], ['bashful', 10], ['beaten', 10],
|
|
117
|
+
['belittled', 10], ['benevolent', 10], ['berated', 10], ['betrayed', 10], ['bewildered', 10],
|
|
118
|
+
['bitchy', 10],
|
|
119
|
+
['bitter', 10], ['bittersweet', 10], ['blah', 10], ['blamed', 10], ['blank', 10], ['blissful', 10],
|
|
120
|
+
['blue', 10], ['bold', 10], ['bored', 10], ['bothered', 10], ['bouncy', 10], ['brave', 10], ['broken', 10],
|
|
121
|
+
['brooding', 10], ['bummed', 10], ['burdened', 10], ['burned-out', 10], ['callous', 10], ['calm', 10],
|
|
122
|
+
['capable', 10], ['carefree', 10], ['careless', 10], ['caring', 10], ['caustic', 10], ['cautious', 10],
|
|
123
|
+
['censored', 10], ['centered', 10], ['certain', 10], ['challenged', 10], ['charmed', 10], ['cheated', 10],
|
|
124
|
+
['cheerful', 10], ['cherished', 10], ['childish', 10], ['chipper', 10], ['choleric', 10], ['clean', 10],
|
|
125
|
+
['clear', 10], ['clever', 10], ['close', 10], ['closed', 10], ['clueless', 10], ['clumsy', 10],
|
|
126
|
+
['cold', 10],
|
|
127
|
+
['comfortable', 10], ['committed', 10], ['compassionate', 10], ['competent', 10], ['competitive', 10],
|
|
128
|
+
['complacent', 10], ['complete', 10], ['concerned', 10], ['condemned', 10], ['condescension', 10],
|
|
129
|
+
['confident', 10], ['confining', 10], ['confused', 10], ['considerate', 10], ['contemplative', 10],
|
|
130
|
+
['contempt', 10], ['contemptuous', 10], ['content', 10], ['controlled', 10], ['conventional', 10],
|
|
131
|
+
['convicted', 10], ['cornered', 10], ['courageous', 10], ['cowardly', 10], ['cranky', 10], ['crappy', 10],
|
|
132
|
+
['crazy', 10], ['critical', 10], ['cross', 10], ['crushed', 10], ['curious', 10], ['cynical', 10],
|
|
133
|
+
['daring', 10], ['dark', 10], ['dashed', 10], ['dazed', 10], ['dead', 10], ['deceived', 10],
|
|
134
|
+
['dedicated', 10],
|
|
135
|
+
['defeated', 10], ['defenseless', 10], ['defensive', 10], ['defiant', 10], ['degraded', 10],
|
|
136
|
+
['dejected', 10],
|
|
137
|
+
['delicate', 10], ['delighted', 10], ['demoralized', 10], ['dependent', 10], ['depressed', 10],
|
|
138
|
+
['deprived', 10], ['derisive', 10], ['deserted', 10], ['desired', 10], ['desolate', 10], ['despair', 10],
|
|
139
|
+
['desperate', 10], ['destroyed', 10], ['detached', 10], ['determined', 10], ['devastated', 10],
|
|
140
|
+
['devious', 10], ['devoted', 10], ['didactic', 10], ['different', 10], ['difficult', 10],
|
|
141
|
+
['dignified', 10],
|
|
142
|
+
['dirty', 10], ['disappointed', 10], ['disbelieving', 10], ['discarded', 10], ['disconnected', 10],
|
|
143
|
+
['discontent', 10], ['discontented', 10], ['discouraged', 10], ['disdainful', 10], ['disgraced', 10],
|
|
144
|
+
['disgusted', 10], ['disheartened', 10], ['dishonest', 10], ['disillusioned', 10], ['dismal', 10],
|
|
145
|
+
['dismayed', 10], ['disobedient', 10], ['disorganized', 10], ['disposable', 10], ['distant', 10],
|
|
146
|
+
['distracted', 10], ['distressed', 10], ['disturbed', 10], ['ditzy', 10], ['dorky', 10], ['doubtful', 10],
|
|
147
|
+
['down', 10], ['drained', 10], ['dreamy', 10], ['dreary', 10], ['dropped', 10], ['drunk', 10],
|
|
148
|
+
['dull', 10],
|
|
149
|
+
['dumb', 10], ['eager', 10], ['earnest', 10], ['ecstatic', 10], ['edgy', 10], ['effective', 10],
|
|
150
|
+
['elated', 10], ['embarassed', 10], ['embarrassed', 10], ['empathetic', 10], ['empowered', 10],
|
|
151
|
+
['empty', 10],
|
|
152
|
+
['enchanted', 10], ['encouraged', 10], ['energetic', 10], ['energized', 10], ['enlightened', 10],
|
|
153
|
+
['enraged', 10], ['enriched', 10], ['entertained', 10], ['enthralled', 10], ['enthusiastic', 10],
|
|
154
|
+
['envious', 10], ['erudite', 10], ['evasive', 10], ['evil', 10], ['exasperated', 10], ['excited', 10],
|
|
155
|
+
['excluded', 10], ['exhausted', 10], ['exhilarated', 10], ['expectant', 10], ['exploited', 10],
|
|
156
|
+
['exposed', 10], ['exuberant', 10], ['faithful', 10], ['fake', 10], ['fanciful', 10], ['fantastic', 10],
|
|
157
|
+
['fatalistic', 10], ['fatigued', 10], ['fearful', 10], ['fearless', 10], ['feisty', 10], ['fine', 10],
|
|
158
|
+
['flirty', 10], ['flustered', 10], ['foolish', 10], ['foreboding', 10], ['forgiven', 10],
|
|
159
|
+
['forgiving', 10],
|
|
160
|
+
['forgotten', 10], ['forthright', 10], ['fortunate', 10], ['framed', 10], ['frantic', 10], ['free', 10],
|
|
161
|
+
['friendly', 10], ['frightened', 10], ['frisky', 10], ['frustrated', 10], ['fulfilled', 10], ['full', 10],
|
|
162
|
+
['funny', 10], ['furious', 10], ['futile', 10], ['geeky', 10], ['generous', 10], ['gentle', 10],
|
|
163
|
+
['giddy', 10],
|
|
164
|
+
['giggly', 10], ['giving', 10], ['glad', 10], ['gloomy', 10], ['glorious', 10], ['good', 10],
|
|
165
|
+
['grateful', 10],
|
|
166
|
+
['great', 10], ['grieving', 10], ['groggy', 10], ['grouchy', 10], ['grumpy', 10], ['guarded', 10],
|
|
167
|
+
['guilty', 10], ['gullible', 10], ['handicapped', 10], ['happy', 10], ['harmonious', 10], ['hateful', 10],
|
|
168
|
+
['haughty', 10], ['haunted', 10], ['haunting', 10], ['healthy', 10], ['heard', 10], ['heartbroken', 10],
|
|
169
|
+
['heavy-hearted', 10], ['helpful', 10], ['helpless', 10], ['hesitant', 10], ['high', 10], ['honored', 10],
|
|
170
|
+
['hopeful', 10], ['hopeless', 10], ['horrible', 10], ['horrified', 10], ['hospitable', 10],
|
|
171
|
+
['hostile', 10],
|
|
172
|
+
['hot', 10], ['humble', 10], ['humiliated', 10], ['hungry', 10], ['hurt', 10], ['hyper', 10],
|
|
173
|
+
['hysterical', 10], ['idealistic', 10], ['idiotic', 10], ['idyllic', 10], ['ignorant', 10],
|
|
174
|
+
['ignored', 10],
|
|
175
|
+
['imaginative', 10], ['immune', 10], ['impatient', 10], ['impelled', 10], ['imperfect', 10],
|
|
176
|
+
['impertinent', 10], ['important', 10], ['impressed', 10], ['impulsive', 10], ['inadequate', 10],
|
|
177
|
+
['inattentive', 10], ['incensed', 10], ['inclusive', 10], ['incompetent', 10], ['incomplete', 10],
|
|
178
|
+
['incredulous', 10], ['indebted', 10], ['indecisive', 10], ['independent', 10], ['indescribable', 10],
|
|
179
|
+
['indifferent', 10], ['indignant', 10], ['industrious', 10], ['inept', 10], ['inferior', 10],
|
|
180
|
+
['inflated', 10],
|
|
181
|
+
['informed', 10], ['infuriated', 10], ['inhibited', 10], ['innocent', 10], ['innovative', 10],
|
|
182
|
+
['inquisitive', 10], ['insane', 10], ['insecure', 10], ['insensitive', 10], ['insidious', 10],
|
|
183
|
+
['insignificant', 10], ['insulted', 10], ['intense', 10], ['interested', 10], ['interrogated', 10],
|
|
184
|
+
['interrupted', 10], ['intimate', 10], ['intimidated', 10], ['intrigued', 10], ['invigorated', 10],
|
|
185
|
+
['invisible', 10], ['involved', 10], ['irate', 10], ['irked', 10], ['irrational', 10],
|
|
186
|
+
['irresponsible', 10],
|
|
187
|
+
['irritated', 10], ['isolated', 10], ['jaded', 10], ['jealous', 10], ['jinxed', 10], ['jolly', 10],
|
|
188
|
+
['jovial', 10], ['joyful', 10], ['joyous', 10], ['jubilant', 10], ['judged', 10], ['judgmental', 10],
|
|
189
|
+
['jumpy', 10], ['just', 10], ['justified', 10], ['kidded', 10], ['kind', 10], ['knowledgeable', 10],
|
|
190
|
+
['late', 10], ['lazy', 10], ['leery', 10], ['left', 10], ['let', 10], ['lethargic', 10], ['liable', 10],
|
|
191
|
+
['liberated', 10], ['liberating', 10], ['lifeless', 10], ['light-hearted', 10], ['liked', 10],
|
|
192
|
+
['listened', 10], ['listless', 10], ['logical', 10], ['lonely', 10], ['loose', 10], ['lost', 10],
|
|
193
|
+
['lousy', 10], ['lovable', 10], ['loved', 10], ['loving', 10], ['lucky', 10], ['lyrical', 10], ['mad', 10],
|
|
194
|
+
['malicious', 10], ['manipulated', 10], ['matter', 10], ['fact', 10], ['mean', 10], ['meditative', 10],
|
|
195
|
+
['melancholic', 10], ['melancholy', 10], ['mellow', 10], ['merciless', 10], ['merry', 10],
|
|
196
|
+
['mischievous', 10],
|
|
197
|
+
['miserable', 10], ['misinterpreted', 10], ['mistreated', 10], ['misunderstood', 10], ['mixed', 10],
|
|
198
|
+
['mocked', 10], ['mocking', 10], ['modest', 10], ['molested', 10], ['moody', 10], ['morose', 10],
|
|
199
|
+
['motivated', 10], ['mournful', 10], ['moved', 10], ['mystified', 10], ['naive', 10], ['nasty', 10],
|
|
200
|
+
['naughty', 10], ['nauseated', 10], ['needed', 10], ['needy', 10], ['negative', 10], ['neglected', 10],
|
|
201
|
+
['nerdy', 10], ['nervous', 10], ['neurotic', 10], ['nightmarish', 10], ['nonchalant', 10],
|
|
202
|
+
['nostalgic', 10],
|
|
203
|
+
['not', 10], ['specified', 10], ['noticed', 10], ['numb', 10], ['obeyed', 10], ['objective', 10],
|
|
204
|
+
['obligated', 10], ['obvious', 10], ['odd', 10], ['offended', 10], ['okay', 10], ['old', 10], ['open', 10],
|
|
205
|
+
['oppressed', 10], ['optimistic', 10], ['ornery', 10], ['control', 10], ['outraged', 10], ['overcome', 10],
|
|
206
|
+
['overjoyed', 10], ['overloaded', 10], ['overwhelmed', 10], ['overworked', 10], ['owned', 10],
|
|
207
|
+
['painful', 10],
|
|
208
|
+
['pampered', 10], ['panicky', 10], ['paralyzed', 10], ['passionate', 10], ['passive', 10], ['patient', 10],
|
|
209
|
+
['patronizing', 10], ['peaceful', 10], ['peeved', 10], ['pensive', 10], ['perky', 10], ['perplexed', 10],
|
|
210
|
+
['persecuted', 10], ['pessimistic', 10], ['pestered', 10], ['petrified', 10], ['petty', 10], ['phony', 10],
|
|
211
|
+
['pious', 10], ['pissed', 10], ['off', 10], ['playful', 10], ['pleased', 10], ['poor', 10],
|
|
212
|
+
['positive', 10],
|
|
213
|
+
['possessive', 10], ['powerful', 10], ['powerless', 10], ['practical', 10], ['predatory', 10],
|
|
214
|
+
['pressured', 10], ['private', 10], ['productive', 10], ['protected', 10], ['protective', 10],
|
|
215
|
+
['proud', 10],
|
|
216
|
+
['provoked', 10], ['prudish', 10], ['punished', 10], ['pushy', 10], ['puzzled', 10], ['questioned', 10],
|
|
217
|
+
['quiet', 10], ['quixotic', 10], ['quizzical', 10], ['rambunctious', 10], ['realistic', 10],
|
|
218
|
+
['reassured', 10],
|
|
219
|
+
['rebellious', 10], ['reborn', 10], ['receptive', 10], ['reckless', 10], ['recognized', 10],
|
|
220
|
+
['reconciled', 10], ['recumbent', 10], ['reflective', 10], ['refreshed', 10], ['regretful', 10],
|
|
221
|
+
['rejected', 10], ['rejuvenated', 10], ['relaxed', 10], ['released', 10], ['relieved', 10],
|
|
222
|
+
['reluctant', 10],
|
|
223
|
+
['reminiscent', 10], ['remorse', 10], ['renewed', 10], ['replaced', 10], ['replenished', 10],
|
|
224
|
+
['repressed', 10], ['rescued', 10], ['resentful', 10], ['reserved', 10], ['resistant', 10],
|
|
225
|
+
['resourceful', 10], ['respected', 10], ['responsible', 10], ['restless', 10], ['restricted', 10],
|
|
226
|
+
['revengeful', 10], ['reverent', 10], ['revitalized', 10], ['ribald', 10], ['rich', 10], ['ridicule', 10],
|
|
227
|
+
['ridiculous', 10], ['right', 10], ['rigid', 10], ['robbed', 10], ['romantic', 10], ['rotten', 10],
|
|
228
|
+
['rushed', 10], ['sabotaged', 10], ['sad', 10], ['safe', 10], ['sarcastic', 10], ['sardonic', 10],
|
|
229
|
+
['sassy', 10], ['satiated', 10], ['satiric', 10], ['satisfied', 10], ['saved', 10], ['scared', 10],
|
|
230
|
+
['scolded', 10], ['scorned', 10], ['secure', 10], ['seductive', 10], ['selfish', 10], ['self-assured', 10],
|
|
231
|
+
['self-centered', 10], ['self-confident', 10], ['self-conscious', 10], ['self-destructive', 10],
|
|
232
|
+
['self-reliant', 10], ['sensitive', 10], ['sentimental', 10], ['serene', 10], ['serious', 10],
|
|
233
|
+
['sexy', 10],
|
|
234
|
+
['shaken', 10], ['shamed', 10], ['sheepish', 10], ['shocked', 10], ['shunned', 10], ['shy', 10],
|
|
235
|
+
['sick', 10],
|
|
236
|
+
['silenced', 10], ['silly', 10], ['sincere', 10], ['sinful', 10], ['skeptical', 10], ['skillful', 10],
|
|
237
|
+
['slandered', 10], ['sleepy', 10], ['sluggish', 10], ['small', 10], ['smart', 10], ['smothered', 10],
|
|
238
|
+
['solemn', 10], ['somber', 10], ['soothed', 10], ['sorry', 10], ['special', 10], ['spiteful', 10],
|
|
239
|
+
['splendid', 10], ['spunky', 10], ['squashed', 10], ['stifled', 10], ['stimulated', 10], ['stingy', 10],
|
|
240
|
+
['strained', 10], ['stressed', 10], ['stretched', 10], ['strong', 10], ['stubborn', 10], ['stumped', 10],
|
|
241
|
+
['stunned', 10], ['stupid', 10], ['submissive', 10], ['successful', 10], ['suffocated', 10],
|
|
242
|
+
['suicidal', 10],
|
|
243
|
+
['sullen', 10], ['sunk', 10], ['super', 10], ['superior', 10], ['supported', 10], ['sure', 10],
|
|
244
|
+
['surly', 10],
|
|
245
|
+
['surprised', 10], ['suspenseful', 10], ['suspicious', 10], ['sympathetic', 10], ['tacky', 10],
|
|
246
|
+
['tactful', 10], ['talented', 10], ['talkative', 10], ['tame', 10], ['tarnished', 10], ['tasteful', 10],
|
|
247
|
+
['tearful', 10], ['teased', 10], ['tenacious', 10], ['tender', 10], ['tense', 10], ['tepid', 10],
|
|
248
|
+
['terrible', 10], ['terrific', 10], ['terrified', 10], ['terrifying', 10], ['tested', 10], ['testy', 10],
|
|
249
|
+
['thankful', 10], ['thoughtful', 10], ['threatened', 10], ['threatening', 10], ['thrifty', 10],
|
|
250
|
+
['thrilled', 10], ['tired', 10], ['tormented', 10], ['torn', 10], ['tortured', 10], ['touched', 10],
|
|
251
|
+
['tough', 10], ['tragic', 10], ['tranquil', 10], ['transformed', 10], ['trapped', 10], ['treasured', 10],
|
|
252
|
+
['trembly', 10], ['tremendous', 10], ['tricked', 10], ['troubled', 10], ['trusted', 10], ['trustful', 10],
|
|
253
|
+
['ugly', 10], ['unaccepted', 10], ['unappreciated', 10], ['unbalanced', 10], ['unburdened', 10],
|
|
254
|
+
['uncanny', 10], ['uncomfortable', 10], ['unconcerned', 10], ['uneven', 10], ['unfit', 10],
|
|
255
|
+
['unfriendly', 10],
|
|
256
|
+
['united', 10], ['unjust', 10], ['unknown', 10], ['unneeded', 10], ['unpleasant', 10], ['unreal', 10],
|
|
257
|
+
['unruly', 10], ['unwise', 10], ['up', 10], ['uplifted', 10], ['used', 10], ['useless', 10],
|
|
258
|
+
['vacant', 10],
|
|
259
|
+
['vague', 10], ['vain', 10], ['valid', 10], ['valued', 10], ['vengeful', 10], ['vexed', 10],
|
|
260
|
+
['vicious', 10],
|
|
261
|
+
['victimized', 10], ['victorious', 10], ['violated', 10], ['violent', 10], ['vivacious', 10],
|
|
262
|
+
['vivid', 10],
|
|
263
|
+
['void', 10], ['wacky', 10], ['warlike', 10], ['warm', 10], ['warmhearted', 10], ['warned', 10],
|
|
264
|
+
['wary', 10],
|
|
265
|
+
['wasted', 10], ['weak', 10], ['wealthy', 10], ['weary', 10], ['weird', 10], ['welcoming', 10],
|
|
266
|
+
['whimsical', 10], ['whole', 10], ['wild', 10], ['willful', 10], ['wishful', 10], ['witty', 10],
|
|
267
|
+
['worldly', 10], ['worried', 10], ['worse', 10], ['worthy', 10], ['wounded', 10], ['wrong', 10],
|
|
268
|
+
['yearning', 10], ['yellow', 10], ['yielding', 10], ['young', 10], ['youthful', 10], ['zany', 10],
|
|
269
|
+
['zealous', 10]
|
|
270
|
+
]
|
{novelai_python-0.1.9 → novelai_python-0.2.1}/src/novelai_python/utils/random_prompt/tag_nsfw.py
RENAMED
|
@@ -966,3 +966,19 @@ nsfw = {
|
|
|
966
966
|
"nw": "nsfw"
|
|
967
967
|
}
|
|
968
968
|
|
|
969
|
+
if __name__ == "__main__":
|
|
970
|
+
|
|
971
|
+
# 获取tags列表
|
|
972
|
+
tags = []
|
|
973
|
+
for key, value in nsfw.items():
|
|
974
|
+
if not key.startswith('_') and key != 'var':
|
|
975
|
+
tags.extend(value)
|
|
976
|
+
print(tags)
|
|
977
|
+
|
|
978
|
+
# 展开二级列表
|
|
979
|
+
tags = [tag[0] for tag in tags]
|
|
980
|
+
print(tags)
|
|
981
|
+
import json
|
|
982
|
+
|
|
983
|
+
with open('../../../../playground/cos/tag_nsfw.json', 'w') as f:
|
|
984
|
+
json.dump(tags, f)
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{novelai_python-0.1.9 → novelai_python-0.2.1}/src/novelai_python/_response/ai/generate_image.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{novelai_python-0.1.9 → novelai_python-0.2.1}/src/novelai_python/_response/user/subscription.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|