File size: 1,814 Bytes
772b344
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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

from modules.taggers.base import TaggerProcessor

class CLTaggerProcessor(TaggerProcessor):
    def __init__(self, cl_tagger_instance_ref, replacement_file_path, synonym_file_path, addition_file_path):
        super().__init__(replacement_file_path, synonym_file_path, addition_file_path)
        self.cl_tagger_ref = cl_tagger_instance_ref
    
    def predict(self, image, gen_threshold, char_threshold, replacement_file_path, synonym_file_path, addition_file_path, sort_order="Alfabetik", device_pref: str = "Auto"):
        self.replacement_file = replacement_file_path
        self.synonym_file = synonym_file_path
        self.addition_file = addition_file_path
        
        if self.cl_tagger_ref is None or self.cl_tagger_ref.session is None:
            return "", "❌ CL Tagger modülü yüklenemedi.", []
        if image is None: return "", "⚠️ Resim yüklenmedi.", []
        try:
            ai_tags_string_raw, _, raw_predictions_dict = self.cl_tagger_ref.predict(image, gen_threshold, char_threshold)
            all_raw_tags_with_probs = []
            for category_key in ["rating", "quality", "artist", "character", "copyright", "general", "meta", "model"]:
                all_raw_tags_with_probs.extend(raw_predictions_dict.get(category_key, []))
            all_raw_tags_with_probs_sorted = sorted(all_raw_tags_with_probs, key=lambda x: x[1], reverse=True)
            original_order_for_cl = [tag_name.replace("_", " ") for tag_name, _ in all_raw_tags_with_probs_sorted]
            final_tags = self.process_tags(ai_tags_string_raw, sort_order, original_order_for_cl)
            return final_tags, "✅ CL Tagger işlemi tamamlandı!", original_order_for_cl
        except Exception as e:
            return f"Hata: {e}", f"❌ CL Tagger hata: {e}", []