[Python] Python Selenium: Automating Pinterest - Organizing Pins Without Folders

Discussão em 'Python' iniciado por Stack, Março 24, 2025.

  1. Stack

    Stack Membro Participativo

    I tried to use this script to get the pins that are not in a folder on my Pinterest profile and put them in a folder, because there are SO MANY. But it doesn't find the buttons and it's causing other problems.
    The code was written by AI because I just want to solve this problem.

    from selenium import webdriver
    from selenium.webdriver.common.by import By
    from selenium.webdriver.common.keys import Keys
    from selenium.webdriver.support.ui import WebDriverWait
    from selenium.webdriver.support import expected_conditions as EC
    import time

    # Configuração do WebDriver
    chrome_options = webdriver.ChromeOptions()
    chrome_options.add_argument("--start-maximized") # Maximizar a janela do navegador
    driver = webdriver.Chrome(options=chrome_options)

    # Seu login do Pinterest (defina as variáveis diretamente aqui)
    EMAIL = "email" # Substitua pelo seu e-mail
    SENHA = "senha" # Substitua pela sua senha
    USUARIO = "user # Substitua pelo seu nome de usuário no Pinterest
    PASTA_DESTINO = "pastaa" # Nome da pasta de destino para onde os pins serão movidos

    def login_pinterest():
    """Faz login no Pinterest"""
    driver.get("https://www.pinterest.com/login/")
    time.sleep(3) # Espera o tempo necessário para carregar a página

    # Preenche os campos de login
    email_input = driver.find_element(By.NAME, "id")
    senha_input = driver.find_element(By.NAME, "password")

    email_input.send_keys(EMAIL)
    senha_input.send_keys(SENHA)
    senha_input.send_keys(Keys.RETURN)

    time.sleep(5) # Aguarde o login ser processado

    def organizar_pins():
    """Organiza os pins que estão sem pasta para a pasta 'Organizar'"""
    driver.get(f"https://www.pinterest.com/{USUARIO}/") # Acessa a página de pins salvos
    time.sleep(5) # Aguarda o carregamento dos pins

    print(" Aguardando você clicar no botão 'Organizar'...")

    # Espera até que você tenha clicado no botão 'Organizar' manualmente
    while True:
    try:
    # Verifica se a tela de organização foi aberta
    organizar_btn = driver.find_element(By.XPATH, "//button[contains(text(), 'Avançar')]")
    print(" Tela de organização detectada! Continuando o processo...")
    break # Se o botão 'Avançar' aparecer, o processo continua
    except Exception as e:
    # Continua esperando até que o botão de 'Avançar' apareça
    time.sleep(1)

    # Aguardar os pins sem pasta carregarem
    time.sleep(3) # Aguarda mais um tempo caso necessário para carregar os pins

    # Encontrar todos os pins na página
    pins = driver.find_elements(By.XPATH, "//div[@data-test-id='pin']")
    print(f" Encontrados {len(pins)} pins para organizar!")

    for pin in pins:
    try:
    # Verifica se o pin está sem pasta
    if not pin.find_elements(By.XPATH, ".//div[contains(@aria-label, 'Em uma pasta')]"):
    pin.click() # Clica no pin
    print(" Pin clicado!")
    time.sleep(2) # Espera entre cliques
    else:
    print(" Pin já está em uma pasta. Pulando...")

    except Exception as e:
    print(f"⚠️ Erro ao clicar em um pin: {e}")
    continue

    # Depois de todos os pins clicados, tenta clicar em "Avançar"
    try:
    # Aguardar até o botão "Avançar" estar disponível
    avançar_btn = WebDriverWait(driver, 20).until(
    EC.element_to_be_clickable((By.XPATH, "//button[contains(text(), 'Avançar')]"))
    )
    avançar_btn.click()
    print(" Clicado no botão 'Avançar'!")
    except Exception as e:
    print(f"⚠️ Erro ao clicar no botão 'Avançar': {e}")

    time.sleep(2) # Espera o carregamento da tela de seleção de pasta

    # Seleciona a pasta "Organizar"
    try:
    destino_pasta = driver.find_element(By.XPATH, f"//div[contains(text(), '{PASTA_DESTINO}')]")
    destino_pasta.click()
    print(f" Pasta '{PASTA_DESTINO}' selecionada!")
    except Exception as e:
    print(f"⚠️ Erro ao selecionar a pasta: {e}")

    # Clica no botão 'Salvar'
    try:
    salvar_btn = driver.find_element(By.XPATH, "//button[contains(text(), 'Salvar')]")
    salvar_btn.click()
    print("✅ Pins movidos para a pasta 'Organizar'!")
    except Exception as e:
    print(f"⚠️ Erro ao clicar no botão 'Salvar': {e}")

    # Executa o processo
    login_pinterest()
    organizar_pins()

    # Fecha o navegador
    driver.quit()

    Continue reading...

Compartilhe esta Página