File size: 1,921 Bytes
55919d3
 
d77aeaa
55919d3
 
 
 
 
 
 
 
 
d77aeaa
55919d3
 
 
d77aeaa
55919d3
 
 
 
 
 
d77aeaa
 
 
 
55919d3
d77aeaa
55919d3
 
 
 
 
 
d77aeaa
 
55919d3
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
d77aeaa
55919d3
 
 
 
 
d77aeaa
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
55919d3
d77aeaa
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
55919d3
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
# =====================================================
# Apckeyl Framework
# Version 1.1
# telegram_queue.py
# =====================================================

"""
Telegram Queue.

Соединяет Telegram Framework
с системой очереди проекта.

Version 1.1
"""

from priority_queue import PriorityQueue
from batch_processor import BatchProcessor


class TelegramQueue:
    """
    Telegram Queue.

    Принимает задания Telegram,
    помещает их в PriorityQueue
    и может передавать их
    BatchProcessor.

    Сам AI не выполняет.
    """

    def __init__(self):

        self.queue = PriorityQueue()

        self.batch_processor = BatchProcessor()

    # -------------------------------------------------

    def add_task(

        self,

        task,

        owner=False,

    ):

        self.queue.add(

            task=task,

            owner=owner,

        )

        print()

        print("Task added to PriorityQueue.")

        print(

            f"Queue size : {self.queue.size()}"

        )

    # -------------------------------------------------

    def process_next(

        self,

        mode,

        quality,

        denoise,

    ):

        task = self.queue.get_next()

        if task is None:

            print()

            print("Queue is empty.")

            return None

        print()

        print("Processing task...")

        return self.batch_processor.process_with_limit(

            images=[task],

            mode=mode,

            quality=quality,

            denoise=denoise,

        )

    # -------------------------------------------------

    def size(self):

        return self.queue.size()

    # -------------------------------------------------

    def clear(self):

        self.queue.clear()

        print()

        print("Telegram queue cleared.")