Commit b7e78ef6 authored by yfszzx's avatar yfszzx
Browse files

Image browser improve

parent c6f778d9
Loading
Loading
Loading
Loading
+22 −21
Original line number Diff line number Diff line
@@ -101,13 +101,14 @@ def auto_sorting(dir_name):
    return sorted(date_list, reverse=True)

def archive_images(dir_name, date_to):    
    
    filenames = []   
    loads_num =int(opts.images_history_num_per_page * opts.images_history_pages_num)
    batch_size =int(opts.images_history_num_per_page * opts.images_history_pages_num)
    if batch_size <= 0:
        batch_size = opts.images_history_num_per_page * 6
    today = time.strftime("%Y%m%d",time.localtime(time.time()))
    date_to = today if date_to is None  or date_to == "" else date_to
    date_to_bak = date_to 
    if opts.images_history_reconstruct_directory:        
    if False: #opts.images_history_reconstruct_directory:        
        date_list = auto_sorting(dir_name)               
        for date in date_list:
            if date <= date_to:
@@ -115,11 +116,13 @@ def archive_images(dir_name, date_to):
                if date == today and not os.path.exists(path):
                    continue
                filenames = traverse_all_files(path, filenames)
            if len(filenames) > loads_num:            
            if len(filenames) > batch_size:            
                break
        filenames = sorted(filenames, key=lambda file: -os.path.getmtime(file))
    else:
        filenames = traverse_all_files(dir_name, filenames)  
        total_num = len(filenames) 
        batch_count = len(filenames) + 1 //  batch_size + 1
        tmparray = [(os.path.getmtime(file), file) for file in filenames ]
        date_stamp = time.mktime(time.strptime(date_to, "%Y%m%d")) + 86400      
        filenames = []
@@ -132,8 +135,8 @@ def archive_images(dir_name, date_to):
                filenames.append((t, f ,date))
        date_list = sorted(list(date_list.keys()), reverse=True)
        sort_array = sorted(filenames, key=lambda x:-x[0])
        if len(sort_array) > loads_num:
            date = sort_array[loads_num][2]
        if len(sort_array) > batch_size:
            date = sort_array[batch_size][2]
            filenames = [x[1] for x in sort_array]
        else:
            date =  date_to if len(sort_array) == 0 else sort_array[-1][2]
@@ -141,9 +144,9 @@ def archive_images(dir_name, date_to):
        filenames = [x[1] for x in sort_array if x[2]>= date]   
    num = len(filenames)  
    last_date_from = date_to_bak if num == 0 else time.strftime("%Y%m%d", time.localtime(time.mktime(time.strptime(date, "%Y%m%d")) - 1000))
    date = date[:4] + "-" + date[4:6] + "-" + date[6:8]
    date_to_bak = date_to_bak[:4] + "-" + date_to_bak[4:6] + "-" + date_to_bak[6:8]
    load_info = f"Loaded {(num + 1) // opts.images_history_pages_num} pades, {num} images, during {date} - {date_to_bak}"
    date = date[:4] + "/" + date[4:6] + "/" + date[6:8]
    date_to_bak = date_to_bak[:4] + "/" + date_to_bak[4:6] + "/" + date_to_bak[6:8]
    load_info = f"{total_num} images in this directory. Loaded {num} images during {date} - {date_to_bak}, divided into {int((num + 1) // opts.images_history_num_per_page + 1)} pages"
    _, image_list, _, _, visible_num = get_recent_images(1, 0, filenames)
    return (
        gradio.Dropdown.update(choices=date_list, value=date_to),
@@ -154,12 +157,10 @@ def archive_images(dir_name, date_to):
        "",
        "",
        visible_num, 
        last_date_from
        last_date_from, 
        #gradio.update(visible=batch_count > 1)
    )




def delete_image(delete_num, name, filenames, image_index, visible_num):
    if name == "":
        return filenames, delete_num
@@ -295,16 +296,16 @@ def show_images_history(gr, opts, tabname, run_pnginfo, switch_dict):

    with gr.Column() as page_panel:            
            with gr.Row():  
                img_path = gr.Textbox(dir_name, label="Images directory", placeholder="Input images directory") 
                img_path = gr.Textbox(dir_name, label="Images directory", placeholder="Input images directory", interactive=custom_dir) 
            with gr.Row(visible=False) as warning:                 
                warning_box = gr.Textbox("Message", interactive=False)                        

            with gr.Row(visible=not custom_dir, elem_id=tabname + "_images_history") as main_panel:
                with gr.Column(scale=2):                   
                    with gr.Row():                    
                        backward = gr.Button('Backward')         
                        date_to = gr.Dropdown(label="Date to") 
                    with gr.Row() as batch_panel:                    
                        forward = gr.Button('Forward')        
                        date_to = gr.Dropdown(label="Date to")
                        backward = gr.Button('Backward')                           
                        newest = gr.Button('Reload', elem_id=tabname + "_images_history_start")   
                    with gr.Row():
                        load_info = gr.Textbox(show_label=False, interactive=False)  
@@ -335,7 +336,7 @@ def show_images_history(gr, opts, tabname, run_pnginfo, switch_dict):

                            
                        # hiden items
                        with gr.Row(): #visible=False):   
                        with gr.Row(visible=False):   
                            visible_img_num = gr.Number()                     
                            date_to_recorder = gr.State([])
                            last_date_from = gr.Textbox()