import os
import time
import requests
from urllib.parse import urljoin
from playwright.sync_api import sync_playwright

BASE_URL = "https://icons8.com/icons/set/business--style-fluency-systems-filled"  # שנה לכתובת המדויקת שלך
OUTPUT_DIR = "downloaded_icons"

if not os.path.exists(OUTPUT_DIR):
    os.makedirs(OUTPUT_DIR)

def download_file(url, folder_path, filename):
    try:

        headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64)'}
        response = requests.get(url, headers=headers, timeout=10)
        if response.status_code == 200:
            filepath = os.path.join(folder_path, filename)
            with open(filepath, 'wb') as f:
                f.write(response.content)
            return True
    except Exception as e:
        print(f"  [-] שגיאה בהורדת {url}: {e}")
    return False

def run():
    with sync_playwright() as p:
        browser = p.chromium.launch(headless=False)
        context = browser.new_context(viewport={'width': 1280, 'height': 800})
        page = context.new_page()

        print(f"[+] טוען את הדף: {BASE_URL}")
        page.goto(BASE_URL, wait_until="networkidle")

        tab_selector = ".pack-list__item a" 
        tabs = page.query_selector_all(tab_selector)
        
        print(f"[+] נמצאו {len(tabs)} כרטיסיות.")

        for index in range(len(tabs)):
            tabs = page.query_selector_all(tab_selector)
            current_tab = tabs[index]
            
            tab_name = current_tab.inner_text().strip().replace("/", "_").replace("\\", "_")
            if not tab_name:
                tab_name = f"category_{index + 1}"
                
            print(f"\n[==] מתחיל לעבד כרטיסייה {index + 1}/{len(tabs)}: '{tab_name}'")
            
            category_dir = os.path.join(OUTPUT_DIR, tab_name)
            os.makedirs(category_dir, exist_ok=True)

            target_href = current_tab.get_attribute("href")
            if target_href:
                full_tab_url = urljoin(BASE_URL, target_href)
                page.goto(full_tab_url, wait_until="networkidle")
            else:
                current_tab.click()
                time.sleep(2)

            print("  [*] גולל לטעינת כל התמונות...")
            last_height = 0
            for _ in range(10):
                page.evaluate("window.scrollTo(0, document.body.scrollHeight);")
                time.sleep(1.5)
                new_height = page.evaluate("document.body.scrollHeight")
                if new_height == last_height:
                    break
                last_height = new_height

            img_elements = page.query_selector_all("img")
            image_urls = set()

            for img in img_elements:
                src = img.get_attribute("src") or img.get_attribute("data-src")
                if src and ("icon" in src or "assets" in src or "png" in src or "svg" in src):
                    full_url = urljoin(page.url, src)
                    image_urls.add(full_url)

            print(f"  [*] נמצאו {len(image_urls)} אייקונים להורדה בקטגוריה זו.")

            success_count = 0
            for img_idx, img_url in enumerate(image_urls):
                raw_filename = img_url.split('/')[-1].split('?')[0]
                if not raw_filename.endswith(('.png', '.svg', '.jpg')):
                    raw_filename += ".png"
                
                filename = f"{img_idx + 1:03d}_{raw_filename}"
                if download_file(img_url, category_dir, filename):
                    success_count += 1
                
                time.sleep(0.05)

            print(f"  [v] הורדו בהצלחה {success_count} קבצים לתיקייה '{category_dir}'.")

        print("\n[V] הסקריפט סיים את כל הכרטיסיות!")
        browser.close()
if __name__ == "__main__":
    run()