# cSpell:ignore momo
"""
一次性執行爬蟲腳本
用於手動觸發商品資料和圖片的更新
"""
import os
import sys
import logging

# 設定路徑
BASE_DIR = os.path.dirname(os.path.abspath(__file__))
sys.path.insert(0, BASE_DIR)

# 設定日誌
logging.basicConfig(
    level=logging.INFO,
    format='%(asctime)s [%(levelname)s] %(message)s',
    handlers=[
        logging.StreamHandler(sys.stdout)
    ]
)

from scheduler import run_momo_task, run_edm_task, run_festival_task

def main():
    """執行所有爬蟲任務"""
    print("=" * 80)
    print("🚀 開始執行完整爬蟲任務")
    print("=" * 80)
    print()

    try:
        # 1. 一般商品爬蟲
        print("📦 [1/3] 執行一般商品爬蟲...")
        print("-" * 80)
        run_momo_task()
        print()
        print("✅ 一般商品爬蟲完成")
        print()

        # 2. EDM 促銷商品爬蟲
        print("🎁 [2/3] 執行 EDM 促銷商品爬蟲...")
        print("-" * 80)
        run_edm_task()
        print()
        print("✅ EDM 促銷商品爬蟲完成")
        print()

        # 3. Festival 購物節商品爬蟲
        print("🎉 [3/3] 執行購物節商品爬蟲...")
        print("-" * 80)
        run_festival_task()
        print()
        print("✅ 購物節商品爬蟲完成")
        print()

        print("=" * 80)
        print("🎉 所有爬蟲任務執行完成！")
        print("=" * 80)

    except KeyboardInterrupt:
        print("\n\n⚠️ 使用者中斷執行")
        print("=" * 80)
        sys.exit(1)
    except Exception as e:
        print(f"\n\n❌ 執行過程發生錯誤: {e}")
        import traceback
        traceback.print_exc()
        print("=" * 80)
        sys.exit(1)

if __name__ == "__main__":
    main()
