(Добавь функционал данному коду в отдельный файл с количеством сообщений каждого пользователя.)

# -*- coding: utf-8 -*-

import json
import os

def clean_messages(input_file_path, output_file_path):
    # Проверяем, существует ли входной файл
    if not os.path.exists(input_file_path):
        print(f"Входной файл '{input_file_path}' не найден.")
        return

    try:
        # Открываем и загружаем исходный JSON-файл
        with open(input_file_path, 'r', encoding='utf-8') as infile:
            data = json.load(infile)
    except json.JSONDecodeError as e:
        print(f"Ошибка декодирования JSON: {e}")
        return

    cleaned_messages = []

    # Проходим по всем сообщениям
    for message in data.get('messages', []):
        # Создаем словарь с необходимыми полями
        cleaned_message = {
            'id': message.get('id'),
            'date': message.get('date'),
            'from': message.get('from'),
            'text': ''
        }

        # Обрабатываем поле 'text', объединяя все текстовые элементы
        text_content = message.get('text', '')
        cleaned_message['text'] = extract_text(text_content)

        # Добавляем очищенное сообщение в список
        cleaned_messages.append(cleaned_message)

    # Сохраняем очищенные данные в новый файл
    try:
        with open(output_file_path, 'w', encoding='utf-8') as outfile:
            json.dump({'messages': cleaned_messages}, outfile, ensure_ascii=False, indent=2)
        print(f"Очищенные данные успешно сохранены в '{output_file_path}'.")
    except Exception as e:
        print(f"Ошибка при сохранении файла: {e}")

def extract_text(text_content):
    """
   ( Извлекает текст из поля 'text', которое может быть строкой, списком или словарем.)
    # -*- coding: utf-8 -*-

import json
import os

def clean_messages(input_file_path, output_file_path):
    # Проверяем, существует ли входной файл
    if not os.path.exists(input_file_path):
        print(f"Входной файл '{input_file_path}' не найден.")
        return

    try:
        # Открываем и загружаем исходный JSON-файл
        with open(input_file_path, 'r', encoding='utf-8') as infile:
            data = json.load(infile)
    except json.JSONDecodeError as e:
        print(f"Ошибка декодирования JSON: {e}")
        return

    cleaned_messages = []

    # Проходим по всем сообщениям
    for message in data.get('messages', []):
        # Создаем словарь с необходимыми полями
        cleaned_message = {
            'id': message.get('id'),
            'date': message.get('date'),
            'from': message.get('from'),
            'text': ''
        }

        # Обрабатываем поле 'text', объединяя все текстовые элементы
        text_content = message.get('text', '')
        cleaned_message['text'] = extract_text(text_content)

        # Добавляем очищенное сообщение в список
        cleaned_messages.append(cleaned_message)

    # Сохраняем очищенные данные в новый файл
    try:
        with open(output_file_path, 'w', encoding='utf-8') as outfile:
            json.dump({'messages': cleaned_messages}, outfile, ensure_ascii=False, indent=2)
        print(f"Очищенные данные успешно сохранены в '{output_file_path}'.")
    except Exception as e:
        print(f"Ошибка при сохранении файла: {e}")

def extract_text(text_content):
    """
    Извлекает текст из поля 'text', которое может быть строкой, списком или словарем.
    """
    if isinstance(text_content, str):
        return text_content
    elif isinstance(text_content, list):
        text_parts = []
        for item in text_content:
            if isinstance(item, str):
                text_parts.append(item)
            elif isinstance(item, dict) and 'text' in item:
                text_parts.append(item['text'])
        return ''.join(text_parts)
    elif isinstance(text_content, dict) and 'text' in text_content:
        return text_content['text']
    else:
        return ''

if __name__ == "__main__":
    input_file = r"C:\Users\Admin\Downloads\AyuGram Desktop\ChatExport_2024-09-22 (3)\result.json"
    output_file = r'C:\Users\Admin\Downloads\AyuGram Desktop\ChatExport_2024-09-22\cleaned_result.json'
    clean_messages(input_file, output_file)