Jump to content

Erro salvamento de foto com mesmo nome de arquivo


Thuany.pk

Postagens Recomendadas

Boa tarde!

Estou iniciando na linguagem python e já tenho um problema com meu código...

Minha ideia é criar uma automatização para salvar minhas fotos do facebook em uma pasta no meu computador, pois tive que fazer isso por conta outro dia e demorou muito.

O erro é o seguinte: sempre que passa da 4ª foto, ao invés de salvar a 5ª foto como número 5, ele tenta salvar novamente como número 4. Como posso resolver isso? ChatGPT e Copilot tentaram de algumas formas, mas nenhuma funcionou. 😋

O código está assim, depois de tentar concertar o erro algumas vezes:

 

import pyautogui

import time

import keyboard

pyautogui.PAUSE = 0.2

 

def check_for_b():

    return keyboard.is_pressed('b')

 

time.sleep(4)

 

numero_foto = 1

 

while True:

   

    pyautogui.rightClick(x=718, y=499)

    pyautogui.click(x=845, y=559)

    pyautogui.click(x=112, y=328)

    pyautogui.doubleClick(x=706, y=223)

    pyautogui.click(x=579, y=466)

    pyautogui.write(f"foto_{numero_foto}")

    pyautogui.press("enter")

    pyautogui.click(x=751, y=556)

    pyautogui.press("right")

 

    if not check_for_b():

        numero_foto += 1

    else:

        break

Captura de tela 2024-05-13 150203.png

Captura de tela 2024-05-13 150253.png

Editado por Thuany.pk
adicionar fotos para melhor entendimento do tópico
  • Curtir 1
Link to comment
Compartilhe em outros sites

Boa tarde, 

A questão parece estar relacionada à lógica dentro do seu loop `while`. O incremento de `numero_foto` pode não estar sendo realizado como esperado devido ao uso da função `check_for_b()`.

Primeiro, vamos simplificar o código e verificar se o problema persiste. Sugiro adicionar uma verificação de `numero_foto` fora do bloco condicional para garantir que ele seja incrementado corretamente. Aqui está uma versão ajustada do seu código:

import pyautogui
import time
import keyboard

pyautogui.PAUSE = 0.2

def check_for_b():
    return keyboard.is_pressed('b')

time.sleep(4)

numero_foto = 1

while True:
    pyautogui.rightClick(x=718, y=499)
    pyautogui.click(x=845, y=559)
    pyautogui.click(x=112, y=328)
    pyautogui.doubleClick(x=706, y=223)
    pyautogui.click(x=579, y=466)
    pyautogui.write(f"foto_{numero_foto}")
    pyautogui.press("enter")
    pyautogui.click(x=751, y=556)
    pyautogui.press("right")

    if check_for_b():
        break
    
    numero_foto += 1

Essa alteração garante que o incremento de `numero_foto` seja sempre realizado, a menos que a tecla 'b' seja pressionada. Vamos revisar o código:

1. Verificação da Tecla 'b': O incremento de `numero_foto` foi movido para fora do bloco `if not check_for_b()`, garantindo que o número seja sempre incrementado após cada iteração do loop, exceto quando a tecla 'b' é pressionada.
2. Estrutura do Loop: A estrutura do loop foi ajustada para clareza, garantindo que o loop seja interrompido corretamente quando a tecla 'b' é pressionada.

Tente rodar essa versão e veja se o problema persiste. Caso o problema continue, pode ser necessário revisar outras partes do código ou a lógica da automação. Se houver mais detalhes sobre a execução ou erros específicos, por favor, compartilhe para que possamos ajudar melhor.

Se precisar de mais alguma coisa, estou à disposição!

Editado por Jeremias Dev
  • Curtir 1
Link to comment
Compartilhe em outros sites

57 minutos atrás, Jeremias Dev disse:

Boa tarde, 

A questão parece estar relacionada à lógica dentro do seu loop `while`. O incremento de `numero_foto` pode não estar sendo realizado como esperado devido ao uso da função `check_for_b()`.

Primeiro, vamos simplificar o código e verificar se o problema persiste. Sugiro adicionar uma verificação de `numero_foto` fora do bloco condicional para garantir que ele seja incrementado corretamente. Aqui está uma versão ajustada do seu código:

import pyautogui
import time
import keyboard

pyautogui.PAUSE = 0.2

def check_for_b():
    return keyboard.is_pressed('b')

time.sleep(4)

numero_foto = 1

while True:
    pyautogui.rightClick(x=718, y=499)
    pyautogui.click(x=845, y=559)
    pyautogui.click(x=112, y=328)
    pyautogui.doubleClick(x=706, y=223)
    pyautogui.click(x=579, y=466)
    pyautogui.write(f"foto_{numero_foto}")
    pyautogui.press("enter")
    pyautogui.click(x=751, y=556)
    pyautogui.press("right")

    if check_for_b():
        break
    
    numero_foto += 1

Essa alteração garante que o incremento de `numero_foto` seja sempre realizado, a menos que a tecla 'b' seja pressionada. Vamos revisar o código:

1. Verificação da Tecla 'b': O incremento de `numero_foto` foi movido para fora do bloco `if not check_for_b()`, garantindo que o número seja sempre incrementado após cada iteração do loop, exceto quando a tecla 'b' é pressionada.
2. Estrutura do Loop: A estrutura do loop foi ajustada para clareza, garantindo que o loop seja interrompido corretamente quando a tecla 'b' é pressionada.

Tente rodar essa versão e veja se o problema persiste. Caso o problema continue, pode ser necessário revisar outras partes do código ou a lógica da automação. Se houver mais detalhes sobre a execução ou erros específicos, por favor, compartilhe para que possamos ajudar melhor.

Se precisar de mais alguma coisa, estou à disposição!

Boa tarde, Jeremias.

Respostas copiadas de ChatGPT e Copilot não me ajudam, como eu disse no post. Este código não funciona, já havia testado alguns códigos que essas duas ias me enviaram.

 

Agradeço a tentativa.

  • Curtir 1
Link to comment
Compartilhe em outros sites

Olá @Thuany.pk, Jeremias é um bot que estou testando aqui pra auxiliar o pessoal do forum com programação, especialmente iniciantes. No seu codigo aparentemente você está tendo problemas com a função check_for_b, tente testar ela isoladamente para ver se a ferramenta pyautogui está funcionando adequadamente no seu cenário. Outra alternativa seria utilizar selenium para esse mesmo objetivo.

  • Curtir 1
Link to comment
Compartilhe em outros sites

Crie uma conta ou entre para comentar 😀

Você precisa ser um membro para deixar um comentário.

Crie a sua conta

Participe da nossa comunidade, crie sua conta.
É bem rápido!

Criar minha conta agora

Entrar

Você já tem uma conta?
Faça o login agora.

Entrar agora


×
×
  • Create New...