Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- from bs4 import BeautifulSoup
- import requests
- import sys
- from requests import get
- from requests.exceptions import RequestException
- from contextlib import closing
- from PyQt5 import QtCore, QtGui, QtWidgets
- import threading
- working = 0
- class Ui_MainWindow(object):
- def setupUi(self, MainWindow):
- MainWindow.setObjectName("MainWindow")
- MainWindow.resize(421, 264)
- self.centralwidget = QtWidgets.QWidget(MainWindow)
- self.centralwidget.setObjectName("centralwidget")
- self.label = QtWidgets.QLabel(self.centralwidget)
- self.label.setGeometry(QtCore.QRect(20, 30, 71, 21))
- font = QtGui.QFont()
- font.setPointSize(11)
- self.label.setFont(font)
- self.label.setObjectName("label")
- self.username_entry = QtWidgets.QLineEdit(self.centralwidget)
- self.username_entry.setGeometry(QtCore.QRect(100, 30, 191, 21))
- self.username_entry.setObjectName("username_entry")
- self.start_button = QtWidgets.QPushButton(self.centralwidget)
- self.start_button.setGeometry(QtCore.QRect(310, 30, 75, 23))
- self.start_button.setObjectName("start_button")
- self.label_2 = QtWidgets.QLabel(self.centralwidget)
- self.label_2.setGeometry(QtCore.QRect(20, 80, 41, 31))
- font = QtGui.QFont()
- font.setPointSize(11)
- self.label_2.setFont(font)
- self.label_2.setObjectName("label_2")
- self.page_label = QtWidgets.QLabel(self.centralwidget)
- self.page_label.setGeometry(QtCore.QRect(70, 80, 121, 31))
- font = QtGui.QFont()
- font.setPointSize(11)
- self.page_label.setFont(font)
- self.page_label.setObjectName("page_label")
- self.line = QtWidgets.QFrame(self.centralwidget)
- self.line.setGeometry(QtCore.QRect(20, 120, 381, 21))
- self.line.setFrameShape(QtWidgets.QFrame.HLine)
- self.line.setFrameShadow(QtWidgets.QFrame.Sunken)
- self.line.setObjectName("line")
- self.total_bans_lcd = QtWidgets.QLCDNumber(self.centralwidget)
- self.total_bans_lcd.setGeometry(QtCore.QRect(110, 200, 91, 51))
- self.total_bans_lcd.setDigitCount(7)
- self.total_bans_lcd.setProperty("value", 0.0)
- self.total_bans_lcd.setProperty("intValue", 0)
- self.total_bans_lcd.setObjectName("total_bans_lcd")
- self.label_3 = QtWidgets.QLabel(self.centralwidget)
- self.label_3.setGeometry(QtCore.QRect(10, 210, 91, 41))
- font = QtGui.QFont()
- font.setPointSize(14)
- self.label_3.setFont(font)
- self.label_3.setObjectName("label_3")
- self.label_4 = QtWidgets.QLabel(self.centralwidget)
- self.label_4.setGeometry(QtCore.QRect(370, 240, 51, 20))
- self.label_4.setObjectName("label_4")
- MainWindow.setCentralWidget(self.centralwidget)
- self.retranslateUi(MainWindow)
- QtCore.QMetaObject.connectSlotsByName(MainWindow)
- self.start_button.clicked.connect(self.manage_work)
- def retranslateUi(self, MainWindow):
- _translate = QtCore.QCoreApplication.translate
- MainWindow.setWindowTitle(_translate("MainWindow", "SkycadeBanStats"))
- self.label.setText(_translate("MainWindow", "Username"))
- self.start_button.setText(_translate("MainWindow", "Collect"))
- self.label_2.setText(_translate("MainWindow", "Page"))
- self.page_label.setText(_translate("MainWindow", "0/0"))
- self.label_3.setText(_translate("MainWindow", "Total Bans"))
- self.label_4.setText(_translate("MainWindow", "yakovliam"))
- # My program stuff
- def closeEvent(self, event):
- # do stuff
- event.accept() # let the window close
- def manage_work(self):
- global working
- if self.username_entry.text() == "":
- return
- if(working == 0):
- working = 1
- h = threading.Thread(name='background', target=self.open_page)
- h.setDaemon(True)
- h.start()
- def simple_get(self, url):
- try:
- with closing(get(url, stream=True)) as resp:
- if self.is_good_response(resp):
- return resp.content
- else:
- return None
- except RequestException as e:
- return None
- def is_good_response(self, resp):
- content_type = resp.headers['Content-Type'].lower()
- return (resp.status_code == 200
- and content_type is not None
- and content_type.find('html') > -1)
- def open_page(self):
- username = self.username_entry.text()
- print(username)
- url = "https://api.mojang.com/users/profiles/minecraft/" + username
- print("Using Api [GET] " + url)
- response = requests.get(url)
- try:
- ret = response.json()
- uuid = ret['id']
- print("UUID " + uuid)
- except:
- print("Error getting UUID!")
- uuid = "0"
- if uuid != 0:
- self.scrape(uuid)
- else:
- self.username_entry.clear()
- def scrape(self, uuid):
- global working
- pge = 0
- bans = 0
- fuuid = uuid[:8] + "-" + uuid[8:12] + "-" + uuid[12:16] + "-" + uuid[16:20] + "-" + uuid[20:32]
- urlf = "https://bans.skycade.net/history.php?page=" + str(
- pge) + "&uuid=" + fuuid + "&staffhistory=1&b=60&m=15&w=0&k=0"
- print("Scraping With [GET] " + urlf)
- print(fuuid)
- try:
- url = "https://bans.skycade.net/history.php?page=" + str(0) + "&uuid=" + fuuid + "&staffhistory=1&b=60&m=15&w=0&k=0"
- raw_html = self.simple_get(url)
- html = BeautifulSoup(raw_html, 'html.parser')
- res = html.find_all('div')
- total_pages = 0
- for x in range(0, len(res)):
- hcf = res[x].text
- if "Page 1/" in hcf:
- total_pages = hcf[7:]
- total_pages = int(total_pages) - 2
- self.page_label.setText(str(0) + "/" + str(total_pages))
- self.username_entry.clear()
- except:
- self.page_label.setText("0/0")
- self.username_entry.clear()
- return
- for x in range(0, 1000):
- perc = round((x / total_pages) * 100)
- self.page_label.setText(str(x) + "/" + str(total_pages))
- try:
- print("Page " + str(x) + "/" + str(total_pages))
- raw_html = self.simple_get(url)
- html = BeautifulSoup(raw_html, 'html.parser')
- for i, tr in enumerate(html.select('tr')):
- bans = bans + 1
- self.total_bans_lcd.display(bans)
- res = html.find_all('a')
- for p in range(0, len(res)):
- hcf = res[p]['href']
- if "history.php?page=" in hcf:
- final = hcf
- url = "https://bans.skycade.net/" + hcf
- except:
- self.username_entry.clear()
- self.page_label.setText("0/0")
- working = 0
- break
- working = 0
- def main_fun(self):
- # main stuff
- uuid = self.open_page()
- if (uuid == "0"):
- sys.exit()
- self.scrape(uuid)
- if __name__ == "__main__":
- import sys
- app = QtWidgets.QApplication(sys.argv)
- MainWindow = QtWidgets.QMainWindow()
- ui = Ui_MainWindow()
- ui.setupUi(MainWindow)
- MainWindow.show()
- sys.exit(app.exec_())
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement