mirror of
https://github.com/bdrtr/DAFAM-oto.git
synced 2025-11-08 15:52:47 +00:00
opne-beta
This commit is contained in:
commit
b3e654691e
103
.gitignore
vendored
Normal file
103
.gitignore
vendored
Normal file
@ -0,0 +1,103 @@
|
|||||||
|
# Sanal ortam
|
||||||
|
venv/
|
||||||
|
.venv/
|
||||||
|
env/
|
||||||
|
.env/
|
||||||
|
*.env
|
||||||
|
|
||||||
|
myenv/
|
||||||
|
.myenv/
|
||||||
|
myenv/
|
||||||
|
*.myenv
|
||||||
|
myenv
|
||||||
|
|
||||||
|
# PyCharm ve diğer IDE'lere özgü dosyalar
|
||||||
|
.idea/
|
||||||
|
*.iml
|
||||||
|
|
||||||
|
# Python bytecode dosyaları
|
||||||
|
__pycache__/
|
||||||
|
*.pyc
|
||||||
|
*.pyo
|
||||||
|
*.pyd
|
||||||
|
|
||||||
|
# Diğer geçici dosyalar
|
||||||
|
*.log
|
||||||
|
*.tmp
|
||||||
|
|
||||||
|
#accounts
|
||||||
|
*.txt
|
||||||
|
|
||||||
|
# Python bytecode dosyaları
|
||||||
|
__pycache__/
|
||||||
|
*.pyc
|
||||||
|
*.pyo
|
||||||
|
*.pyd
|
||||||
|
|
||||||
|
# Sanal ortam klasörleri
|
||||||
|
venv/
|
||||||
|
.env/
|
||||||
|
.venv/
|
||||||
|
ENV/
|
||||||
|
env/
|
||||||
|
venv.bak/
|
||||||
|
|
||||||
|
# Pipenv dosyaları
|
||||||
|
Pipfile.lock
|
||||||
|
|
||||||
|
# Python distribütörleri tarafından oluşturulan dosyalar
|
||||||
|
*.egg-info/
|
||||||
|
dist/
|
||||||
|
build/
|
||||||
|
.eggs/
|
||||||
|
|
||||||
|
# Test çıktıları
|
||||||
|
nosetests.xml
|
||||||
|
coverage.xml
|
||||||
|
*.cover
|
||||||
|
*.py,cover
|
||||||
|
*.hypothesis/
|
||||||
|
*.tox/
|
||||||
|
*.nox/
|
||||||
|
.coverage
|
||||||
|
.cache
|
||||||
|
*.log
|
||||||
|
|
||||||
|
# IDE/Editor dosyaları
|
||||||
|
.vscode/
|
||||||
|
.idea/
|
||||||
|
*.sublime-project
|
||||||
|
*.sublime-workspace
|
||||||
|
|
||||||
|
# Çeşitli geçici dosyalar
|
||||||
|
*.tmp
|
||||||
|
*.bak
|
||||||
|
*.swp
|
||||||
|
*.swo
|
||||||
|
|
||||||
|
# Jupyter Notebook dosyaları
|
||||||
|
.ipynb_checkpoints/
|
||||||
|
|
||||||
|
# Sistem dosyaları
|
||||||
|
.DS_Store
|
||||||
|
Thumbs.db
|
||||||
|
|
||||||
|
# PyCharm kullanıcı dosyaları
|
||||||
|
*.iml
|
||||||
|
.idea/
|
||||||
|
|
||||||
|
|
||||||
|
#---
|
||||||
|
DAFAM/__pycache__/
|
||||||
|
DAFAM/.qrcreator/
|
||||||
|
DAFAM/sources/DAFAM.pyproject
|
||||||
|
DAFAM/sources/DAFAM.pyproject.user
|
||||||
|
DAFAM/sources/form.ui
|
||||||
|
DAFAM/sources/form.ui.autosave
|
||||||
|
DAFAM/.qtcreator
|
||||||
|
|
||||||
|
*.ui
|
||||||
|
*.user
|
||||||
|
*.project
|
||||||
|
*.autosave
|
||||||
|
*.qtcreator
|
||||||
6
DAFAM/DAFAM.pyproject
Normal file
6
DAFAM/DAFAM.pyproject
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
{
|
||||||
|
"files": [
|
||||||
|
"mainwindow.py",
|
||||||
|
"form.ui"
|
||||||
|
]
|
||||||
|
}
|
||||||
BIN
DAFAM/sources/back-button.png
Normal file
BIN
DAFAM/sources/back-button.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 467 B |
BIN
DAFAM/sources/compile.png
Normal file
BIN
DAFAM/sources/compile.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 16 KiB |
BIN
DAFAM/sources/dafam.png
Normal file
BIN
DAFAM/sources/dafam.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 27 KiB |
BIN
DAFAM/sources/diskette.png
Normal file
BIN
DAFAM/sources/diskette.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 6.6 KiB |
BIN
DAFAM/sources/next_button.png
Normal file
BIN
DAFAM/sources/next_button.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 9.5 KiB |
315
DAFAM/ui_form.py
Normal file
315
DAFAM/ui_form.py
Normal file
@ -0,0 +1,315 @@
|
|||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
|
||||||
|
################################################################################
|
||||||
|
## Form generated from reading UI file 'form.ui'
|
||||||
|
##
|
||||||
|
## Created by: Qt User Interface Compiler version 6.7.2
|
||||||
|
##
|
||||||
|
## WARNING! All changes made in this file will be lost when recompiling UI file!
|
||||||
|
################################################################################
|
||||||
|
|
||||||
|
from PySide6.QtCore import (QCoreApplication, QDate, QDateTime, QLocale,
|
||||||
|
QMetaObject, QObject, QPoint, QRect,
|
||||||
|
QSize, QTime, QUrl, Qt)
|
||||||
|
from PySide6.QtGui import (QBrush, QColor, QConicalGradient, QCursor,
|
||||||
|
QFont, QFontDatabase, QGradient, QIcon,
|
||||||
|
QImage, QKeySequence, QLinearGradient, QPainter,
|
||||||
|
QPalette, QPixmap, QRadialGradient, QTransform)
|
||||||
|
from PySide6.QtWidgets import (QApplication, QGraphicsView, QLabel, QListWidget,
|
||||||
|
QListWidgetItem, QMainWindow, QPlainTextEdit, QPushButton,
|
||||||
|
QSizePolicy, QStackedWidget, QStatusBar, QWidget)
|
||||||
|
|
||||||
|
class Ui_MainWindow(object):
|
||||||
|
def setupUi(self, MainWindow):
|
||||||
|
if not MainWindow.objectName():
|
||||||
|
MainWindow.setObjectName(u"MainWindow")
|
||||||
|
MainWindow.resize(1258, 631)
|
||||||
|
MainWindow.setStyleSheet(u"QMainWindow {\n"
|
||||||
|
" background:#003049;\n"
|
||||||
|
"}")
|
||||||
|
self.centralwidget = QWidget(MainWindow)
|
||||||
|
self.centralwidget.setObjectName(u"centralwidget")
|
||||||
|
self.stackedWidget = QStackedWidget(self.centralwidget)
|
||||||
|
self.stackedWidget.setObjectName(u"stackedWidget")
|
||||||
|
self.stackedWidget.setGeometry(QRect(10, 10, 1231, 581))
|
||||||
|
self.stackedWidget.setStyleSheet(u"QFrame {\n"
|
||||||
|
" background-color:#001d3d;\n"
|
||||||
|
" border-radius:10px;\n"
|
||||||
|
"}")
|
||||||
|
self.home_page = QWidget()
|
||||||
|
self.home_page.setObjectName(u"home_page")
|
||||||
|
self.home_list = QListWidget(self.home_page)
|
||||||
|
self.home_list.setObjectName(u"home_list")
|
||||||
|
self.home_list.setGeometry(QRect(160, 20, 451, 551))
|
||||||
|
self.home_list.setStyleSheet(u"QListWidget {\n"
|
||||||
|
" font: 800 11pt \"Ubuntu Sans\";\n"
|
||||||
|
" font: 500 11pt \"Ubuntu Sans\";\n"
|
||||||
|
" color: rgb(0, 0, 0);\n"
|
||||||
|
" background:rgb(255,255,255);\n"
|
||||||
|
" border-radius:20px;\n"
|
||||||
|
" text-align: center;\n"
|
||||||
|
"}\n"
|
||||||
|
"\n"
|
||||||
|
"QListWidget::item {\n"
|
||||||
|
" text-align:center;\n"
|
||||||
|
" color:black;\n"
|
||||||
|
" margin:5px;\n"
|
||||||
|
"\n"
|
||||||
|
"\n"
|
||||||
|
"}")
|
||||||
|
self.home_plain_text = QPlainTextEdit(self.home_page)
|
||||||
|
self.home_plain_text.setObjectName(u"home_plain_text")
|
||||||
|
self.home_plain_text.setGeometry(QRect(633, 29, 371, 161))
|
||||||
|
self.home_plain_text.setStyleSheet(u"QPlainTextEdit {\n"
|
||||||
|
"background-color:#001d3d;\n"
|
||||||
|
"color:white;\n"
|
||||||
|
"}")
|
||||||
|
self.home_save_button = QPushButton(self.home_page)
|
||||||
|
self.home_save_button.setObjectName(u"home_save_button")
|
||||||
|
self.home_save_button.setGeometry(QRect(1070, 50, 88, 26))
|
||||||
|
self.home_save_button.setStyleSheet(u"QPushButton {\n"
|
||||||
|
" background-color:white;\n"
|
||||||
|
" color:black;\n"
|
||||||
|
"}")
|
||||||
|
icon = QIcon()
|
||||||
|
icon.addFile(u"sources/diskette.png", QSize(), QIcon.Mode.Normal, QIcon.State.Off)
|
||||||
|
self.home_save_button.setIcon(icon)
|
||||||
|
self.home_next_button = QPushButton(self.home_page)
|
||||||
|
self.home_next_button.setObjectName(u"home_next_button")
|
||||||
|
self.home_next_button.setGeometry(QRect(1070, 10, 88, 26))
|
||||||
|
self.home_next_button.setStyleSheet(u"QPushButton {\n"
|
||||||
|
" background-color:white;\n"
|
||||||
|
"}")
|
||||||
|
icon1 = QIcon()
|
||||||
|
icon1.addFile(u"sources/next_button.png", QSize(), QIcon.Mode.Normal, QIcon.State.Off)
|
||||||
|
self.home_next_button.setIcon(icon1)
|
||||||
|
self.widget = QWidget(self.home_page)
|
||||||
|
self.widget.setObjectName(u"widget")
|
||||||
|
self.widget.setGeometry(QRect(10, 30, 141, 501))
|
||||||
|
self.widget.setStyleSheet(u"QWidget {\n"
|
||||||
|
" background-color:#003566;\n"
|
||||||
|
" border-radius:50px;\n"
|
||||||
|
"}")
|
||||||
|
self.home_widget_left = QWidget(self.widget)
|
||||||
|
self.home_widget_left.setObjectName(u"home_widget_left")
|
||||||
|
self.home_widget_left.setGeometry(QRect(10, 70, 121, 321))
|
||||||
|
self.home_widget_left.setLayoutDirection(Qt.LeftToRight)
|
||||||
|
self.home_widget_left.setAutoFillBackground(False)
|
||||||
|
self.home_widget_left.setStyleSheet(u"QWidget {\n"
|
||||||
|
" background:#fca311;\n"
|
||||||
|
" border-radius:10px;\n"
|
||||||
|
"}\n"
|
||||||
|
"\n"
|
||||||
|
"")
|
||||||
|
self.home_show_account = QPushButton(self.home_widget_left)
|
||||||
|
self.home_show_account.setObjectName(u"home_show_account")
|
||||||
|
self.home_show_account.setGeometry(QRect(10, 70, 88, 26))
|
||||||
|
self.home_show_account.setStyleSheet(u"QPushButton {\n"
|
||||||
|
" background-color: #003566;\n"
|
||||||
|
" color: rgb(255, 255, 255);\n"
|
||||||
|
" font: 600 11pt \"URW Bookman\";\n"
|
||||||
|
"}\n"
|
||||||
|
"\n"
|
||||||
|
"QPushButton:hover {\n"
|
||||||
|
" \n"
|
||||||
|
" background-color: rgb(246, 211, 45);\n"
|
||||||
|
" color:#003566;\n"
|
||||||
|
"}")
|
||||||
|
self.home_show_account.setAutoDefault(True)
|
||||||
|
self.label = QLabel(self.home_widget_left)
|
||||||
|
self.label.setObjectName(u"label")
|
||||||
|
self.label.setGeometry(QRect(20, 30, 81, 18))
|
||||||
|
self.label.setStyleSheet(u"QLabel {\n"
|
||||||
|
" color:rgb(255,255,255);\n"
|
||||||
|
"}\n"
|
||||||
|
"QLabel:hover {\n"
|
||||||
|
" \n"
|
||||||
|
" color: rgb(26, 95, 180);\n"
|
||||||
|
" font: 600 15pt \"Ubuntu Sans\";\n"
|
||||||
|
" font-size:20pt;\n"
|
||||||
|
"}")
|
||||||
|
self.home_run = QPushButton(self.home_widget_left)
|
||||||
|
self.home_run.setObjectName(u"home_run")
|
||||||
|
self.home_run.setGeometry(QRect(10, 130, 88, 26))
|
||||||
|
self.home_run.setStyleSheet(u"QPushButton {\n"
|
||||||
|
" background-color: #003566;\n"
|
||||||
|
" color: rgb(255, 255, 255);\n"
|
||||||
|
" font: 600 11pt \"URW Bookman\";\n"
|
||||||
|
"}\n"
|
||||||
|
"\n"
|
||||||
|
"QPushButton:hover {\n"
|
||||||
|
" \n"
|
||||||
|
" background-color: rgb(246, 211, 45);\n"
|
||||||
|
" color:#003566;\n"
|
||||||
|
"}")
|
||||||
|
self.graphicsView = QGraphicsView(self.home_page)
|
||||||
|
self.graphicsView.setObjectName(u"graphicsView")
|
||||||
|
self.graphicsView.setGeometry(QRect(640, 230, 341, 201))
|
||||||
|
self.graphicsView.setAutoFillBackground(False)
|
||||||
|
self.stackedWidget.addWidget(self.home_page)
|
||||||
|
self.widget.raise_()
|
||||||
|
self.home_list.raise_()
|
||||||
|
self.home_plain_text.raise_()
|
||||||
|
self.home_save_button.raise_()
|
||||||
|
self.home_next_button.raise_()
|
||||||
|
self.graphicsView.raise_()
|
||||||
|
self.code_page = QWidget()
|
||||||
|
self.code_page.setObjectName(u"code_page")
|
||||||
|
self.code_code_label = QPlainTextEdit(self.code_page)
|
||||||
|
self.code_code_label.setObjectName(u"code_code_label")
|
||||||
|
self.code_code_label.setGeometry(QRect(10, 10, 561, 551))
|
||||||
|
self.code_code_label.setStyleSheet(u"QPlainTextEdit \n"
|
||||||
|
"{\n"
|
||||||
|
" background-color:white;\n"
|
||||||
|
" color:black;\n"
|
||||||
|
" border-radius:10px;\n"
|
||||||
|
" font: 600 12pt \"Ubuntu Sans\";\n"
|
||||||
|
"}\n"
|
||||||
|
"")
|
||||||
|
self.code_save_button = QPushButton(self.code_page)
|
||||||
|
self.code_save_button.setObjectName(u"code_save_button")
|
||||||
|
self.code_save_button.setGeometry(QRect(990, 20, 88, 26))
|
||||||
|
self.code_save_button.setStyleSheet(u"QPushButton {\n"
|
||||||
|
" background-color: white;\n"
|
||||||
|
" color: black;\n"
|
||||||
|
" font: 600 11pt \"URW Bookman\";\n"
|
||||||
|
"}\n"
|
||||||
|
"\n"
|
||||||
|
"QPushButton:hover {\n"
|
||||||
|
" \n"
|
||||||
|
" background-color: black;\n"
|
||||||
|
" color:white;\n"
|
||||||
|
"}")
|
||||||
|
self.code_file_open = QPushButton(self.code_page)
|
||||||
|
self.code_file_open.setObjectName(u"code_file_open")
|
||||||
|
self.code_file_open.setGeometry(QRect(990, 60, 88, 26))
|
||||||
|
self.code_file_open.setStyleSheet(u"QPushButton {\n"
|
||||||
|
" background-color: white;\n"
|
||||||
|
" color: black;\n"
|
||||||
|
" font: 600 11pt \"URW Bookman\";\n"
|
||||||
|
"}\n"
|
||||||
|
"\n"
|
||||||
|
"QPushButton:hover {\n"
|
||||||
|
" \n"
|
||||||
|
" background-color: black;\n"
|
||||||
|
" color:white;\n"
|
||||||
|
"}")
|
||||||
|
self.code_info_label = QLabel(self.code_page)
|
||||||
|
self.code_info_label.setObjectName(u"code_info_label")
|
||||||
|
self.code_info_label.setGeometry(QRect(600, 270, 601, 291))
|
||||||
|
self.code_info_label.setStyleSheet(u"QLabel \n"
|
||||||
|
"{\n"
|
||||||
|
" background-color:white;\n"
|
||||||
|
" color:black;\n"
|
||||||
|
" border-radius:10px;\n"
|
||||||
|
" font: 600 12pt \"Ubuntu Sans\";\n"
|
||||||
|
"}\n"
|
||||||
|
"")
|
||||||
|
self.code_back_button = QPushButton(self.code_page)
|
||||||
|
self.code_back_button.setObjectName(u"code_back_button")
|
||||||
|
self.code_back_button.setGeometry(QRect(1100, 20, 88, 26))
|
||||||
|
self.code_back_button.setStyleSheet(u"QPushButton {\n"
|
||||||
|
" background-color:white;\n"
|
||||||
|
"}")
|
||||||
|
icon2 = QIcon()
|
||||||
|
icon2.addFile(u"sources/back-button.png", QSize(), QIcon.Mode.Normal, QIcon.State.Off)
|
||||||
|
self.code_back_button.setIcon(icon2)
|
||||||
|
self.code_run_button = QPushButton(self.code_page)
|
||||||
|
self.code_run_button.setObjectName(u"code_run_button")
|
||||||
|
self.code_run_button.setGeometry(QRect(990, 120, 88, 71))
|
||||||
|
self.code_run_button.setStyleSheet(u"QPushButton {\n"
|
||||||
|
" background-color: white;\n"
|
||||||
|
" color: black;\n"
|
||||||
|
" font: 600 11pt \"URW Bookman\";\n"
|
||||||
|
"}\n"
|
||||||
|
"\n"
|
||||||
|
"QPushButton:hover {\n"
|
||||||
|
" \n"
|
||||||
|
" background-color: black;\n"
|
||||||
|
" color:white;\n"
|
||||||
|
"}")
|
||||||
|
self.code_generate_button = QPushButton(self.code_page)
|
||||||
|
self.code_generate_button.setObjectName(u"code_generate_button")
|
||||||
|
self.code_generate_button.setGeometry(QRect(730, 230, 88, 26))
|
||||||
|
self.code_generate_button.setStyleSheet(u"QPushButton {\n"
|
||||||
|
" background-color: white;\n"
|
||||||
|
" color: black;\n"
|
||||||
|
" font: 600 11pt \"URW Bookman\";\n"
|
||||||
|
"}\n"
|
||||||
|
"\n"
|
||||||
|
"QPushButton:hover {\n"
|
||||||
|
" \n"
|
||||||
|
" background-color: black;\n"
|
||||||
|
" color:white;\n"
|
||||||
|
"}")
|
||||||
|
self.code_prompt = QPlainTextEdit(self.code_page)
|
||||||
|
self.code_prompt.setObjectName(u"code_prompt")
|
||||||
|
self.code_prompt.setGeometry(QRect(603, 150, 351, 70))
|
||||||
|
self.code_prompt.setStyleSheet(u"QPlainTextEdit \n"
|
||||||
|
"{\n"
|
||||||
|
" background-color:white;\n"
|
||||||
|
" color:black;\n"
|
||||||
|
" border-radius:10px;\n"
|
||||||
|
" font: 600 12pt \"Ubuntu Sans\";\n"
|
||||||
|
"}\n"
|
||||||
|
"")
|
||||||
|
self.plainTextEdit = QPlainTextEdit(self.code_page)
|
||||||
|
self.plainTextEdit.setObjectName(u"plainTextEdit")
|
||||||
|
self.plainTextEdit.setGeometry(QRect(603, 10, 341, 121))
|
||||||
|
self.plainTextEdit.setStyleSheet(u"QPlainTextEdit {\n"
|
||||||
|
" background-color:white;\n"
|
||||||
|
" border-radius:2px;\n"
|
||||||
|
" color:black;\n"
|
||||||
|
"}")
|
||||||
|
self.stackedWidget.addWidget(self.code_page)
|
||||||
|
self.page_2 = QWidget()
|
||||||
|
self.page_2.setObjectName(u"page_2")
|
||||||
|
self.stackedWidget.addWidget(self.page_2)
|
||||||
|
self.code_notif = QLabel(self.centralwidget)
|
||||||
|
self.code_notif.setObjectName(u"code_notif")
|
||||||
|
self.code_notif.setGeometry(QRect(500, 590, 281, 18))
|
||||||
|
self.code_notif.setStyleSheet(u"QLabel \n"
|
||||||
|
"{\n"
|
||||||
|
" color:white;\n"
|
||||||
|
" border-radius:10px;\n"
|
||||||
|
" font: 600 12pt \"Ubuntu Sans\";\n"
|
||||||
|
"}\n"
|
||||||
|
"")
|
||||||
|
self.widget_2 = QWidget(self.centralwidget)
|
||||||
|
self.widget_2.setObjectName(u"widget_2")
|
||||||
|
self.widget_2.setGeometry(QRect(70, 600, 1101, 71))
|
||||||
|
self.widget_2.setStyleSheet(u"QWidget {\n"
|
||||||
|
"background-color:#fca311;\n"
|
||||||
|
"border-radius:20px;\n"
|
||||||
|
"}")
|
||||||
|
MainWindow.setCentralWidget(self.centralwidget)
|
||||||
|
self.statusbar = QStatusBar(MainWindow)
|
||||||
|
self.statusbar.setObjectName(u"statusbar")
|
||||||
|
MainWindow.setStatusBar(self.statusbar)
|
||||||
|
|
||||||
|
self.retranslateUi(MainWindow)
|
||||||
|
|
||||||
|
self.stackedWidget.setCurrentIndex(1)
|
||||||
|
|
||||||
|
|
||||||
|
QMetaObject.connectSlotsByName(MainWindow)
|
||||||
|
# setupUi
|
||||||
|
|
||||||
|
def retranslateUi(self, MainWindow):
|
||||||
|
MainWindow.setWindowTitle(QCoreApplication.translate("MainWindow", u"MainWindow", None))
|
||||||
|
self.home_save_button.setText(QCoreApplication.translate("MainWindow", u" save", None))
|
||||||
|
self.home_next_button.setText("")
|
||||||
|
self.home_show_account.setText(QCoreApplication.translate("MainWindow", u"show", None))
|
||||||
|
self.label.setText(QCoreApplication.translate("MainWindow", u"ACCOUNTS", None))
|
||||||
|
self.home_run.setText(QCoreApplication.translate("MainWindow", u"run", None))
|
||||||
|
self.code_code_label.setPlainText(QCoreApplication.translate("MainWindow", u"code is here", None))
|
||||||
|
self.code_save_button.setText(QCoreApplication.translate("MainWindow", u"kaydet", None))
|
||||||
|
self.code_file_open.setText(QCoreApplication.translate("MainWindow", u"dosya a\u00e7", None))
|
||||||
|
self.code_info_label.setText("")
|
||||||
|
self.code_back_button.setText("")
|
||||||
|
self.code_run_button.setText(QCoreApplication.translate("MainWindow", u"\u00e7al\u0131\u015ft\u0131r", None))
|
||||||
|
self.code_generate_button.setText(QCoreApplication.translate("MainWindow", u"\u00fcret", None))
|
||||||
|
self.code_prompt.setPlainText(QCoreApplication.translate("MainWindow", u"(prompt) >> ", None))
|
||||||
|
self.code_notif.setText("")
|
||||||
|
# retranslateUi
|
||||||
|
|
||||||
47
PreDefAlgs.py
Normal file
47
PreDefAlgs.py
Normal file
@ -0,0 +1,47 @@
|
|||||||
|
from login import TrustPilot
|
||||||
|
from selenium.webdriver.common.by import By
|
||||||
|
from selenium.webdriver.common.keys import Keys
|
||||||
|
import time
|
||||||
|
|
||||||
|
class Algoritma():
|
||||||
|
|
||||||
|
def __init__ (self, link, type, proxy = None):
|
||||||
|
|
||||||
|
self.platform = TrustPilot(link, type, proxy)
|
||||||
|
self.email = ''
|
||||||
|
self.passwd = ''
|
||||||
|
|
||||||
|
def __setitem__(self, key, value):
|
||||||
|
|
||||||
|
if key == 'email': self.email = value
|
||||||
|
|
||||||
|
elif key == 'passwd': self.passwd = value
|
||||||
|
|
||||||
|
|
||||||
|
def click(self, timeout, type, value):
|
||||||
|
self.platform.find_and_click(timeout, type, value)
|
||||||
|
|
||||||
|
def fill(self, timeout, type, value, text, num):
|
||||||
|
self.platform.find_and_fill(timeout, type, value, text, num)
|
||||||
|
|
||||||
|
|
||||||
|
def start(self):
|
||||||
|
#that scenario is already created for programmer and not will be change
|
||||||
|
|
||||||
|
mail = "https://login.live.com/login.srf?wa=wsignin1.0&rpsnv=157&ct=1722797878&rver=7.0.6738.0&wp=MBI_SSL&wreply=https%3a%2f%2foutlook.live.com%2fowa%2f%3fnlp%3d1%26cobrandid%3dab0455a0-8d03-46b9-b18b-df2f57b9e44c%26culture%3den-us%26country%3dus%26RpsCsrfState%3dc34ac037-be32-3b76-76f2-2cc383370e56&id=292841&aadredir=1&whr=outlook.de&CBCXT=out&lw=1&fl=dob%2cflname%2cwld&cobrandid=ab0455a0-8d03-46b9-b18b-df2f57b9e44c"
|
||||||
|
|
||||||
|
self.platform.find_and_click(10,'css', "span.typography_body-l__KUYFJ.typography_appearance-action__9NNRY.link_link__IZzHN.link_underlined__OXYVM")
|
||||||
|
time.sleep(.7)
|
||||||
|
self.platform.find_and_fill(10, 'id', "email-lookup",f"{self.email}",Keys.RETURN)
|
||||||
|
self.platform.add_page(mail)
|
||||||
|
self.platform.pages_to(1)
|
||||||
|
self.platform.find_and_fill(10, 'name', "loginfmt", f"{self.email}", Keys.RETURN)
|
||||||
|
self.platform.find_and_fill(10, 'name', "passwd", f"{self.passwd}", Keys.RETURN)
|
||||||
|
self.platform.find_and_click(10,'id', "acceptButton")
|
||||||
|
self.platform.active_element_click()
|
||||||
|
time.sleep(0.5)
|
||||||
|
self.platform.get_knowledge('class', "JdFsz")
|
||||||
|
self.platform.home()
|
||||||
|
self.platform.find_and_fill(10, 'id', "verification-code-input", self.platform.result)
|
||||||
|
time.sleep(2)
|
||||||
|
self.platform.end()
|
||||||
26
comments.py
Normal file
26
comments.py
Normal file
@ -0,0 +1,26 @@
|
|||||||
|
import google.generativeai as genai
|
||||||
|
import os
|
||||||
|
from dotenv import load_dotenv
|
||||||
|
load_dotenv()
|
||||||
|
|
||||||
|
api_key = os.getenv('GEMINI_API_KEY')
|
||||||
|
|
||||||
|
|
||||||
|
class GEMINI:
|
||||||
|
|
||||||
|
def __init__(self, _api_key, _model_name):
|
||||||
|
|
||||||
|
self.api_key = _api_key
|
||||||
|
self.response = None
|
||||||
|
genai.configure(api_key=self.api_key)
|
||||||
|
self.model = genai.GenerativeModel(_model_name)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
def set_text(self,_req_text):
|
||||||
|
self.response = self.model.generate_content(_req_text)
|
||||||
|
|
||||||
|
def get_text(self):
|
||||||
|
return self.response.text
|
||||||
|
|
||||||
56
decoder.py
Normal file
56
decoder.py
Normal file
@ -0,0 +1,56 @@
|
|||||||
|
from login import TrustPilot
|
||||||
|
from selenium.webdriver.common.by import By
|
||||||
|
from selenium.webdriver.common.keys import Keys
|
||||||
|
import time, threading
|
||||||
|
from concurrent.futures import ThreadPoolExecutor
|
||||||
|
from logger import setup_logger
|
||||||
|
import logging
|
||||||
|
|
||||||
|
|
||||||
|
class AST:
|
||||||
|
|
||||||
|
def __init__ (self, all_lines):
|
||||||
|
|
||||||
|
self.all_lines = all_lines
|
||||||
|
self.lines = []
|
||||||
|
|
||||||
|
self._keys = {
|
||||||
|
"ok": "Keys.RETURN",
|
||||||
|
'none':"Keys.ENTER"
|
||||||
|
}
|
||||||
|
|
||||||
|
self.process_order = {}
|
||||||
|
self.base_code = """\n"""
|
||||||
|
|
||||||
|
|
||||||
|
self.special_keys = ['driver', 'bas', 'doldur']
|
||||||
|
|
||||||
|
def decode(self):
|
||||||
|
|
||||||
|
_split_lines = self.all_lines.split('\n')
|
||||||
|
|
||||||
|
for line in _split_lines:
|
||||||
|
|
||||||
|
line = str.strip(line)
|
||||||
|
words = line.split(' ')
|
||||||
|
|
||||||
|
""" driver
|
||||||
|
bas
|
||||||
|
doldur
|
||||||
|
yeni_sayfa
|
||||||
|
sayfa_degistir
|
||||||
|
aktif_elemana_tikla
|
||||||
|
eve_don
|
||||||
|
bilgi_al
|
||||||
|
|
||||||
|
"""
|
||||||
|
|
||||||
|
if words[0] not in self.special_keys:
|
||||||
|
return 0
|
||||||
|
|
||||||
|
elif words[0] in "driver":
|
||||||
|
self.base_code+=f"alg = Algoritma(link={words[1]}, type='{words[2]}')\ntime.sleep(0.5)\n"
|
||||||
|
elif words[0] in "bas":
|
||||||
|
self.base_code+=f"alg.click(10, '{words[1]}', {words[2]})\ntime.sleep(0.5)\n"
|
||||||
|
elif words[0] in "doldur":
|
||||||
|
self.base_code+=f"alg.fill(10, '{words[1]}', {words[2]}, {words[3]}, {self._keys[words[4]]})\n"
|
||||||
4
komutlar.dfm
Normal file
4
komutlar.dfm
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
driver 'https://lichess.org/login?referrer=/' chrome None
|
||||||
|
doldur id 'form3-username' 'merhaba' ok
|
||||||
|
doldur id 'form3-password' 'sifre' none
|
||||||
|
bas class 'box__top'
|
||||||
9
logger.py
Normal file
9
logger.py
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
import logging
|
||||||
|
|
||||||
|
|
||||||
|
def setup_logger():
|
||||||
|
logging.basicConfig(level=logging.DEBUG, # Log seviyesini belirleyin
|
||||||
|
format='%(asctime)s - %(name)s - %(levelname)s - %(message)s', # Mesaj formatı
|
||||||
|
datefmt='%Y-%m-%d %H:%M:%S', # Tarih formatı
|
||||||
|
handlers=[logging.FileHandler('app.log' ,"w"), # Dosyaya loglama
|
||||||
|
logging.StreamHandler()])
|
||||||
305
login.py
Normal file
305
login.py
Normal file
@ -0,0 +1,305 @@
|
|||||||
|
""" This page created by Bedir Karaabali 04.08.2024
|
||||||
|
it's contain trustpilot and outlook.de login process. """
|
||||||
|
|
||||||
|
|
||||||
|
from selenium import webdriver
|
||||||
|
from selenium.webdriver.common.by import By
|
||||||
|
from selenium.webdriver.common.keys import Keys
|
||||||
|
from selenium.webdriver.support.ui import WebDriverWait
|
||||||
|
from selenium.webdriver.support import expected_conditions as EC
|
||||||
|
from selenium.common.exceptions import TimeoutException, NoSuchElementException, WebDriverException
|
||||||
|
from logger import setup_logger
|
||||||
|
import time, re, logging
|
||||||
|
|
||||||
|
setup_logger()
|
||||||
|
logging.getLogger(__file__)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
def find_clickable_content(func):
|
||||||
|
def wrapper(self, *args, **kwargs):
|
||||||
|
|
||||||
|
_driver = args[0]
|
||||||
|
_timeout = args[1]
|
||||||
|
_finder = args[3]
|
||||||
|
|
||||||
|
se_list = {
|
||||||
|
'0':By.ID,
|
||||||
|
'1':By.NAME,
|
||||||
|
'2':By.CSS_SELECTOR,
|
||||||
|
'3':By.CLASS_NAME
|
||||||
|
}
|
||||||
|
|
||||||
|
_selector = se_list[f'{args[2]}']
|
||||||
|
_req = (_selector, _finder)
|
||||||
|
|
||||||
|
logging.info("find_clickable_content basladi")
|
||||||
|
|
||||||
|
try:
|
||||||
|
_find_item = WebDriverWait(_driver, timeout=_timeout).until(
|
||||||
|
EC.element_to_be_clickable((_req))
|
||||||
|
)
|
||||||
|
_find_item.click()
|
||||||
|
|
||||||
|
except TimeoutException as t:
|
||||||
|
logging.error(f"time out {t} \n\n")
|
||||||
|
|
||||||
|
|
||||||
|
except NoSuchElementException as e:
|
||||||
|
logging.error(f"no element find {e}")
|
||||||
|
|
||||||
|
|
||||||
|
return func(self, *args, **kwargs)
|
||||||
|
|
||||||
|
return wrapper
|
||||||
|
|
||||||
|
|
||||||
|
def find_fillable_content(func):
|
||||||
|
def wrapper(self, *args, **kwargs):
|
||||||
|
|
||||||
|
_driver = args[0]
|
||||||
|
_timeout = args[1]
|
||||||
|
_finder = args[3]
|
||||||
|
|
||||||
|
se_list = {
|
||||||
|
'0':By.ID,
|
||||||
|
'1':By.NAME,
|
||||||
|
'2':By.CSS_SELECTOR,
|
||||||
|
'3':By.CLASS_NAME
|
||||||
|
}
|
||||||
|
|
||||||
|
_selector = se_list[f'{args[2]}']
|
||||||
|
_req = (_selector, _finder)
|
||||||
|
|
||||||
|
logging.info("find_fillable_content basladi")
|
||||||
|
|
||||||
|
try:
|
||||||
|
_find_item = WebDriverWait(_driver, timeout=_timeout).until(
|
||||||
|
EC.presence_of_element_located((_req))
|
||||||
|
)
|
||||||
|
|
||||||
|
for key, value in kwargs.items():
|
||||||
|
if value != None or value != '':
|
||||||
|
if hasattr(_find_item, 'send_keys'):
|
||||||
|
_find_item.send_keys(value)
|
||||||
|
else:
|
||||||
|
logging.error(f"{key} wrong process.")
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
except TimeoutException as t:
|
||||||
|
print(f"time out {t} \n\n")
|
||||||
|
logging.error(f"time out {_finder}")
|
||||||
|
|
||||||
|
except NoSuchElementException as e:
|
||||||
|
logging.error(f"no element find {e}")
|
||||||
|
|
||||||
|
return func(self, *args, **kwargs)
|
||||||
|
|
||||||
|
return wrapper
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
def get_knowledge(func):
|
||||||
|
def wrapper(self, *args, **kwargs):
|
||||||
|
|
||||||
|
_driver = args[0]
|
||||||
|
_timeout = args[1]
|
||||||
|
_finder = args[3]
|
||||||
|
|
||||||
|
se_list = {
|
||||||
|
'0':By.ID,
|
||||||
|
'1':By.NAME,
|
||||||
|
'2':By.CSS_SELECTOR,
|
||||||
|
'3':By.CLASS_NAME
|
||||||
|
}
|
||||||
|
|
||||||
|
_selector = se_list[f'{args[2]}']
|
||||||
|
_req = (_selector, _finder)
|
||||||
|
|
||||||
|
logging.info("get_knowledge basladi")
|
||||||
|
|
||||||
|
try:
|
||||||
|
_find_item = WebDriverWait(_driver, timeout=_timeout).until(
|
||||||
|
EC.presence_of_element_located((_req))
|
||||||
|
)
|
||||||
|
|
||||||
|
return _find_item.text
|
||||||
|
|
||||||
|
except TimeoutException as t:
|
||||||
|
logging.error(f"time out {t} \n\n")
|
||||||
|
|
||||||
|
except NoSuchElementException as e:
|
||||||
|
logging.error(f"element bulunamadi {_finder}")
|
||||||
|
|
||||||
|
return func(self, *args, **kwargs)
|
||||||
|
|
||||||
|
return wrapper
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
class TrustPilot:
|
||||||
|
|
||||||
|
def __init__(self, _main_link, _browser_type, _proxy:str) -> None:
|
||||||
|
|
||||||
|
self.current_page = 0
|
||||||
|
self.result = ''
|
||||||
|
|
||||||
|
self.proxy = _proxy
|
||||||
|
|
||||||
|
self.selectors = {
|
||||||
|
'id':0,
|
||||||
|
'name':1,
|
||||||
|
'css':2,
|
||||||
|
'class':3
|
||||||
|
}
|
||||||
|
|
||||||
|
self.pages = {}
|
||||||
|
|
||||||
|
self._link = _main_link
|
||||||
|
self._browser_type = _browser_type
|
||||||
|
|
||||||
|
self._web_driver = None
|
||||||
|
self._cookie_menagement = None
|
||||||
|
self.chrome_options = None
|
||||||
|
|
||||||
|
self.preprocess()
|
||||||
|
self.request_web_main_page(_main_link)
|
||||||
|
self.cookies_control()
|
||||||
|
self.pages_update()
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
def set_settings(self):
|
||||||
|
self.chrome_options = webdriver.ChromeOptions()
|
||||||
|
self.chrome_options.add_argument(f'--proxy-server={self.proxy}')
|
||||||
|
logging.info("proxy ayarlandi")
|
||||||
|
|
||||||
|
|
||||||
|
def extract_numbers(self, text):
|
||||||
|
numbers = re.findall(r'\d', text)
|
||||||
|
logging.info(f"onay sifresi elde edildi {numbers}")
|
||||||
|
return ''.join(numbers)
|
||||||
|
|
||||||
|
def pages_update(self):
|
||||||
|
pages = self._web_driver.window_handles
|
||||||
|
self.pages = {index: value for index, value in enumerate(pages)}
|
||||||
|
logging.info("sayfa degisti")
|
||||||
|
|
||||||
|
def preprocess(self):
|
||||||
|
self._web_driver = webdriver.Chrome(options=self.chrome_options) if self._browser_type == "chrome" else webdriver.Firefox() #now just 2 browser Google Chrome and FireFox
|
||||||
|
|
||||||
|
def request_web_main_page(self, link):
|
||||||
|
try:
|
||||||
|
self._web_driver.get(link)
|
||||||
|
time.sleep(.5)
|
||||||
|
except WebDriverException as w:
|
||||||
|
logging.error(f"Failed to get the page: {link}. Exception: {w}")
|
||||||
|
|
||||||
|
|
||||||
|
@find_clickable_content
|
||||||
|
def pass_cookie(self, driver, timeout, by, value):
|
||||||
|
pass
|
||||||
|
|
||||||
|
|
||||||
|
def cookies_control(self):
|
||||||
|
self._cookie_menagement = self._web_driver.get_cookies()
|
||||||
|
if self._cookie_menagement:
|
||||||
|
self.pass_cookie(self._web_driver, 10, self.selectors['id'], "onetrust-accept-btn-handler")
|
||||||
|
|
||||||
|
|
||||||
|
@find_clickable_content
|
||||||
|
def _find_and_click(self, driver, timeout, by, value):
|
||||||
|
pass
|
||||||
|
|
||||||
|
def find_and_click(self, timeout=10, by=None, value=None):
|
||||||
|
self._find_and_click(self._web_driver, timeout, self.selectors[f'{by}'], value)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@find_fillable_content
|
||||||
|
def _find_and_fill(self, driver, timeout, by, value, **kwargs):
|
||||||
|
pass
|
||||||
|
|
||||||
|
|
||||||
|
def find_and_fill(self, timeout=10, by=None, value=None, text='None', command=None):
|
||||||
|
if command != None: self._find_and_fill(self._web_driver,timeout, self.selectors[f'{by}'], value, text=text, command=command)
|
||||||
|
else :self._find_and_fill(self._web_driver,timeout, self.selectors[f'{by}'], value, text=text)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
def add_page(self, link):
|
||||||
|
self._web_driver.execute_script(f"window.open('{link}');")
|
||||||
|
self.pages_update()
|
||||||
|
|
||||||
|
def pages_to(self, page_num):
|
||||||
|
self.current_page = page_num
|
||||||
|
self._web_driver.switch_to.window(f'{self._web_driver.window_handles[page_num]}')
|
||||||
|
|
||||||
|
def home(self):
|
||||||
|
self.pages_to(0)
|
||||||
|
self.current_page = 0
|
||||||
|
|
||||||
|
|
||||||
|
def active_element_click(self):
|
||||||
|
active_element = self._web_driver.execute_script("return document.activeElement;")
|
||||||
|
time.sleep(.9)
|
||||||
|
active_element.send_keys(Keys.ENTER)
|
||||||
|
|
||||||
|
@get_knowledge
|
||||||
|
def _get_knowledge(self, driver, timeout, by, value, **kwargs):
|
||||||
|
pass
|
||||||
|
|
||||||
|
def get_knowledge(self, by, value):
|
||||||
|
text = self._get_knowledge(self._web_driver, 10, self.selectors[f'{by}'], value)
|
||||||
|
self.result = self.extract_numbers(text)
|
||||||
|
|
||||||
|
def end(self):
|
||||||
|
logging.info("quiting")
|
||||||
|
self._web_driver.quit()
|
||||||
|
|
||||||
|
|
||||||
|
"""
|
||||||
|
class find_and_fill(object):
|
||||||
|
|
||||||
|
def __init__ (self, selector, value):
|
||||||
|
|
||||||
|
self.selector = selector
|
||||||
|
self.value = value
|
||||||
|
|
||||||
|
|
||||||
|
def __call__(self, driver):
|
||||||
|
element = driver.find_element(*self.selector)
|
||||||
|
if self.value in element.get_attribute('id'):
|
||||||
|
return element
|
||||||
|
|
||||||
|
else: return False
|
||||||
|
|
||||||
|
link = "https://trustpilot.com/users/connect?redirect=%2F&source_cta=header"
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
|
||||||
|
driver = webdriver.Chrome()
|
||||||
|
driver.get(link)
|
||||||
|
|
||||||
|
element = WebDriverWait(driver, 10).until(
|
||||||
|
find_and_fill((By.ID, 'input'), 'input')
|
||||||
|
)
|
||||||
|
|
||||||
|
print(element)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
"""
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
245
mainwindow.py
Normal file
245
mainwindow.py
Normal file
@ -0,0 +1,245 @@
|
|||||||
|
# This Python file uses the following encoding: utf-8
|
||||||
|
from PySide6.QtWidgets import QApplication, QMainWindow, QFileDialog, QGraphicsPixmapItem ,QGraphicsScene,QGraphicsView
|
||||||
|
from PySide6.QtGui import QPixmap, QIcon
|
||||||
|
from PySide6.QtCore import QTimer
|
||||||
|
from DAFAM.ui_form import Ui_MainWindow
|
||||||
|
import logging, sys, time
|
||||||
|
|
||||||
|
from concurrent.futures import ThreadPoolExecutor
|
||||||
|
from logger import setup_logger
|
||||||
|
from PreDefAlgs import Algoritma
|
||||||
|
from selenium.webdriver.common.by import By
|
||||||
|
from selenium.webdriver.common.keys import Keys
|
||||||
|
from decoder import AST
|
||||||
|
from comments import api_key, GEMINI
|
||||||
|
|
||||||
|
|
||||||
|
setup_logger() #logging configure
|
||||||
|
logger = logging.getLogger(__file__) #loggin - process
|
||||||
|
|
||||||
|
class MainWindow(QMainWindow):
|
||||||
|
def __init__(self, parent=None):
|
||||||
|
super().__init__(parent)
|
||||||
|
self.ui = Ui_MainWindow()
|
||||||
|
self.ui.setupUi(self)
|
||||||
|
|
||||||
|
self.icon_path = "DAFAM//sources//"
|
||||||
|
self.setWindowTitle("DAFAM CONTROLLER")
|
||||||
|
self.setWindowIcon(QIcon(self.icon_path+"dafam.png"))
|
||||||
|
self._gemini_model = GEMINI(api_key, "gemini-1.5-flash") #api and name
|
||||||
|
self._definetions()#defs
|
||||||
|
self._icons_png() #fill the graphics
|
||||||
|
self.listen_states()#listen the buttons and events
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
def _icons_png(self):
|
||||||
|
_scene = self._return_scene(self.icon_path+"dafam.png", 300,200)
|
||||||
|
self.ui.graphicsView.setScene(_scene)
|
||||||
|
|
||||||
|
_icon = self._return_icon(self.icon_path+"next_button.png", 32,32)
|
||||||
|
self.ui.home_next_button.setIcon(_icon)
|
||||||
|
|
||||||
|
_icon = self._return_icon(self.icon_path+"back-button.png", 32,32)
|
||||||
|
self.ui.code_back_button.setIcon(_icon)
|
||||||
|
|
||||||
|
_icon = self._return_icon(self.icon_path+"diskette.png", 32,32)
|
||||||
|
self.ui.home_save_button.setIcon(_icon)
|
||||||
|
|
||||||
|
_icon = self._return_icon(self.icon_path+"compile.png", 54,54)
|
||||||
|
self.ui.code_run_button.setIcon(_icon)
|
||||||
|
|
||||||
|
|
||||||
|
def _definetions(self): #definations and self metods are there
|
||||||
|
|
||||||
|
self.model_path = "" #path veriables
|
||||||
|
self.schema = """email: {} passwd: {}""" #list view schema
|
||||||
|
self._accounts = [] #accounts infos
|
||||||
|
self.current_row_list = 0 #current list index
|
||||||
|
self.accounts_dic = {} # accounts infos but in dict
|
||||||
|
|
||||||
|
def _return_scene(self, _path, sizex, sizey):
|
||||||
|
|
||||||
|
image = QPixmap(_path)
|
||||||
|
resized = image.scaled(sizex,sizey)
|
||||||
|
item = QGraphicsPixmapItem(resized)
|
||||||
|
scene = QGraphicsScene()
|
||||||
|
scene.addItem(item)
|
||||||
|
|
||||||
|
return scene
|
||||||
|
|
||||||
|
|
||||||
|
def _return_icon(self, _path, sizex, sizey):
|
||||||
|
image = QPixmap(_path)
|
||||||
|
resized = image.scaled(sizex,sizey)
|
||||||
|
|
||||||
|
return resized
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
def _notif(self, _text): #use for notifications for page code
|
||||||
|
|
||||||
|
self.ui.code_notif.setText(_text)
|
||||||
|
self.ui.code_notif.setVisible(True)
|
||||||
|
QTimer.singleShot(2000,self._notif_clear) # 2000ms
|
||||||
|
|
||||||
|
|
||||||
|
def _notif_clear(self): #notification clear
|
||||||
|
self.ui.code_notif.setVisible(False)
|
||||||
|
|
||||||
|
|
||||||
|
def show_accounts(self): #for add accounts from accounts.txt
|
||||||
|
|
||||||
|
with open(f'{self.model_path}') as file:
|
||||||
|
|
||||||
|
lines = file.readlines()
|
||||||
|
|
||||||
|
for line in lines:
|
||||||
|
if len(lines) == 0:
|
||||||
|
continue
|
||||||
|
|
||||||
|
words = line.split(' : ')
|
||||||
|
words = [str.strip(word) for word in words]
|
||||||
|
|
||||||
|
if len(words) == 2 and len(words[0].split('@')) == 2:
|
||||||
|
|
||||||
|
if words[0].split('@')[1] == 'outlook.de': self.accounts_dic[f'{words[0]}'] = words[1]
|
||||||
|
# {'xxxxx@outlook.de' : 'passwd'}
|
||||||
|
|
||||||
|
_formatted = self.schema.format(words[0], words[1])
|
||||||
|
#'email: xxxx, passwd: xxxxx'
|
||||||
|
|
||||||
|
self._accounts.append(_formatted)
|
||||||
|
|
||||||
|
|
||||||
|
self.ui.home_list.addItems(self._accounts) #fill the list view
|
||||||
|
file.close()
|
||||||
|
|
||||||
|
def listen_states(self):
|
||||||
|
|
||||||
|
|
||||||
|
#---page home ----------
|
||||||
|
self.ui.home_next_button.clicked.connect(lambda: self.ui.stackedWidget.setCurrentIndex(1))
|
||||||
|
self.ui.home_show_account.clicked.connect(self.get_file) #fill the user list
|
||||||
|
self.ui.home_list.itemClicked.connect(self.item_clicked) #####
|
||||||
|
self.ui.home_save_button.clicked.connect(self.save_plain_text)
|
||||||
|
self.ui.home_run.clicked.connect(self.run)#run planned scenario
|
||||||
|
#--- icon
|
||||||
|
|
||||||
|
#----page code -----------
|
||||||
|
|
||||||
|
self.ui.code_back_button.clicked.connect(lambda :self.ui.stackedWidget.setCurrentIndex(0))
|
||||||
|
self.ui.code_file_open.clicked.connect(self.code_file_open)
|
||||||
|
self.ui.code_save_button.clicked.connect(self.code_file_save)
|
||||||
|
self.ui.code_run_button.clicked.connect(self.code_file_run)
|
||||||
|
self.ui.code_generate_button.clicked.connect(self.generate_comment)
|
||||||
|
|
||||||
|
|
||||||
|
#--------------------code run - save - open
|
||||||
|
|
||||||
|
|
||||||
|
#------generate GEMINI
|
||||||
|
|
||||||
|
def generate_comment(self):
|
||||||
|
_text = self.ui.code_prompt.toPlainText()
|
||||||
|
self._gemini_model.set_text(_text)
|
||||||
|
QTimer.singleShot(2000, self.fill_prompt_label)
|
||||||
|
|
||||||
|
def fill_prompt_label(self):
|
||||||
|
_text = self._gemini_model.get_text()
|
||||||
|
self.ui.plainTextEdit.setPlainText(_text)
|
||||||
|
|
||||||
|
#that is planned scenario pls don't change
|
||||||
|
def run(self):
|
||||||
|
|
||||||
|
link = "https://trustpilot.com/users/connect?redirect=%2F&source_cta=header"
|
||||||
|
|
||||||
|
#registed base scanerio
|
||||||
|
|
||||||
|
with ThreadPoolExecutor(max_workers=3) as executor:
|
||||||
|
# Her hesap için iş parçacığı oluştur ve çalıştır
|
||||||
|
for account in self.accounts_dic:
|
||||||
|
logging.info(f"names: {account}")
|
||||||
|
executor.submit(self.run_algorithm, account, link)
|
||||||
|
|
||||||
|
|
||||||
|
def run_algorithm(self, account, link):
|
||||||
|
logging.info(f"process established for {account} ")
|
||||||
|
proxy = "109.94.182.128:4145"
|
||||||
|
prog = Algoritma(link=link, type="chrome" , proxy=proxy)
|
||||||
|
prog['email'] = account
|
||||||
|
prog['passwd'] = self.accounts_dic[account]
|
||||||
|
prog.start()
|
||||||
|
|
||||||
|
#
|
||||||
|
def code_file_run(self):
|
||||||
|
|
||||||
|
self.code_file_save()
|
||||||
|
_text = self.ui.code_code_label.toPlainText()
|
||||||
|
#AST for decode .dfm
|
||||||
|
_ast = AST(_text)
|
||||||
|
#------------ get control about wrote code
|
||||||
|
_ast.decode()
|
||||||
|
print(_ast.base_code)
|
||||||
|
exec(_ast.base_code)
|
||||||
|
#----------------
|
||||||
|
|
||||||
|
def code_file_save(self):
|
||||||
|
try:
|
||||||
|
|
||||||
|
with open(self.model_path, "w") as _file:
|
||||||
|
|
||||||
|
_text = self.ui.code_code_label.toPlainText()
|
||||||
|
_file.write(_text)
|
||||||
|
self._notif("kaydedildi..")
|
||||||
|
|
||||||
|
except Exception as e:
|
||||||
|
logger.warning(f"{e}")
|
||||||
|
self._notif("bir dosya seçin")
|
||||||
|
|
||||||
|
def code_file_open(self):
|
||||||
|
|
||||||
|
self.model_path , _ = QFileDialog.getOpenFileName(self, 'code dosyası giriniz', '', '*.dfm')
|
||||||
|
|
||||||
|
with open(self.model_path) as file:
|
||||||
|
|
||||||
|
_read = file.read()
|
||||||
|
self.ui.code_code_label.setPlainText(_read)
|
||||||
|
file.close()
|
||||||
|
#---------------------------------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
|
||||||
|
def save_plain_text(self):
|
||||||
|
_text = self.ui.home_plain_text.toPlainText()
|
||||||
|
|
||||||
|
try:
|
||||||
|
|
||||||
|
self._accounts.pop(self.current_row_list)
|
||||||
|
self._accounts.insert(self.current_row_list, _text)
|
||||||
|
self.ui.home_list.clear()
|
||||||
|
self.ui.home_list.addItems(self._accounts)
|
||||||
|
|
||||||
|
except Exception as e:
|
||||||
|
logger.warning(f"{e}")
|
||||||
|
self._notif(f'save işlemi gerçekleşmedi.')
|
||||||
|
|
||||||
|
|
||||||
|
def item_clicked(self, item):
|
||||||
|
_text = item.text()
|
||||||
|
self.current_row_list = self.ui.home_list.currentRow()
|
||||||
|
self.ui.home_plain_text.setPlainText(_text)
|
||||||
|
|
||||||
|
def get_file(self):
|
||||||
|
self.model_path, _ = QFileDialog.getOpenFileName(self, "bir kullanıcı dosyası seçin", ".txt")
|
||||||
|
|
||||||
|
self.show_accounts()
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
app = QApplication(sys.argv)
|
||||||
|
widget = MainWindow()
|
||||||
|
widget.show()
|
||||||
|
sys.exit(app.exec())
|
||||||
5
take_info.py
Normal file
5
take_info.py
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
""" this page created by Bedir Karaabali 05.08.2024
|
||||||
|
just support outlook.de accounts"""
|
||||||
|
|
||||||
|
import os
|
||||||
|
|
||||||
Loading…
Reference in New Issue
Block a user