Como pegar o valor digitado no input e usar ele em outra parte do codigo

1. Como pegar o valor digitado no input e usar ele em outra parte do codigo

gabriel de freitas
gabrielfreitas

(usa Debian)

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,
a variavel sel.comentario, está com o valor digitado no input, só que quando o codigo vai pegar os valores so me retorna valores aleatorios e so retorna uma letra
a linha que esta com problema é a seguinte:
random.choice(self.comentario), comment_input_box)
onde self.comentario é o valor digitado no input, quem puder me ajudar eu agradeço:

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()



  


2. Re: Como pegar o valor digitado no input e usar ele em outra parte do codigo

Jhevi
Jhevison

(usa Arch Linux)

Enviado em 31/01/2022 - 03:15h


Bom, respondendo ao título. Você poderia criar uma variável global, assim outras funções (ou outras partes do código), teriam acesso ao valor da variável global.






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts