import os
import requests
import argparse
from selenium import webdriver
from selenium.webdriver.common.by import By
from urllib.parse import urlparse

# Initialize argument parser to accept the website URL as an argument
parser = argparse.ArgumentParser(description='Download images from a comic website.')
parser.add_argument('url', type=str, help='The URL of the website to start downloading images from')
args = parser.parse_args()

# Initialize WebDriver (Use the appropriate driver for your browser)
driver = webdriver.Chrome()

# Open the website from the passed argument
url = args.url
print(f"Opening the website: {url}")
driver.get(url)

# A function to download images by URL
def download_image(url):
    # Extract image name from URL
    image_name = os.path.basename(urlparse(url).path)
    
    # Check if the image already exists
    if os.path.exists(image_name):
        print(f"Image {image_name} already exists, skipping download.")
        return False
    else:
        print(f"Downloading image from URL: {url}")
        img_data = requests.get(url).content
        with open(image_name, 'wb') as handler:
            handler.write(img_data)
        print(f'Image {image_name} downloaded successfully')
        return True

# No need to define a specific number of images now
count = 1

while True:
    print(f"Processing image {count}...")

    # Find the image element by its ID
    image_element = driver.find_element(By.ID, 'cc-comic')
    
    # Get the image URL from the 'src' attribute
    image_url = image_element.get_attribute('src')
    print(f"Found image URL: {image_url}")

    # Download the image if it doesn't already exist
    if download_image(image_url):
        count += 1  # Increment count only if the image was downloaded

    # Try to find the 'Next' button by its class
    try:
        print(f"Clicking the 'Next' button to load the next image...")
        next_button = driver.find_element(By.CSS_SELECTOR, 'a.cc-next')

        # Navigate to the URL in the 'href' of the next button
        next_button_url = next_button.get_attribute('href')
        driver.get(next_button_url)

    except:
        # If the 'Next' button is not found, it means we've reached the last image
        print("No 'Next' button found. Reached the end of images.")
        break

# Close the browser
print("All images processed, closing the browser.")
driver.quit()
