aboutsummaryrefslogtreecommitdiff
path: root/scripts/prompts_from_file.py
blob: d9b01c81b44fd8b6f275f0375aa32709129f21d4 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
import math
import os
import sys
import traceback

import modules.scripts as scripts
import gradio as gr

from modules.processing import Processed, process_images
from PIL import Image
from modules.shared import opts, cmd_opts, state


class Script(scripts.Script):
    def title(self):
        return "Prompts from file"

    def ui(self, is_img2img):
        file = gr.File(label="File with inputs", type='bytes')

        return [file]

    def run(self, p, data: bytes):
        lines = [x.strip() for x in data.decode('utf8', errors='ignore').split("\n")]
        lines = [x for x in lines if len(x) > 0]

        batch_count = math.ceil(len(lines) / p.batch_size)
        print(f"Will process {len(lines) * p.n_iter} images in {batch_count * p.n_iter} batches.")

        p.do_not_save_grid = True

        state.job_count = batch_count

        images = []
        for batch_no in range(batch_count):
            state.job = f"{batch_no + 1} out of {batch_count * p.n_iter}"
            p.prompt = lines[batch_no*p.batch_size:(batch_no+1)*p.batch_size] * p.n_iter
            proc = process_images(p)
            images += proc.images

        return Processed(p, images, p.seed, "")