Advertisement
Guest User

literotica csv viewing UI

a guest
Sep 23rd, 2022
58
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 12.78 KB | None | 0 0
  1. # -*- coding: utf-8 -*-
  2.  
  3. # Form implementation generated from reading ui file 'litero_reader.ui'
  4. #
  5. # Created by: PyQt5 UI code generator 5.15.6
  6. #
  7. # WARNING: Any manual changes made to this file will be lost when pyuic5 is
  8. # run again.  Do not edit this file unless you know what you are doing.
  9.  
  10.  
  11. from PyQt5 import QtCore, QtGui, QtWidgets
  12. from PyQt5 import *
  13. from PyQt5.QtCore import QCoreApplication, QObject
  14. from PyQt5.QtCore import *
  15. from PyQt5.QtWidgets import *
  16. import pandas as pd
  17. import sys
  18. import re
  19.  
  20.  
  21. class Ui_MainWindow(object):
  22.     def setupUi(self, MainWindow):
  23.         MainWindow.setObjectName("MainWindow")
  24.         MainWindow.resize(978, 684)
  25.         self.centralwidget = QtWidgets.QWidget(MainWindow)
  26.         self.centralwidget.setObjectName("centralwidget")
  27.         self.gridLayout = QtWidgets.QGridLayout(self.centralwidget)
  28.         self.gridLayout.setObjectName("gridLayout")
  29.         self.table_browse = QtWidgets.QTableWidget(self.centralwidget)
  30.         self.table_browse.setEditTriggers(QtWidgets.QAbstractItemView.NoEditTriggers)
  31.         self.table_browse.setSelectionMode(QtWidgets.QAbstractItemView.SingleSelection)
  32.         self.table_browse.setVerticalScrollMode(QtWidgets.QAbstractItemView.ScrollPerPixel)
  33.         self.table_browse.setHorizontalScrollMode(QtWidgets.QAbstractItemView.ScrollPerPixel)
  34.         self.table_browse.setObjectName("table_browse")
  35.         self.table_browse.setColumnCount(4)
  36.         self.table_browse.setRowCount(0)
  37.         item = QtWidgets.QTableWidgetItem()
  38.         font = QtGui.QFont()
  39.         font.setPointSize(9)
  40.         item.setFont(font)
  41.         self.table_browse.setHorizontalHeaderItem(0, item)
  42.         item = QtWidgets.QTableWidgetItem()
  43.         font = QtGui.QFont()
  44.         font.setPointSize(9)
  45.         item.setFont(font)
  46.         self.table_browse.setHorizontalHeaderItem(1, item)
  47.         item = QtWidgets.QTableWidgetItem()
  48.         font = QtGui.QFont()
  49.         font.setPointSize(9)
  50.         item.setFont(font)
  51.         self.table_browse.setHorizontalHeaderItem(2, item)
  52.         item = QtWidgets.QTableWidgetItem()
  53.         font = QtGui.QFont()
  54.         font.setPointSize(9)
  55.         item.setFont(font)
  56.         self.table_browse.setHorizontalHeaderItem(3, item)
  57.         self.gridLayout.addWidget(self.table_browse, 0, 0, 1, 1)
  58.         self.gridLayout_2 = QtWidgets.QGridLayout()
  59.         self.gridLayout_2.setContentsMargins(10, -1, 10, 10)
  60.         self.gridLayout_2.setObjectName("gridLayout_2")
  61.         self.label_2 = QtWidgets.QLabel(self.centralwidget)
  62.         self.label_2.setObjectName("label_2")
  63.         self.gridLayout_2.addWidget(self.label_2, 0, 0, 1, 1)
  64.         self.doubleSpinBox_rating = QtWidgets.QDoubleSpinBox(self.centralwidget)
  65.         self.doubleSpinBox_rating.setEnabled(False)
  66.         self.doubleSpinBox_rating.setFrame(True)
  67.         self.doubleSpinBox_rating.setMaximum(5.0)
  68.         self.doubleSpinBox_rating.setSingleStep(0.1)
  69.         self.doubleSpinBox_rating.setObjectName("doubleSpinBox_rating")
  70.         self.gridLayout_2.addWidget(self.doubleSpinBox_rating, 6, 1, 1, 1)
  71.         self.checkBox_story = QtWidgets.QCheckBox(self.centralwidget)
  72.         self.checkBox_story.setObjectName("checkBox_story")
  73.         self.gridLayout_2.addWidget(self.checkBox_story, 4, 0, 1, 1)
  74.         self.checkBox_rating = QtWidgets.QCheckBox(self.centralwidget)
  75.         self.checkBox_rating.setChecked(False)
  76.         self.checkBox_rating.setObjectName("checkBox_rating")
  77.         self.gridLayout_2.addWidget(self.checkBox_rating, 6, 0, 1, 1)
  78.         self.pushButton_search = QtWidgets.QPushButton(self.centralwidget)
  79.         self.pushButton_search.setObjectName("pushButton_search")
  80.         self.gridLayout_2.addWidget(self.pushButton_search, 6, 2, 1, 1)
  81.         self.pushButton_show_all = QtWidgets.QPushButton(self.centralwidget)
  82.         self.pushButton_show_all.setObjectName("pushButton_show_all")
  83.         self.gridLayout_2.addWidget(self.pushButton_show_all, 4, 2, 1, 1)
  84.         self.checkBox_title = QtWidgets.QCheckBox(self.centralwidget)
  85.         self.checkBox_title.setObjectName("checkBox_title")
  86.         self.gridLayout_2.addWidget(self.checkBox_title, 3, 0, 1, 1)
  87.         self.checkBox_descr = QtWidgets.QCheckBox(self.centralwidget)
  88.         self.checkBox_descr.setObjectName("checkBox_descr")
  89.         self.gridLayout_2.addWidget(self.checkBox_descr, 3, 1, 1, 1)
  90.         self.pushButton_rating_sort = QtWidgets.QPushButton(self.centralwidget)
  91.         self.pushButton_rating_sort.setObjectName("pushButton_rating_sort")
  92.         self.gridLayout_2.addWidget(self.pushButton_rating_sort, 3, 2, 1, 1)
  93.         self.lineEdit_term = QtWidgets.QLineEdit(self.centralwidget)
  94.         self.lineEdit_term.setObjectName("lineEdit_term")
  95.         self.gridLayout_2.addWidget(self.lineEdit_term, 0, 1, 1, 2)
  96.         self.radioButton_search_master = QtWidgets.QRadioButton(self.centralwidget)
  97.         self.radioButton_search_master.setChecked(False)
  98.         self.radioButton_search_master.setObjectName("radioButton_search_master")
  99.         self.gridLayout_2.addWidget(self.radioButton_search_master, 5, 0, 1, 1)
  100.         self.radioButton_search_cursel = QtWidgets.QRadioButton(self.centralwidget)
  101.         self.radioButton_search_cursel.setChecked(True)
  102.         self.radioButton_search_cursel.setObjectName("radioButton_search_cursel")
  103.         self.gridLayout_2.addWidget(self.radioButton_search_cursel, 5, 1, 1, 1)
  104.         self.checkBox_multiple_tags = QtWidgets.QCheckBox(self.centralwidget)
  105.         self.checkBox_multiple_tags.setObjectName("checkBox_multiple_tags")
  106.         self.gridLayout_2.addWidget(self.checkBox_multiple_tags, 4, 1, 1, 1)
  107.         self.gridLayout.addLayout(self.gridLayout_2, 1, 0, 1, 1)
  108.         self.textBrowser = QtWidgets.QTextBrowser(self.centralwidget)
  109.         self.textBrowser.setObjectName("textBrowser")
  110.         self.gridLayout.addWidget(self.textBrowser, 0, 1, 2, 1)
  111.         MainWindow.setCentralWidget(self.centralwidget)
  112.         self.retranslateUi(MainWindow)
  113.         QtCore.QMetaObject.connectSlotsByName(MainWindow)
  114.  
  115.         self.data = pd.read_csv(sys.argv[1])
  116.         self.cur_data = self.data
  117.         self.rating_order = False
  118.         # self.show()
  119.         self.setup()
  120.  
  121.     def retranslateUi(self, MainWindow):
  122.         _translate = QtCore.QCoreApplication.translate
  123.         MainWindow.setWindowTitle(_translate("MainWindow", "BenisStiffer"))
  124.         item = self.table_browse.horizontalHeaderItem(0)
  125.         item.setText(_translate("MainWindow", "Title"))
  126.         item = self.table_browse.horizontalHeaderItem(1)
  127.         item.setText(_translate("MainWindow", "Descr"))
  128.         item = self.table_browse.horizontalHeaderItem(2)
  129.         item.setText(_translate("MainWindow", "Rating"))
  130.         item = self.table_browse.horizontalHeaderItem(3)
  131.         item.setText(_translate("MainWindow", "Hot?"))
  132.         self.label_2.setText(_translate("MainWindow", "Search term"))
  133.         self.checkBox_story.setText(_translate("MainWindow", "Search in story"))
  134.         self.checkBox_rating.setText(_translate("MainWindow", "Enable rating cutoff"))
  135.         self.pushButton_search.setText(_translate("MainWindow", "Search"))
  136.         self.pushButton_show_all.setText(_translate("MainWindow", "Show all"))
  137.         self.checkBox_title.setText(_translate("MainWindow", "Search in Title"))
  138.         self.checkBox_descr.setText(_translate("MainWindow", "Search in Description"))
  139.         self.pushButton_rating_sort.setText(_translate("MainWindow", "Sort by\n"
  140. "rating"))
  141.         self.radioButton_search_master.setText(_translate("MainWindow", "Search Master"))
  142.         self.radioButton_search_cursel.setText(_translate("MainWindow", "Search Current Selection"))
  143.         self.checkBox_multiple_tags.setText(_translate("MainWindow", "Multiple tags [tag,tag]"))
  144.  
  145.     def table_cell_press(self, x, y):
  146.         self.textBrowser.setText('<p style="font-size:30px;">{}</p>'.format(self.cur_data['story_arr'][x]))
  147.    
  148.     def setup(self):
  149.         #connecting all buttons and stuff
  150.         self.table_browse.cellPressed.connect(self.table_cell_press)
  151.         self.pushButton_rating_sort.clicked.connect(self.sort_by_rating_func)
  152.         self.pushButton_show_all.clicked.connect(self.show_all_func)
  153.         self.checkBox_rating.clicked.connect(self.rating_cutoff_func)
  154.         self.pushButton_search.clicked.connect(self.search_master_func)
  155.         #adding all rows intially
  156.         self.add_dataframe(self.data)
  157.  
  158.     def rating_cutoff_func(self):
  159.         if(self.checkBox_rating.isChecked()):
  160.             self.doubleSpinBox_rating.setEnabled(True)
  161.         else:
  162.             self.doubleSpinBox_rating.setEnabled(False)
  163.        
  164.  
  165.     def sort_by_rating_func(self):
  166.         print('Rating {}'.format(str(self.rating_order)))
  167.         self.remove_all_rows()
  168.         temp_data = self.cur_data.sort_values(['rating_arr'], ascending=self.rating_order).reset_index(drop=True)
  169.         self.rating_order = False if(self.rating_order) else True
  170.         self.add_dataframe(temp_data)
  171.         self.cur_data = temp_data
  172.  
  173.     def search_master_func(self):
  174.         if(self.radioButton_search_master.isChecked()):
  175.             temp_data = self.data
  176.         elif(self.radioButton_search_cursel.isChecked()):
  177.             temp_data = self.cur_data
  178.  
  179.         if(self.checkBox_multiple_tags.isChecked()):
  180.             search_string = self.lineEdit_term.text().split(',')
  181.         else:
  182.             search_string = self.lineEdit_term.text()
  183.  
  184.         print('Search button {}'.format(search_string))
  185.         if(self.checkBox_title.isChecked()):
  186.             if(type(search_string) == type(str())):
  187.                 temp_data = temp_data[temp_data['title_arr'].str.contains(search_string, flags=re.IGNORECASE)].reset_index(drop=True)
  188.             elif(type(search_string) == type(list())):
  189.                 for i in search_string:
  190.                     temp_data = temp_data[temp_data['title_arr'].str.contains(i, flags=re.IGNORECASE)].reset_index(drop=True)
  191.         if(self.checkBox_descr.isChecked()):
  192.             if(type(search_string) == type(str())):
  193.                 temp_data = temp_data[temp_data['descr_arr'].str.contains(search_string, flags=re.IGNORECASE)].reset_index(drop=True)
  194.             elif(type(search_string) == type(list())):
  195.                 for i in search_string:
  196.                     temp_data = temp_data[temp_data['descr_arr'].str.contains(i, flags=re.IGNORECASE)].reset_index(drop=True)
  197.         if(self.checkBox_story.isChecked()):
  198.             if(type(search_string) == type(str())):
  199.                 temp_data = temp_data[temp_data['story_arr'].str.contains(search_string, flags=re.IGNORECASE)].reset_index(drop=True)
  200.             elif(type(search_string) == type(list())):
  201.                 for i in search_string:
  202.                     temp_data = temp_data[temp_data['story_arr'].str.contains(i, flags=re.IGNORECASE)].reset_index(drop=True)
  203.         if(self.checkBox_rating.isChecked()):
  204.             temp_data = temp_data[temp_data['rating_arr'] >= self.doubleSpinBox_rating.value()].reset_index(drop=True)
  205.        
  206.         self.cur_data = temp_data
  207.         self.remove_all_rows()
  208.         self.add_dataframe(temp_data)
  209.    
  210.     def show_all_func(self):
  211.         self.remove_all_rows()
  212.         self.add_dataframe(self.data)
  213.         self.cur_data = self.data
  214.  
  215.     def remove_all_rows(self):
  216.         for _ in range(self.table_browse.rowCount()):
  217.             self.table_browse.removeRow(0)
  218.    
  219.     def add_dataframe(self, df):
  220.         self.row_count = 0
  221.         for i in range(0, len(df)):
  222.             try:
  223.                 self.table_browse.insertRow(self.row_count)
  224.                 self.table_browse.setItem(self.row_count, 0, QtWidgets.QTableWidgetItem(df['title_arr'][self.row_count]))
  225.                 self.table_browse.setItem(self.row_count, 1, QtWidgets.QTableWidgetItem(df['descr_arr'][self.row_count]))
  226.                 self.table_browse.setItem(self.row_count, 2, QtWidgets.QTableWidgetItem(str(df['rating_arr'][self.row_count])))
  227.                 self.table_browse.setItem(self.row_count, 3, QtWidgets.QTableWidgetItem('HOT' if(df['hot_arr'][self.row_count]) else ' '))
  228.                 self.row_count += 1
  229.             except Exception as e:
  230.                 self.table_browse.setItem(self.row_count, 0, QtWidgets.QTableWidgetItem('ERROR'))
  231.                 self.table_browse.setItem(self.row_count, 1, QtWidgets.QTableWidgetItem('ERROR'))
  232.                 self.table_browse.setItem(self.row_count, 2, QtWidgets.QTableWidgetItem('ERROR'))
  233.                 self.table_browse.setItem(self.row_count, 3, QtWidgets.QTableWidgetItem('ERROR'))
  234.                 self.row_count += 1
  235.                 print(self.row_count)
  236.                 print(e)
  237.                 continue        
  238.  
  239.  
  240. if __name__ == "__main__":
  241.     import sys
  242.     app = QtWidgets.QApplication(sys.argv)
  243.     MainWindow = QtWidgets.QMainWindow()
  244.     ui = Ui_MainWindow()
  245.     ui.setupUi(MainWindow)
  246.     MainWindow.show()
  247.     sys.exit(app.exec_())
  248.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement