import re import os def extract_chat_lines(input_file, output_file): with open(input_file, 'r', encoding='utf-8') as infile: lines = infile.readlines() chat_lines = [] previous_lines = set() for original_line in lines: line = original_line.strip() time_prefix = re.match(r'^\[\d{2}:\d{2}:\d{2}\]', line) if time_prefix: time_prefix = time_prefix.group(0) else: time_prefix = "" if any(skip_phrase in line.lower() for skip_phrase in [ 'загрузка модели', 'ваш рост был изменен', '[афк+]', 'в афк', 'разместил новое объявление', 'временно забанил', 'забанил', 'был кикнут администратором', 'по причине', 'afk', 'аfk', ]): continue if re.fullmatch(r'\(\(.*\)\)', line): continue if '[CHAT]' in line: content = line.split('[CHAT]', 1)[-1].strip() if content.startswith('(('): continue if any(tag in content for tag in [ '[Чат фракции]', '[Faction Chat]', '[PM]', '[ЛС]', '[IC]', '[OOC]' ]): continue if any(tag in content for tag in ['[Объявление]', '[Заведение]', '[Земли]', '[Оповещение]']): continue if any(skip in content.lower() for skip in [ 'permission.group', 'фолиант знаний', 'добро пожаловать', '/ehelp', '/report', '/ask', '/mn', 'онлайн карту', 'гайды', 'награды', '/crafting', 'journeymap', 'нажми ◄', 'пермишен', 'ключи', 'игровое меню', 'сундуков', 'карту - map.', 'информации для новичков', 'доступ к важным системам', 'если живете и играете', 'пэй дэй', '§' ]): continue if not content.strip(): continue if content in previous_lines: continue chat_lines.append(f"{time_prefix} [CHAT] {content}\n") previous_lines.add(content) with open(output_file, 'w', encoding='utf-8') as outfile: outfile.writelines(chat_lines) print(f"\n✅ Очищенные логи успешно сохранены в файл: {output_file}") if __name__ == '__main__': try: input_file = input("Введите имя исходного файла (например, log.txt): ").strip() if not input_file.endswith('.txt'): input_file += '.txt' if not os.path.exists(input_file): print(f"❌ Ошибка: файл {input_file} не найден!") else: base_name = os.path.splitext(input_file)[0] output_file = f"{base_name}_Очищенные_логи.txt" extract_chat_lines(input_file, output_file) except Exception as e: print("❌ Ошибка:", e) input("\nНажмите Enter, чтобы выйти...")