3
3
import urllib .parse
4
4
from pathlib import Path
5
5
6
- from modules import shared , ui_extra_networks_user_metadata , errors , extra_networks
6
+ from modules import shared , ui_extra_networks_user_metadata , errors , extra_networks , util
7
7
from modules .images import read_info_from_image , save_image_with_geninfo
8
8
import gradio as gr
9
9
import json
@@ -107,6 +107,7 @@ def __init__(self, title):
107
107
self .allow_negative_prompt = False
108
108
self .metadata = {}
109
109
self .items = {}
110
+ self .lister = util .MassFileLister ()
110
111
111
112
def refresh (self ):
112
113
pass
@@ -123,7 +124,7 @@ def read_user_metadata(self, item):
123
124
124
125
def link_preview (self , filename ):
125
126
quoted_filename = urllib .parse .quote (filename .replace ('\\ ' , '/' ))
126
- mtime = os . path . getmtime (filename )
127
+ mtime , _ = self . lister . mctime (filename )
127
128
return f"./sd_extra_networks/thumb?filename={ quoted_filename } &mtime={ mtime } "
128
129
129
130
def search_terms_from_path (self , filename , possible_directories = None ):
@@ -137,6 +138,8 @@ def search_terms_from_path(self, filename, possible_directories=None):
137
138
return ""
138
139
139
140
def create_html (self , tabname ):
141
+ self .lister .reset ()
142
+
140
143
items_html = ''
141
144
142
145
self .metadata = {}
@@ -282,10 +285,10 @@ def get_sort_keys(self, path):
282
285
List of default keys used for sorting in the UI.
283
286
"""
284
287
pth = Path (path )
285
- stat = pth . stat ( )
288
+ mtime , ctime = self . lister . mctime ( path )
286
289
return {
287
- "date_created" : int (stat . st_ctime or 0 ),
288
- "date_modified" : int (stat . st_mtime or 0 ),
290
+ "date_created" : int (mtime ),
291
+ "date_modified" : int (ctime ),
289
292
"name" : pth .name .lower (),
290
293
"path" : str (pth .parent ).lower (),
291
294
}
@@ -298,7 +301,7 @@ def find_preview(self, path):
298
301
potential_files = sum ([[path + "." + ext , path + ".preview." + ext ] for ext in allowed_preview_extensions ()], [])
299
302
300
303
for file in potential_files :
301
- if os . path . isfile (file ):
304
+ if self . lister . exists (file ):
302
305
return self .link_preview (file )
303
306
304
307
return None
@@ -308,6 +311,9 @@ def find_description(self, path):
308
311
Find and read a description file for a given path (without extension).
309
312
"""
310
313
for file in [f"{ path } .txt" , f"{ path } .description.txt" ]:
314
+ if not self .lister .exists (file ):
315
+ continue
316
+
311
317
try :
312
318
with open (file , "r" , encoding = "utf-8" , errors = "replace" ) as f :
313
319
return f .read ()
0 commit comments