File size: 1,642 Bytes
61b042a
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
4b837ce
 
 
 
 
61b042a
 
 
 
 
 
 
 
 
 
 
 
 
 
4b837ce
61b042a
 
 
 
 
 
 
 
 
 
 
 
 
4b837ce
61b042a
 
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
import asyncio
import aiofiles
import os
from logger import get_logger

log = get_logger()

class AppState:
    def __init__(self):
        self.status = "STOPPED" # STOPPED, RUNNING, PAUSED
        self.concurrency = 10
        self.min_length = 4
        
        self.total_words = 0
        self.processed = 0
        
        # Explicit counting metrics mapping registers
        self.counts = {"taken": 0, "unavailable": 0, "sold": 0, "auction": 0, "available": 0, "forsale": 0, "error": 0}
        self.fail_counts = {} 
        
        self.queue = None 
        self.proxies = []
        
        if not os.path.exists("results"):
            os.makedirs("results")

    async def init_queue(self):
        if self.queue is None:
            self.queue = asyncio.Queue()

    async def add_to_queue(self, words):
        await self.init_queue()
        for w in words:
            await self.queue.put(w)
        self.total_words = self.queue.qsize() + self.processed
        log.info(f"📊 Memory Queue Rebuilt. Active total words count register: {self.total_words}")

    async def save_result(self, word, status):
        self.processed += 1
        clean_status = status.lower().replace("_", "")
        
        if clean_status in self.counts:
            self.counts[clean_status] += 1
            
        filename = f"results/{clean_status}.txt"
        try:
            async with aiofiles.open(filename, "a", encoding="utf-8") as f:
                await f.write(f"{word}\n")
        except Exception as e:
            log.error(f"Failed to append result tracking entry for {word} to {filename}: {e}")

state = AppState()