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()
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
Como renomear arquivos de letras maiúsculas para minúsculas
Imprimindo no formato livreto no Linux
Vim - incrementando números em substituição
Efeito "livro" em arquivos PDF
Como resolver o erro no CUPS: Unable to get list of printer drivers
Instalação Uefi com o instalador clássico do Mageia (1)
Vou voltar moderar conteúdos de Dicas e Artigos (0)
[Python] Automação de scan de vulnerabilidades
[Python] Script para analise de superficie de ataque
[Shell Script] Novo script para redimensionar, rotacionar, converter e espelhar arquivos de imagem
[Shell Script] Iniciador de DOOM (DSDA-DOOM, Doom Retro ou Woof!)
[Shell Script] Script para adicionar bordas às imagens de uma pasta