Skip to content

Commit 83a0f0a

Browse files
committed
tagImagesWithPerfTags bulk processing works, respects exclussion cirteria
1 parent afb26fe commit 83a0f0a

File tree

1 file changed

+46
-14
lines changed

1 file changed

+46
-14
lines changed

plugins/tagImagesWithPerfTags/tagImagesWithPerfTags.py

Lines changed: 46 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,15 @@
1+
import stashapi.log as log
12
from stashapi.stashapp import StashInterface
23
import sys
34
import json
45

56
def processAll():
7+
exclusion_marker_tag_id = None
8+
if settings["excludeImageWithTag"] != "":
9+
exclussion_marker_tag = stash.find_tag(settings["excludeImageWithTag"])
10+
if exclussion_marker_tag is not None:
11+
exclusion_marker_tag_id = exclussion_marker_tag['id']
12+
613
query = {
714
"tags": {
815
"modifier": "NOT_NULL",
@@ -12,25 +19,50 @@ def processAll():
1219
"value": 0,
1320
},
1421
}
15-
performersTotal = stash.find_performers(f=query, get_count=True)[0]
22+
performersTotal = stash.find_performers(f=query, filter={"page": 0, "per_page": 0}, get_count=True)[0]
1623
i = 0
17-
tags = []
18-
images = []
1924
while i < performersTotal:
2025
perf = stash.find_performers(f=query, filter={"page": i, "per_page": 1})
21-
for tag in perf[0]["tags"]:
22-
tags.append(tag["id"])
23-
for image in perf[0]["images"]:
24-
images.append(image["id"])
25-
stash.update_images(
26-
{
27-
"ids": images,
28-
"tag_ids": {"mode": "ADD", "ids": tags},
26+
27+
performer_tags_ids = []
28+
performer_tags_names = []
29+
for performer_tag in perf[0]["tags"]:
30+
performer_tags_ids.append(performer_tag["id"])
31+
performer_tags_names.append(performer_tag["name"])
32+
33+
image_query = {
34+
"performers": {
35+
"value": [perf[0]["id"]],
36+
"modifier": "INCLUDES_ALL"
2937
}
30-
)
38+
}
39+
if settings['excludeImageOrganized']:
40+
image_query["organized"] = False
41+
if exclusion_marker_tag_id is not None:
42+
image_query["tags"] = {
43+
"value": [exclusion_marker_tag_id],
44+
"modifier": "EXCLUDES"
45+
}
46+
47+
performer_image_count = stash.find_images(f=image_query, filter={"page": 0, "per_page": 0}, get_count=True)[0]
48+
49+
log.info(f"updating {performer_image_count} images of performer \"{ perf[0]['name']}\" with tags {performer_tags_names}")
50+
51+
performer_image_page_size = 100
52+
performer_image_page = 0
53+
while performer_image_page * performer_image_page_size < performer_image_count:
54+
performer_images = stash.find_images(f=image_query, filter={"page": performer_image_page, "per_page": performer_image_page_size}, fragment='id')
55+
performer_image_ids = [performer_image['id'] for performer_image in performer_images]
56+
57+
stash.update_images(
58+
{
59+
"ids": performer_image_ids,
60+
"tag_ids": {"mode": "ADD", "ids": performer_tags_ids},
61+
}
62+
)
63+
performer_image_page += 1
64+
3165
i = i + 1
32-
tags = []
33-
images = []
3466

3567

3668
def processImage(image):

0 commit comments

Comments
 (0)