1- import sys
2- import json
1+ import sys , json
32
43import stashapi .log as log
54from stashapi .stashapp import StashInterface
@@ -48,42 +47,42 @@ def main():
4847 if mode_arg == "scenes_delete_record_paths" :
4948 scenes_delete_record_paths ()
5049
51-
5250def update_image (image_id , paths ):
5351 update = stash .update_image (
54- {'id' : image_id , 'urls' : paths })
52+ {'id' : image_id , 'urls' : paths })
5553 return update
5654
57-
5855def update_scene (scene_id , paths ):
5956 update = stash .update_scene (
60- {'id' : scene_id , 'urls' : paths })
57+ {'id' : scene_id , 'urls' : paths })
6158 return update
6259
63-
6460def find_images (find_images_tag ):
65- log .debug (f"Hello: { find_images_tag } " )
66- images = stash .find_images (
67- f = {
68- "file_count" : {"modifier" : "GREATER_THAN" , "value" : 1 },
69- "tags" : {"modifier" : "EXCLUDES" , "value" : find_images_tag },
70- },
71- filter = {
72- "per_page" : "-1"
73- }
74- )
75- return images
61+ image_count , images = stash .find_images (
62+ f = {
63+ "file_count" : {"modifier" : "GREATER_THAN" , "value" : 1 },
64+ "tags" : {"modifier" : "EXCLUDES" , "value" : find_images_tag },
65+ },
66+ filter = {
67+ "per_page" : "-1"
68+ },
69+ get_count = True ,
7670
71+ )
72+ return image_count , images
7773
7874def find_scenes (find_scenes_tag ):
79- scenes = stash .find_scenes (
80- f = {
81- "file_count" : {"modifier" : "GREATER_THAN" , "value" : 1 },
82- "tags" : {"modifier" : "EXCLUDES" , "value" : find_scenes_tag },
83- }
84- )
85- return scenes
86-
75+ scene_count , scenes = stash .find_scenes (
76+ f = {
77+ "file_count" : {"modifier" : "GREATER_THAN" , "value" : 1 },
78+ "tags" : {"modifier" : "EXCLUDES" , "value" : find_scenes_tag },
79+ },
80+ filter = {
81+ "per_page" : "-1"
82+ },
83+ get_count = True ,
84+ )
85+ return scene_count , scenes
8786
8887def find_tag (name , create = False ):
8988 find_tag_tag = stash .find_tag (name , create )
@@ -93,7 +92,6 @@ def find_tag(name, create=False):
9392 log .info (f"Found Tag: ID:{ find_tag_tag ['id' ]} Name: { find_tag_tag ['name' ]} " )
9493 return find_tag_tag
9594
96-
9795def create_tag (obj ):
9896 create_tag_tag = stash .create_tag (obj )
9997
@@ -103,118 +101,115 @@ def create_tag(obj):
103101 log .info (f"Created Tag: ID:{ create_tag_tag ['id' ]} Name: { create_tag_tag ['name' ]} " )
104102 return create_tag_tag
105103
106-
107104def remove_tag ():
108105 remove_tag_tag = find_tag (tag_exclude ["name" ])
109106 if remove_tag_tag is not None :
110107 stash .destroy_tag (remove_tag_tag ['id' ])
111108 log .info (f"Deleted Tag - ID:{ remove_tag_tag ['id' ]} : Name: { remove_tag_tag ['name' ]} " )
112109
113-
114110def images_delete ():
115- log .info ("Addtional Files Deleter: Initialised with Args: images_delete" )
116111 images_delete_tag = find_tag (tag_exclude )
117112
118113 if images_delete_tag is None :
119114 images_delete_tag = create_tag (tag_exclude )
120115
121- images = find_images (images_delete_tag ["id" ])
116+ image_count , images = find_images (images_delete_tag ["id" ])
117+ log .info (f"Deleting Addtional files of { image_count } image objects" )
118+
119+ for j , image in enumerate (images ):
120+ log .progress (j / image_count )
122121
123- for image in images :
124- log .info (f"ID:{ image ['id' ]} - Deleting addtional files from Image Object" )
125122 for i , file in enumerate (image ["visual_files" ]):
126123 if i == 0 : # skip first ID
127124 continue
128125 delete = stash .destroy_files (file ["id" ])
129126 if delete is True :
130- log .info (f"File ID:{ file ['id' ]} - Deleted: { file ['path' ]} " )
127+ log .info (f"Image ID: { image [ 'id' ] } - File ID:{ file ['id' ]} - Deleted: { file ['path' ]} " )
131128 else :
132- log .error (f"File ID:{ file ['id' ]} - Could not be Deleted: { file ['path' ]} " )
133-
129+ log .error (f"Image ID:{ image ['id' ]} - File ID:{ file ['id' ]} - Could not be Deleted: { file ['path' ]} " )
134130
135131def images_delete_record_paths ():
136- log .info ("Addtional Files Deleter: Initialised with Args: images_delete_record_paths" )
137132 images_delete_record_tag = find_tag (tag_exclude )
138133
139134 if images_delete_record_tag is None :
140135 images_delete_record_tag = create_tag (tag_exclude )
141136
142- images = find_images (images_delete_record_tag ["id" ])
143- for image in images :
137+ image_count , images = find_images (images_delete_record_tag ["id" ])
138+ log .info (f"Deleting Addtional Images of { image_count } image objects and recording paths in URLs Field" )
139+
140+ for j , image in enumerate (images ):
144141 image_id = image ["id" ]
145142 paths = image ["urls" ]
146- log .info (f"ID:{ image_id } - Image object: Deleting addtional files and recording path(s) in URLs Field" )
143+ log .progress (j / image_count )
144+
147145 for i , file in enumerate (image ["visual_files" ]):
148146 if i == 0 : # skip first ID
149147 continue
150148 path = file ["path" ]
151149 delete = stash .destroy_files (file ["id" ])
152150 if delete is True :
153- log .info (f"ID:{ file ['id' ]} - deleted : { path } " )
151+ log .info (f"Image ID:{ image [ 'id' ] } - File ID: { file ['id' ]} - Deleted : { path } " )
154152 paths .append ("File: " + path )
155153 else :
156- log .error (f"ID:{ file ['id' ]} - Could not be deleted: { path } " )
157- log .info (f"Updating Image ID:{ image_id } : URLs with path(s): { paths } " )
154+ log .error (f"Image ID:{ image ['id' ]} - File ID:{ file ['id' ]} - Could not be Deleted: { path } " )
158155 update = update_image (image_id , paths )
159156 if update is not None :
160157 log .info (f"Image ID:{ image_id } : Updated with path(s) as URLs: { path } " )
161158 else :
162159 log .error (f"Image ID:{ image_id } : Could not be updated with path(s) as URLs: { path } " )
163160
164-
165161def scenes_delete ():
166- log .info ("Addtional Files Deleter: Initialised with Args: scenes_delete" )
167162 scenes_delete_tag = find_tag (tag_exclude )
168163
169164 if scenes_delete_tag is None :
170165 scenes_delete_tag = create_tag (tag_exclude )
171166
172- scenes = find_scenes (scenes_delete_tag ["id" ])
173- for scene in scenes :
174- log .info (f"Scene: { scene } " )
167+ scene_count , scenes = find_scenes (scenes_delete_tag ["id" ])
168+ log .info (f"Deleting Addtional files of { scene_count } scene objects and recording paths in URLs Field" )
169+
170+ for j , scene in enumerate (scenes ):
171+ log .progress (j / scene_count )
175172
176- log .info (f"ID:{ scene ['id' ]} - Deleting addtional files from Scene Object" )
177173 for i , file in enumerate (scene ["files" ]):
178174 if i == 0 : # skip first ID
179175 continue
180176 delete = stash .destroy_files (file ["id" ])
181177 if delete is True :
182- log .info (f"File ID:{ file ['id' ]} - Deleted: { file ['path' ]} " )
178+ log .info (f"Scene ID: { scene [ 'id' ] } - File ID:{ file ['id' ]} - Deleted: { file ['path' ]} " )
183179 else :
184- log .error (
185- f"File ID:{ file ['id' ]} - Ccould not be Deleted: { file ['path' ]} " )
186-
180+ log .error (f"Scene ID:{ scene ['id' ]} - File ID:{ file ['id' ]} - Could not be Deleted: { file ['path' ]} " )
187181
188182def scenes_delete_record_paths ():
189- log .info ("Addtional Files Deleter: Initialised with Args: scenes_delete_record_paths" )
190183 scenes_delete_record_tag = find_tag (tag_exclude )
191184
192185 if scenes_delete_record_tag is None :
193186 scenes_delete_record_tag = create_tag (tag_exclude )
194187
195- scenes = find_scenes (scenes_delete_record_tag ["id" ])
196- for scene in scenes :
188+ scene_count , scenes = find_scenes (scenes_delete_record_tag ["id" ])
189+ log .info (f"Deleting Addtional files of { scene_count } scene objects and recording paths in URLs Field" )
190+
191+ for j , scene in enumerate (scenes ):
192+ log .progress (j / scene_count )
193+
197194 scene_id = scene ["id" ]
198195 paths = scene ["urls" ]
199- log . info ( f"ID: { id } - Scene object: Deleting addtional files and recording path(s) in URLs Field" )
196+
200197 for i , file in enumerate (scene ["files" ]):
201198 if i == 0 : # skip first ID
202199 continue
203200 path = file ["path" ]
204201 delete = stash .destroy_files (file ["id" ])
205202 if delete is True :
206- log .info (f"ID:{ file ['id' ]} - Deleted: { path } " )
203+ log .info (f"Scene ID: { scene [ 'id' ] } - File ID:{ file ['id' ]} - Deleted: { path } " )
207204 paths .append ("File: " + path )
208205 else :
209- log .error (f"ID:{ file ['id' ]} - Could not be Deleted: { path } " )
210- log .info (f"Updating Scene ID:{ scene_id } : URLs with path(s): { paths } " )
206+ log .error (f"Scene ID:{ scene ['id' ]} - File ID:{ file ['id' ]} - Could not be Deleted: { path } " )
211207 update = update_scene (scene_id , paths )
212208 if update is not None :
213- log .info (
214- f"Scene ID:{ scene_id } : Updated with path(s) as URLs: { path } " )
209+ log .info (f"Scene ID:{ scene_id } : Updated with path(s) as URLs: { path } " )
215210 else :
216- log .error (f"Scene ID:{ scene_id } : Could not be updated with path(s) as URLs: { path } " )
217-
211+ log .error (f"Scene ID:{ scene_id } : Could not be updated with path(s) as URLs: "
212+ "{path}" )
218213
219214if __name__ == "__main__" :
220215 main ()
0 commit comments