# -*- coding: utf-8 -*-
import sys
import requests
import re
import os
import time
import json
from datetime import datetime
from bs4 import BeautifulSoup
from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from webdriver_manager.chrome import ChromeDriverManager

BASE_PATH = ""

def check_dependencies():
    try:
        import requests, bs4, selenium, webdriver_manager
    except ImportError as e:
        print(f"缺少依赖库：{e}，请使用 pip install requests beautifulsoup4 selenium webdriver-manager 安装。")
        sys.exit(1)

def create_directory(directory):
    if not os.path.exists(directory):
        os.makedirs(directory)

def main():
    check_dependencies()
    global BASE_PATH
    BASE_PATH = "./file/result/file_" + str(int(round(time.time() * 1000)))
    create_directory("./file/result/")
    while True:
        r = get_dy_video()
        if r == 0:
            break
# 在download_media函数中，添加更加友好的进度条显示。
def download_media(url, save_path):
    try:
        print(f"\n开始下载: {url[:60]}...")
        headers = {
            "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36",
            "Referer": "https://www.douyin.com/"
        }
        response = requests.get(url, headers=headers, stream=True, timeout=30)

        if response.status_code != 200:
            print(f"下载失败，状态码: {response.status_code}")
            return False

        total_size = int(response.headers.get('content-length', 0))
        print(f"文件大小: {total_size // 1024} KB")

        with open(save_path, "wb") as f:
            downloaded = 0
            start = time.time()
            for chunk in response.iter_content(chunk_size=1024 * 1024):
                if chunk:
                    f.write(chunk)
                    downloaded += len(chunk)
                    speed = downloaded / (time.time() - start) / 1024
                    progress = int(50 * downloaded / total_size)
                    print(f"\r进度: [{'=' * progress}{' ' * (50 - progress)}] {downloaded // 1024}KB/{total_size // 1024}KB [{speed:.1f}KB/s]", end="")
            print()
        return True
    except Exception as e:
        print(f"\n下载错误: {str(e)}")
        return False

if __name__ == "__main__":
    main()