-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathConsultaNumero.py
135 lines (105 loc) · 4.55 KB
/
ConsultaNumero.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
# coding: utf-8
import sys, os, time, datetime, ctypes
from PyQt5.QtWidgets import QApplication, QWidget, QPushButton, QLineEdit, QLabel, QMessageBox, QPlainTextEdit
from PyQt5.QtGui import QIcon
from PyQt5 import QtGui
from PyQt5.QtCore import pyqtSlot
from threading import Thread
from selenium import webdriver
from selenium.webdriver.firefox.options import Options
from selenium.webdriver.support.ui import Select
import urllib.request
from ctypes import wintypes
lpBuffer = wintypes.LPWSTR()
AppUserModelID = ctypes.windll.shell32.GetCurrentProcessExplicitAppUserModelID
AppUserModelID(ctypes.cast(ctypes.byref(lpBuffer), wintypes.LPWSTR))
appid = lpBuffer.value
ctypes.windll.kernel32.LocalFree(lpBuffer)
if os.path.exists('C:/Program Files/ConsultaNumero/') == False:
os.system('mkdir "C:/Program Files/ConsultaNumero/"')
pass
if os.path.exists('C:/Program Files/ConsultaNumero/geckodriver.exe') == False:
urllib.request.urlretrieve('https://github.com/willnaoosmit/GoogleAccountCreator/raw/master/geckodriver.exe', 'C:/Program Files/ConsultaNumero/geckodriver.exe')
pass
if os.path.exists('C:/Program Files/ConsultaNumero/icone.ico') == False:
urllib.request.urlretrieve('https://raw.githubusercontent.com/willnaoosmit/Consulta-operadora/master/CellTower.ico', 'C:/Program Files/ConsultaNumero/icone.ico')
pass
def window():
app = QApplication(sys.argv)
global widget
widget = QWidget()
global MultiInput
MultiInput = QPlainTextEdit(widget)
MultiInput.move(10, 10)
MultiInput.setFixedWidth(280)
MultiInput.setFixedHeight(75)
MultiInput.setPlaceholderText("Números")
global LogInput
LogInput = QPlainTextEdit(widget)
LogInput.move(10, 100)
LogInput.setFixedWidth(280)
LogInput.setFixedHeight(200)
LogInput.setPlaceholderText("logs")
LogInput.setReadOnly(True)
global ExecutarButton
ExecutarButton = QPushButton(widget)
ExecutarButton.setText("Executar")
ExecutarButton.move(10,310)
ExecutarButton.setFixedWidth(280)
ExecutarButton.clicked.connect(run_clicked)
widget.setGeometry(50,50,300,350)
widget.setWindowTitle("Consulta Número")
widget.setFixedSize(300,350)
widget.setWindowIcon(QtGui.QIcon('C:/Program Files/ConsultaNumero/icone.ico'))
widget.show()
sys.exit(app.exec_())
def run_clicked():
lista = MultiInput.toPlainText()
ValidCount = 0
if len(lista.splitlines()) == 0:
QMessageBox.about(widget, "Atenção", "Você precisa preencher todos os campos antes de executar!")
return
for line in lista.splitlines():
if line.rstrip() and len(line) == 10:
ValidCount += 1
if ValidCount != len(lista.splitlines()):
if len(lista.splitlines()) == 1:
QMessageBox.about(widget, "Atenção", "Todos números não batem com os critérios de 10 caractéres por linha")
elif abs(len(lista.splitlines()) - ValidCount) == 1:
QMessageBox.about(widget, "Atenção", "Existe 1 dentre os " + str(len(lista.splitlines())) + " números que não bate com os critérios de 10 caractéres por linha")
else:
QMessageBox.about(widget, "Atenção", "Existem " + str(abs(len(lista.splitlines()) - ValidCount)) + " dentre os " + str(len(lista.splitlines())) + " números que não batem com os critérios de 10 caractéres por linha")
return
ThreadRun = Thread(target=Run)
ThreadRun.start()
def Run():
LogInput.clear()
lista = MultiInput.toPlainText()
ExecutarButton.setEnabled(False)
Progress = 0
options = Options()
options.headless = False
browser = webdriver.Firefox(options=options, executable_path=r'C:/Program Files/ConsultaNumero/geckodriver.exe')
browser.get('https://www.qualoperadora.net/')
browser.maximize_window()
for numero in lista.splitlines():
try:
ExecutarButton.setText(str(Progress) + " de " + str(len(lista.splitlines())))
NumberInput = browser.find_element_by_name('telefone')
NumberInput.clear()
NumberInput.send_keys(numero)
time.sleep(2)
SearchButton = browser.find_element_by_id('consultar').click()
time.sleep(4)
Operadora = browser.find_element_by_class_name('dados').text
Estado = browser.find_element_by_class_name('cidade').text
LogInput.insertPlainText(" ".join(str(x) for x in Operadora.split('-')[:-1]) + ", " + str(Estado.split('-')[0]) + "\n")
except Exception as error:
print(error)
LogInput.insertPlainText("Erro, " + str(numero) + "\n")
Progress += 1
continue
ExecutarButton.setText("Executar")
ExecutarButton.setEnabled(True)
browser.close()
window()