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()
Melhorando o tempo de boot do Fedora e outras distribuições
Como instalar as extensões Dash To Dock e Hide Top Bar no Gnome 45/46
E a guerra contra bots continua
Tradução do artigo do filósofo Gottfried Wilhelm Leibniz sobre o sistema binário
Conheça o firewall OpenGFW, uma implementação do (Great Firewall of China).
Instalando o FreeOffice no LMDE 6
Anki: Remover Tags de Estilo HTML de Todas as Cartas
Colocando uma opção de redimensionamento de imagem no menu de contexto do KDE
Não consigo acessar os modos de desempenho (6)
Debian Bookworm para a versão beta Debian 13 Trixie (4)
Reinstalei o Debian 12 e a particao /home foi formatada: recuperando s... (0)
[Shell Script] Script para desinstalar pacotes desnecessários no OpenSuse
[Shell Script] Script para criar certificados de forma automatizada no OpenVpn
[Shell Script] Conversor de vídeo com opção de legenda
[C/C++] BRT - Bulk Renaming Tool
[Shell Script] Criação de Usuarios , Grupo e instalação do servidor de arquivos samba