import requests
from bs4 import BeautifulSoup
import time

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"
}

movies = []

for start in range(0, 250, 25):
    url = f"https://movie.douban.com/top250?start={start}"
    res = requests.get(url, headers=headers)
    soup = BeautifulSoup(res.text, "html.parser")
    items = soup.find_all("div", class_="item")

    for item in items:
        rank = item.find("em").text
        title = item.find("span", class_="title").text
        rating = item.find("span", class_="rating_num").text
        people = item.find("div", class_="star").find_all("span")[-1].text.replace("", "")
        quote = item.find("span", class_="inq").text if item.find("span", class_="inq") else ""
        info = item.find("p", class_="").text.strip().split("\n")
        line1 = info[0].strip()
        line2 = info[1].strip() if len(info) > 1 else ""

        director = line1.split(": ")[1].split(": ")[0].strip() if ": " in line1 else "δ֪"
        actor = line1.split(": ")[1].strip() if ": " in line1 else "δ֪"
        parts = line2.split("/") if line2 else []
        year = parts[0].strip() if len(parts) >= 1 else "δ֪"
        area = parts[1].strip() if len(parts) >= 2 else "δ֪"
        genre = parts[2].strip() if len(parts) >= 3 else "δ֪"

        movies.append({
            "": rank, "Ӱ": title, "": rating, "": people, "̨": quote,
            "": director, "": actor, "": year, "": area, "": genre
        })

    time.sleep(1)
    print(f"ȡ {start + 25} ")

with open("douban_top250.txt", "w", encoding="utf-8") as f:
    for m in movies:
        f.write(f"{m['']}{m['Ӱ']}\n")
        f.write(f"֣{m['']}  {m['']}\n")
        f.write(f"ݣ{m['']}  ݣ{m['']}\n")
        f.write(f"ݣ{m['']}  {m['']}  ͣ{m['']}\n")
        f.write(f"̨ʣ{m['̨']}\n\n")

print("? TXT ")