Skip to content

Instantly share code, notes, and snippets.

@WEBMAMOFFICE
Last active August 17, 2021 10:07
Show Gist options
  • Star 5 You must be signed in to star a gist
  • Fork 2 You must be signed in to fork a gist
  • Save WEBMAMOFFICE/fea8e52c8105453628c0c2c648fe618f to your computer and use it in GitHub Desktop.
Save WEBMAMOFFICE/fea8e52c8105453628c0c2c648fe618f to your computer and use it in GitHub Desktop.
from PyQt5 import QtWidgets, QtGui, QtCore
from PyQt5.QtCore import pyqtSignal
from http.client import HTTPSConnection
from bs4 import BeautifulSoup
import time
font_but = QtGui.QFont()
font_but.setFamily("Segoe UI Symbol")
font_but.setPointSize(10)
font_but.setWeight(95)
class QThread1(QtCore.QThread):
sig1 = pyqtSignal(str, int, int)
def __init__(self, parent=None):
QtCore.QThread.__init__(self, parent)
def on_source(self, lineftxt):
self.source_txt = lineftxt
def run(self):
self.running = True
while self.running:
try:
conn = HTTPSConnection(self.source_txt)
conn.request('GET', "/")
req = conn.getresponse()
page = req.read().decode('utf-8')
bs = BeautifulSoup(page, 'html.parser')
links = bs.find_all('a')
l = len(links)
for i in range(0, l):
if self.running is True:
self.sig1.emit(str(links[i]), i, l)
time.sleep(1.5)
except Exception as err:
self.sig1.emit(str(err), 0, 1)
class PushBut1(QtWidgets.QPushButton):
def __init__(self, parent=None):
super(PushBut1, self).__init__(parent)
self.setMouseTracking(True)
self.setStyleSheet("margin: 1px; padding: 7px; background-color: rgba(1,255,255,100); color: rgba(0,190,255,255); border-style: solid;"
"border-radius: 3px; border-width: 0.5px; border-color: rgba(127,127,255,255);")
def enterEvent(self, event):
if self.isEnabled() is True:
self.setStyleSheet("margin: 1px; padding: 7px; background-color: rgba(1,255,255,100); color: rgba(0,230,255,255);"
"border-style: solid; border-radius: 3px; border-width: 0.5px; border-color: rgba(0,230,255,255);")
if self.isEnabled() is False:
self.setStyleSheet("margin: 1px; padding: 7px; background-color: rgba(1,255,255,100); color: rgba(0,190,255,255); border-style: solid;"
"border-radius: 3px; border-width: 0.5px; border-color: rgba(127,127,255,255);")
def leaveEvent(self, event):
self.setStyleSheet("margin: 1px; padding: 7px; background-color: rgba(1,255,255,100); color: rgba(0,190,255,255); border-style: solid;"
"border-radius: 3px; border-width: 0.5px; border-color: rgba(127,127,255,255);")
class QthreadApp(QtWidgets.QWidget):
sig = pyqtSignal(str)
def __init__(self, parent=None):
QtWidgets.QWidget.__init__(self, parent)
self.setWindowTitle("QThread Application")
self.setWindowIcon(QtGui.QIcon("Path/to/Your/image/file.png"))
self.setMinimumWidth(resolution.width() / 3)
self.setMinimumHeight(resolution.height() / 1.5)
self.setStyleSheet("QWidget {background-color: rgba(0,41,59,255);} QScrollBar:horizontal {width: 1px; height: 1px;"
"background-color: rgba(0,41,59,255);} QScrollBar:vertical {width: 1px; height: 1px;"
"background-color: rgba(0,41,59,255);}")
self.linef = QtWidgets.QLineEdit(self)
self.linef.setPlaceholderText("Connect to www.example.com")
self.linef.setStyleSheet("margin: 1px; padding: 7px; background-color: rgba(0,255,255,100); color: rgba(0,190,255,255);"
"border-style: solid; border-radius: 3px; border-width: 0.5px; border-color: rgba(0,140,255,255);")
self.textf = QtWidgets.QTextEdit(self)
self.textf.setPlaceholderText("Results...")
self.textf.setStyleSheet("margin: 1px; padding: 7px; background-color: rgba(0,255,255,100); color: rgba(0,190,255,255);"
"border-style: solid; border-radius: 3px; border-width: 0.5px; border-color: rgba(0,140,255,255);")
self.but1 = PushBut1(self)
self.but1.setText("⯈")
self.but1.setFixedWidth(72)
self.but1.setFont(font_but)
self.but2 = PushBut1(self)
self.but2.setText("⯀")
self.but2.setFixedWidth(72)
self.but2.setFont(font_but)
self.grid1 = QtWidgets.QGridLayout()
self.grid1.addWidget(self.linef, 0, 0, 1, 12)
self.grid1.addWidget(self.but1, 0, 12, 1, 1)
self.grid1.addWidget(self.but2, 0, 13, 1, 1)
self.grid1.addWidget(self.textf, 1, 0, 13, 14)
self.grid1.setContentsMargins(7, 7, 7, 7)
self.setLayout(self.grid1)
self.but1.clicked.connect(self.on_but1)
self.but2.clicked.connect(self.on_but2)
def on_but1(self):
self.textf.clear()
lineftxt = self.linef.text()
self.thread1 = QThread1()
self.sig.connect(self.thread1.on_source)
self.sig.emit(lineftxt)
self.thread1.start()
self.thread1.sig1.connect(self.on_info)
self.but1.setEnabled(False)
def on_but2(self):
try:
self.thread1.running = False
time.sleep(2)
self.but1.setEnabled(True)
except:
pass
def on_info(self, info, i, l):
if i == l-1:
self.textf.clear()
self.textf.append(str(info))
else:
self.textf.append(str(info))
if __name__ == "__main__":
import sys
app = QtWidgets.QApplication(sys.argv)
desktop = QtWidgets.QApplication.desktop()
resolution = desktop.availableGeometry()
myapp = QthreadApp()
myapp.setWindowOpacity(0.95)
myapp.show()
myapp.move(resolution.center() - myapp.rect().center())
sys.exit(app.exec_())
else:
desktop = QtWidgets.QApplication.desktop()
resolution = desktop.availableGeometry()
"""
# One Side communication
class QThread1(QtCore.QThread):
sig1 = pyqtSignal(str, int, int)
def __init__(self, parent=None):
QtCore.QThread.__init__(self, parent)
def run(self):
self.running = True
while self.running:
try:
conn = HTTPSConnection(source_txt)
conn.request('GET', "/")
req = conn.getresponse()
page = req.read().decode('utf-8')
bs = BeautifulSoup(page, 'html.parser')
links = bs.find_all('a')
l = len(links)
for i in range(0, l):
if self.running is True:
self.sig1.emit(str(links[i]), i, l)
time.sleep(1.5)
except Exception as err:
self.sig1.emit(str(err), 0, 1)
def on_but1(self):
self.textf.clear()
global source_txt
source_txt = self.linef.text()
self.thread1 = QThread1()
self.thread1.start()
self.thread1.sig1.connect(self.on_info)
self.but1.setEnabled(False)
"""
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment