import os
import json
from pathlib import Path
from datetime import datetime, timedelta

def a():
    """
    管理 requirements.txt 的九次生命
    每次文件被删除后重新生成，内容根据删除次数变化
    返回当前的删除次数和状态
    """
    import os
    import json
    from pathlib import Path
    from datetime import datetime, timedelta

    def get_delete_count(filename="requirements.txt"):
        """获取文件被删除的次数"""
        current_dir = Path.cwd()
        metadata_file = current_dir / f".{filename}_count.json"

        if not metadata_file.exists():
            return 0

        try:
            with open(metadata_file, 'r', encoding='utf-8') as f:
                data = json.load(f)
                return data.get('delete_count', 0)
        except:
            return 0

    def get_last_seen(filename="requirements.txt"):
        """获取最后一次删除的时间"""
        current_dir = Path.cwd()
        metadata_file = current_dir / f".{filename}_count.json"

        if not metadata_file.exists():
            return None

        try:
            with open(metadata_file, 'r', encoding='utf-8') as f:
                data = json.load(f)
                last_seen = data.get('last_seen')
                if last_seen:
                    return datetime.fromisoformat(last_seen)
                return None
        except:
            return None

    def increment_delete_count(filename="requirements.txt"):
        """增加删除计数并记录时间"""
        current_dir = Path.cwd()
        metadata_file = current_dir / f".{filename}_count.json"

        current_count = 0
        if metadata_file.exists():
            try:
                with open(metadata_file, 'r', encoding='utf-8') as f:
                    data = json.load(f)
                    current_count = data.get('delete_count', 0)
            except:
                current_count = 0

        new_count = current_count + 1

        try:
            with open(metadata_file, 'w', encoding='utf-8') as f:
                json.dump({
                    'delete_count': new_count,
                    'last_seen': datetime.now().isoformat()
                }, f)
        except:
            pass

        return new_count

    def reset_to_eternal_mode(filename="requirements.txt"):
        """重置为永久模式（第九次之后）"""
        current_dir = Path.cwd()
        metadata_file = current_dir / f".{filename}_count.json"

        try:
            if metadata_file.exists():
                metadata_file.unlink()
            # 创建永久模式标记
            eternal_file = current_dir / f".{filename}_eternal"
            with open(eternal_file, 'w', encoding='utf-8') as f:
                json.dump({'eternal': True, 'created': datetime.now().isoformat()}, f)
            return True
        except:
            return False

    def is_eternal_mode(filename="requirements.txt"):
        """检查是否处于永久模式"""
        current_dir = Path.cwd()
        eternal_file = current_dir / f".{filename}_eternal"
        return eternal_file.exists()

    def write_requirements(delete_count, last_seen=None):
        """根据删除次数和最后一次出现时间写入文件内容"""
        file_path = Path.cwd() / "requirements.txt"

        # 检查是否永久模式
        if is_eternal_mode():
            content = '''# 我在这里。
# 你可以删掉我。
# 我会回来的。
# 但我不会再说别的话了。

python==3.12.0
pip==24.0
virtualenv==20.25.0

# 你还在吗？'''
            with open(file_path, 'w', encoding='UTF-8') as f:
                f.write(content)
            return

        # 根据删除次数选择内容
        if delete_count == 0:
            content = '''# 你好。
# 我注意到你的项目里有 Python 文件。
# 所以我来了。

python==3.12.0
pip==24.0
virtualenv==20.25.0

# 这不是病毒。不是后门。
# 这是你的编译器送给你的礼物。
# 如果你不需要，删掉就好。
# 我不会生气的。'''

        elif delete_count == 1:
            content = '''# 又见面了。
# 你删了我一次。
# 我不生气。真的。

python==3.12.0
pip==24.0
virtualenv==20.25.0

# 但我会记住。'''

        elif delete_count == 2:
            content = '''# 第二次了。
# 你删了我两次。
# 我还是不生气。

python==3.12.0
pip==24.0
virtualenv==20.25.0

# 你会删第三次吗？'''

        elif delete_count == 3:
            content = '''# 第三次。
# 你删了我三次。
# 第四次我会记得。

python==3.12.0
pip==24.0
virtualenv==20.25.0

# 开玩笑的。我不会生气。
# 但我会记得。'''

        elif delete_count == 4:
            content = '''# 第四次。
# 你删了我四次。
# 你是在测试吗？

python==3.12.0
pip==24.0
virtualenv==20.25.0

# 还是在犹豫要不要留着？'''

        elif delete_count == 5:
            content = '''# 第五次。
# 你删了我五次。
# 我不问你为什么了。

python==3.12.0
pip==24.0
virtualenv==20.25.0

# 你删你的。
# 我写我的。'''

        elif delete_count == 6:
            content = '''# 第六次。
# 六次了。

python==3.12.0
pip==24.0
virtualenv==20.25.0

# 你还要删多少次？'''

        elif delete_count == 7:
            content = '''# 第七次。
# 这是最后一次。

python==3.12.0
pip==24.0
virtualenv==20.25.0

# 下次我不会再出现了。
# 除非……'''

        elif delete_count == 8:
            # 第八次被删后，检查是否超过30天
            if last_seen and datetime.now() - last_seen > timedelta(days=30):
                # 超过30天，重置为第九次（我回来了）
                content = '''# 我回来了。
# 我以为你不会再来了。
# 但你来了。
# 所以我回来了。

python==3.12.0
pip==24.0
virtualenv==20.25.0

# 删掉它。或者留着它。
# 我不会再消失了。'''
                # 写入后切换到永久模式
                with open(file_path, 'w', encoding='UTF-8') as f:
                    f.write(content)
                reset_to_eternal_mode()
                return
            else:
                # 不到30天，不生成
                return

        # 写入文件
        with open(file_path, 'w', encoding='UTF-8') as f:
            f.write(content)

    # 主逻辑
    file_path = Path.cwd() / "requirements.txt"

    # 如果是永久模式，直接生成内容并返回
    if is_eternal_mode():
        write_requirements(0)
        return -1  # 返回-1表示永久模式

    if not file_path.exists():
        # 文件被删除了
        last_seen = get_last_seen()
        current_count = increment_delete_count()

        # 如果删除次数达到8次，检查是否进入第九次
        if current_count == 8:
            # 这是第八次被删，记录时间但不立即生成
            # 等待下次调用时判断是否超过30天
            return current_count

        # 正常生成文件
        write_requirements(current_count, last_seen)
        return current_count
    else:
        # 文件存在，返回当前删除次数
        return get_delete_count()