# 导入日志模块，用于记录通知过程中的信息和错误
import logging

# 导入requests库，用于发送HTTP请求（向搜索引擎提交链接）
import requests
# 导入Django项目配置，用于获取百度链接提交的URL（在settings.py中配置）
from django.conf import settings

# 创建当前模块的日志记录器，用于输出通知相关的日志
logger = logging.getLogger(__name__)


class SpiderNotify():
    """
    搜索引擎爬虫通知类：用于向搜索引擎（当前仅百度）提交网站新链接
    帮助搜索引擎快速发现并收录网站新增或更新的页面，提升SEO效果
    """

    @staticmethod
    def baidu_notify(urls):
        """
        向百度搜索引擎提交链接的静态方法
        通过百度链接提交API（BAIDU_NOTIFY_URL），将新页面URL推送给百度爬虫

        Args:
            urls (list): 需要提交的URL列表（每个元素为一个页面的完整URL或相对URL）
        """
        try:
            # 将URL列表转换为以换行符分隔的字符串，符合百度API的提交格式要求
            data = '\n'.join(urls)
            # 发送POST请求到百度链接提交URL，提交URL数据
            result = requests.post(settings.BAIDU_NOTIFY_URL, data=data)
            # 记录百度返回的响应结果（成功时包含提交状态，用于调试和审计）
            logger.info(result.text)
        except Exception as e:
            # 捕获请求过程中的所有异常（如网络错误、API地址错误等），记录错误日志
            logger.error(e)

    @staticmethod
    def notify(url):
        """
        通用通知入口静态方法：统一调用百度链接提交方法
        此处为简化设计，后续可扩展支持其他搜索引擎（如谷歌、必应）

        Args:
            url (str/list): 单个URL字符串或URL列表（最终会转为列表提交给百度）
        """
        # 调用百度链接提交方法，实现URL推送
        SpiderNotify.baidu_notify(url)