# Source: https://gitee.com/jdqlscript/yyt/blob/master/%E7%94%B5%E4%BF%A1old/%E7%94%B5%E4%BF%A12/%E7%94%B5%E4%BF%A1%E9%87%91%E8%B1%86%E8%AF%9D%E8%B4%B9%E8%8E%B7%E5%8F%96%E6%9F%A5%E8%AF%A2.py
# Raw: https://gitee.com/jdqlscript/yyt/raw/master/%E7%94%B5%E4%BF%A1old/%E7%94%B5%E4%BF%A12/%E7%94%B5%E4%BF%A1%E9%87%91%E8%B1%86%E8%AF%9D%E8%B4%B9%E8%8E%B7%E5%8F%96%E6%9F%A5%E8%AF%A2.py
# Repo: jdqlscript/yyt
# Path: 电信old/电信2/电信金豆话费获取查询.py
# UploadedAt: 2025-07-19T22:58:22+08:00
# SHA256: 108adee7f631d1a668a42554330fde8cbcc867e3f2e415cde4f56f875e4d9094
# Category: APP版/抓包
# Evidence: APP/Android/iOS/device关键词

"""
cron: 00 20 * * *
new Env('电信金豆话费获取查询');
"""
"""
使用方法：
    啥也不用设置，调用的面板配置的推送
"""
import json
from collections import defaultdict
import sys
import os  # 导入os模块用于检查文件是否存在


# 控制变量，用于控制是否发送通知
enable_notification = 1  # 0 不发送     1发送通知

# 如果需要发送通知，则尝试导入notify模块
if enable_notification:
    try:
        from notify import send
    except ModuleNotFoundError:
        print("警告：未找到notify.py模块。程序将退出。")
        sys.exit(1)

# 定义日志文件路径
log_file_path = '电信金豆换话费.log'

# 检查日志文件是否存在
if not os.path.exists(log_file_path):
    print("垃圾都没中，还统计个锤子")
    sys.exit(0)

# 读取日志数据
def read_log_data(log_file_path):
    try:
        with open(log_file_path, 'r', encoding='utf-8') as file:
            log_data = json.load(file)
        return log_data
    except Exception as e:
        print(f"读取日志数据时发生错误: {e}")
        return None

# 格式化日志输出
def generate_log_output(log_data):
    log_lines = []
    
    # 遍历每个月的数据
    for month, fees in log_data.items():
        log_lines.append(f"--- {month} ---")  # 分割线，标识月份
        
        # 收集每个手机号获得的所有话费类型
        phone_to_fees = defaultdict(set)
        
        for fee_type, phones in fees.items():
            # 获取手机号列表
            phone_numbers = phones.strip('#').split('#') if phones else []
            
            # 格式化输出日志行
            if phone_numbers:
                log_line = f"{fee_type} : " + ", ".join(phone_numbers)
                for phone in phone_numbers:
                    phone_to_fees[phone].add(fee_type)  # 记录手机号对应的所有话费类型
            else:
                log_line = f"{fee_type} : 还没有中的哦"
            
            log_lines.append(log_line)
        
        # 添加每个月的手机号统计信息
        log_lines.append("统计信息：")
        for phone, fee_types in phone_to_fees.items():
            log_lines.append(f"{phone} 中了: {', '.join(fee_types)}")
        
        log_lines.append("")  # 每个月份后添加空行，分隔月份数据
    
    # 返回生成的日志内容
    return "\n".join(log_lines)

# 获取日志内容
def get_log_content():
    log_data = read_log_data(log_file_path)
    if log_data:
        log_content = generate_log_output(log_data)
        return log_content
    return None

# 调用函数获取日志内容
log_content = get_log_content()

# 如果获取到日志内容，则打印或者推送
if log_content:
    print(log_content)  # 在这里输出日志，您可以修改为推送日志的代码
    send('电信当月兑换统计', log_content)
