Enviado em 15/01/2022 - 13:10h
olá, estou com um problema no meu codigo, quando executo e digito o valor no input ele imprimi somente uma letra, e nao a frase toda,from re import I
from tkinter import *
import tkinter.messagebox
from threading import stack_size
from typing import Sized
from selenium import webdriver
from PySimpleGUI import PySimpleGUI as sg
import mysql.connector
from selenium.webdriver.common.keys import Keys
import time
import random
import datetime
#connecting to the database
connectiondb = mysql.connector.connect(host="robocomentario.mysql.dbaas.com.br",user="robocomentario",passwd="Gunbound@01",database="robocomentario")
cursordb = connectiondb.cursor()
def login():
global root2
root2 = Toplevel(root)
root2.title("Sistema de login Robo de comentarios Marvin")
root2.iconbitmap('robot.ico')
root2.geometry("450x300")
root2.config(bg="white")
global username_verification
global password_verification
Label(root2, text='Preencha suas credencias de login', bd=1,font=('arial', 12, 'bold'), relief="groove", fg="white",
bg="#9300ae",width=300).pack()
username_verification = StringVar()
password_verification = StringVar()
Label(root2, text="").pack()
Label(root2, text="Usuario :", font=('arial', 15, 'bold')).pack()
Entry(root2, textvariable=username_verification).pack()
Label(root2, text="").pack()
Label(root2, text="Senha :", fg="black", font=('arial', 15, 'bold')).pack()
Entry(root2, textvariable=password_verification, show="*").pack()
Label(root2, text="").pack()
Button(root2, text="Logar", bg="#9300ae", fg='white', relief="groove", font=('arial', 15, 'bold'),command=login_verification).pack()
Label(root2, text="")
def logged_destroy():
logged_message.destroy()
root2.destroy()
def failed_destroy():
failed_message.destroy()
def logged():
sg.theme('Reddit')
layout = [
[sg.Text('Bem vindo ao Robô Marvin automatico de comentários em sorteios do instagram ,por favor informe os dados abaixo para o programa iniciar os comentarios', size=(50,3))],
[sg.Text('Usuario:'),sg.Input(key='username', size=(40, 4))],
[sg.Text('Senha:'),sg.Input(key='password',password_char='*', size=(40,4))],
[sg.Text('Código do sorteio'),sg.Input(key='hashtag', size=(40,4))],
[sg.Text('Comentario'),sg.Input(key='comentario', size=(40,4))],
[sg.Button('Entrar', size=(50,3)),
]
]
#Janela
janela = sg.Window('Robô Marvin de Comentarios v0.13', layout, icon='robot.ico')
#ler os eventos
while True:
eventos, valores = janela.read()
if eventos == sg.WINDOW_CLOSED:
break
if eventos == 'Entrar':
if valores['username'] == '' or valores['password'] == '' or valores['hashtag'] == '' or valores['comentario'] == '' :
sg.Popup('Há campos vazios a serem preenchidos no formulário, tente novamente ', title='Atenção preencha todos os campos')
else:
jhonatanBot = InstagramBot(valores['username'], valores['password'], valores['hashtag'], valores['comentario'])
jhonatanBot.login()
def login_verification():
user_verification = username_verification.get()
pass_verification = password_verification.get()
sql = "select * from users where username = %s and email = %s"
cursordb.execute(sql,[(user_verification),(pass_verification)])
results = cursordb.fetchall()
if results:
for i in results:
logged()
return i
else:
failed()
class InstagramBot:
def __init__(self, username, password, hashtag_procurar, comentario):
self.username = username
self.password = password
self.hashtag_procurar = hashtag_procurar
self.comentario = comentario
firefoxProfile = webdriver.FirefoxProfile()
firefoxProfile.set_preference("intl.accept_languages", "pt,pt-BR")
firefoxProfile.set_preference("dom.webnotifications.enabled", False)
self.driver = webdriver.Firefox(
firefox_profile=firefoxProfile, executable_path=r"./geckodriver"
)
""" # Coloque o caminho para o seu geckodriver aqui, lembrando que você precisa instalar o firefox e geckodriver na versão mais atual """
# Link download do geckodriver: https://github.com/mozilla/geckodriver/releases
# Link download Firefox https://www.mozilla.org/pt-BR/firefox/new/
def login(self):
driver = self.driver
driver.get("https://www.instagram.com")
time.sleep(3)
user_element = driver.find_element_by_xpath(
"//input[@name='username']")
user_element.clear()
user_element.send_keys(self.username)
time.sleep(3)
password_element = driver.find_element_by_xpath(
"//input[@name='password']")
password_element.clear()
password_element.send_keys(self.password)
time.sleep(3)
password_element.send_keys(Keys.RETURN)
time.sleep(5)
self.comente_nas_fotos_com_a_hashtag(self.hashtag_procurar
) # Altere aqui para a hashtag que você deseja usar.
@staticmethod
def type_like_a_person(sentence, single_input_field):
""" Este código irá basicamente permitir que você simule a digitação como uma pessoa """
print("going to start typing message into message share text area")
for letter in sentence:
single_input_field.send_keys(letter)
time.sleep(random.randint(1, 5) / 30)
def comente_nas_fotos_com_a_hashtag(self, hashtag):
links_de_posts = []
driver = self.driver
driver.get("https://www.instagram.com/p/" + hashtag + "/")
time.sleep(5)
for i in range(
1, 3
): # Altere o segundo valor aqui para que ele desça a quantidade de páginas que você quiser: quer que ele desça 5 páginas então você deve alterar de range(1,3) para range(1,5)
driver.execute_script(
"window.scrollTo(0, document.body.scrollHeight);")
time.sleep(3)
hrefs = driver.find_elements_by_tag_name("a")
pic_hrefs = [elem.get_attribute("href") for elem in hrefs]
print(hashtag + " fotos: " + str(len(pic_hrefs)))
for link in pic_hrefs:
try:
if link.index("/p/") != -1:
links_de_posts.append(link)
except:
pass
for pic_href in links_de_posts:
driver.get(pic_href)
driver.execute_script(
"window.scrollTo(0, document.body.scrollHeight);")
try:
comentarios = ["Caramba! Tá top!🤖","Essa foto ficou demais viu!🤖", "Só fooootão🤖","Curti muito essa foto!🤖","Que fotão!!!!🤖","Tooooop!!!🤖","Eitaaaaaa que foto =D🤖"]
# Remova esses comentários e insira os seus comentários aqui
driver.find_element_by_class_name("Ypffh").click()
comment_input_box = driver.find_element_by_class_name("Ypffh")
time.sleep(random.randint(2, 5))
self.type_like_a_person(
random.choice(self.comentario), comment_input_box)
time.sleep(random.randint(2, 5))
driver.find_element_by_xpath(
"//button[contains(text(), 'Publicar')]"
).click()
time.sleep(random.randint(2, 5))
except Exception as e:
print(e)
time.sleep(5)
def failed():
global failed_message
failed_message = Toplevel(root2)
failed_message.title("Mensagem do sistema")
failed_message.geometry("500x100")
Label(failed_message, text="Usuario ou senha informada não conferem, tente novamente", fg="red", font="bold").pack()
Label(failed_message, text="").pack()
Button(failed_message,text="Ok", bg="blue", fg='white', relief="groove", font=('arial', 12, 'bold'), command=failed_destroy).pack()
#login pega dados do usuario
def Exit():
wayOut = tkinter.messagebox.askyesno("Sistema de Login Robo de comentarios Marvin", "Tem certeza que deseja sair ?")
if wayOut > 0:
root.destroy()
return
def main_display():
global root
root = Tk()
root.config(bg="white")
root.iconbitmap('robot.ico')
root.title("Sistema de Login Robo Marvin de comentarios 1.0")
root.geometry("500x500")
Label(root,text='Bem vindo ao robo de comentario Marvin', bd=10, font=('arial', 10, 'bold'), relief="groove", fg="white",
bg="#9300ae",width=300).pack()
Label(root,text="").pack()
Button(root,text='Entrar', height="1",width="20", bd=8, font=('arial', 12, 'bold'), relief="groove", fg="white",
bg="#9300ae",command=login).pack()
Label(root,text="").pack()
Button(root,text='Sair', height="1",width="20", bd=8, font=('arial', 12, 'bold'), relief="groove", fg="white",
bg="#9300ae",command=Exit).pack()
Label(root,text="").pack()
main_display()
mainloop()
Enviar mensagem ao usuário trabalhando com as opções do php.ini
Meu Fork do Plugin de Integração do CVS para o KDevelop
Compartilhando a tela do Computador no Celular via Deskreen
Como Configurar um Túnel SSH Reverso para Acessar Sua Máquina Local a Partir de uma Máquina Remota
Configuração para desligamento automatizado de Computadores em um Ambiente Comercial
Criando uma VPC na AWS via CLI
Multifuncional HP imprime mas não digitaliza
Dica básica para escrever um Artigo.
Como Exibir Imagens Aleatórias no Neofetch para Personalizar seu Terminal