· 6 years ago · Nov 24, 2019, 10:04 PM
1# -*- coding: utf-8 -*-
2
3from PyQt5 import QtCore, QtGui, QtWidgets, QtSql
4
5
6# Database Schema
7def new_database(title, episode, size, link, image, url, last_episode, time, description, status, premiere):
8 db = QtSql.QSqlDatabase.addDatabase('QSQLITE')
9 db.setDatabaseName("TodayTvSeries.db")
10 db.setUserName("ER40R")
11 db.setPassword("230798")
12 db.open()
13
14 query = QtSql.QSqlQuery()
15 result = QtSql.QSqlQueryModel()
16 query.exec_(''' CREATE TABLE IF NOT EXISTS "main" (
17 "ID" INTEGER,
18 "Name" TEXT,
19 "Link" TEXT,
20 "Last Episode" TEXT,
21 "Database Episode" TEXT,
22 "Schedule" TEXT,
23 "Description" TEXT,
24 "Image" TEXT,
25 "Local Image" TEXT,
26 "Running" BLOB,
27 "Premiere" TEXT,
28 PRIMARY KEY("ID")
29 );''')
30 series = """CREATE TABLE IF NOT EXISTS "{}" (
31 "ID" INTEGER,
32 "Episode" TEXT NOT NULL,
33 "Size" TEXT NOT NULL,
34 "Link" INTEGER NOT NULL UNIQUE,
35 PRIMARY KEY("ID")
36 );""".format(title)
37 query.exec_(series)
38
39 for number, mb, urls in zip(episode, size, link):
40 emp = '''INSERT INTO "{0}" ("Episode","Size","Link")
41 VALUES({1},{2},{3});'''.format(title,
42 number.getText(), mb.getText(), urls.get('href'))
43 query.exec_(emp)
44
45 images = requests.get(image)
46 with open(f"images\\{title}.jpg", 'wb') as writer:
47 writer.write(images.content)
48
49 local_image = f"images\\{title}.jpg"
50 result.setQuery('SELECT Episode FROM "{}";'.format(title))
51 local_episode = result.record(0).value("Episode")
52
53 if status == "Running":
54 running = True
55 else:
56 running = False
57
58 mainly = f'''INSERT INTO "main"(
59 "Name","Link",
60 "Last Episode","Database Episode",
61 "Schedule","Description","Image","Local Image",
62 "Running","Premiere")
63 VALUES({title},{url},{last_episode},{local_episode},{time},{description},{image},{local_image},
64 {running},{premiere})'''
65 query.exec_(mainly)
66 db.commit()
67 db.close()
68
69
70def database_tables():
71 db = QtSql.QSqlDatabase.addDatabase('QSQLITE')
72 db.setDatabaseName(r"E:\Today\data\series.db")
73 db.open("ER40R", "230798")
74
75 return db.tables()[1:]
76
77
78def UUID():
79 with winreg.OpenKey(winreg.HKEY_LOCAL_MACHINE, r"SOFTWARE\Classes\Wow6432Node\TypeLib") as location:
80 for i in range(0, winreg.QueryInfoKey(location)[0]):
81 try:
82 sub = winreg.EnumKey(location, i)
83 res = winreg.OpenKey(location, sub)
84 subs = winreg.EnumKey(res, 0)
85 result = winreg.OpenKey(res, subs)
86 if winreg.QueryValue(result, "") == "IDMan 1.0 Type Library":
87 return sub
88 except OSError:
89 continue
90
91
92def close():
93 sys.exit()
94
95
96def Settings(theme=False):
97 default = {'Theme': []}
98 default['Theme'].append({
99 "Dark": False
100 })
101 if not os.path.exists('settings.JSON'):
102 with open('settings.JSON', 'w+') as handle:
103 json.dump(default, handle)
104 else:
105 with open('settings.JSON', 'r') as read:
106 reads = json.load(read)
107 valid = reads['Theme'][0]['Dark']
108 if not valid == theme:
109 with open('settings.JSON', 'w+') as handle:
110 default['Theme'][0]['Dark'] = theme
111 json.dump(default, handle)
112
113
114def Theme():
115 if os.path.exists('settings.JSON'):
116 with open('settings.JSON', 'r') as read:
117 reads = json.load(read)
118 valid = reads['Theme'][0]['Dark']
119 if valid is True:
120 Dark_Theme()
121 else:
122 Light_Theme()
123
124
125def idms():
126 setting = QtCore.QSettings()
127 key = setting.value('settings/UUID', 'None')
128 if key != 'None':
129 return key
130 else:
131 setting.setValue('settings/UUID', UUID())
132 setting.sync()
133 return UUID()
134
135
136def Dark_Theme():
137 palette = QtGui.QPalette()
138 palette.setColor(QtGui.QPalette.Window, QtGui.QColor(53, 53, 53))
139 palette.setColor(QtGui.QPalette.WindowText, QtCore.Qt.white)
140 palette.setColor(QtGui.QPalette.Base, QtGui.QColor(25, 25, 25))
141 palette.setColor(QtGui.QPalette.AlternateBase, QtGui.QColor(53, 53, 53))
142 palette.setColor(QtGui.QPalette.ToolTipBase, QtCore.Qt.white)
143 palette.setColor(QtGui.QPalette.ToolTipText, QtCore.Qt.white)
144 palette.setColor(QtGui.QPalette.Text, QtCore.Qt.white)
145 palette.setColor(QtGui.QPalette.Button, QtGui.QColor(53, 53, 53))
146 palette.setColor(QtGui.QPalette.ButtonText, QtCore.Qt.white)
147 palette.setColor(QtGui.QPalette.Link, QtGui.QColor(42, 130, 218))
148 palette.setColor(QtGui.QPalette.Highlight, QtGui.QColor(42, 138, 218))
149 app.setPalette(palette)
150 Settings(True)
151
152
153def Light_Theme():
154 palette = QtGui.QPalette()
155 palette.setColor(QtGui.QPalette.Window, QtGui.QColor(237, 237, 237))
156 palette.setColor(QtGui.QPalette.WindowText, QtCore.Qt.black)
157 palette.setColor(QtGui.QPalette.Base, QtGui.QColor(255, 255, 255))
158 palette.setColor(QtGui.QPalette.AlternateBase, QtGui.QColor(237, 237, 237))
159 palette.setColor(QtGui.QPalette.ToolTipBase, QtCore.Qt.black)
160 palette.setColor(QtGui.QPalette.ToolTipText, QtCore.Qt.black)
161 palette.setColor(QtGui.QPalette.Text, QtCore.Qt.black)
162 palette.setColor(QtGui.QPalette.Button, QtGui.QColor(237, 237, 237))
163 palette.setColor(QtGui.QPalette.ButtonText, QtCore.Qt.black)
164 palette.setColor(QtGui.QPalette.Link, QtGui.QColor(42, 130, 218))
165 palette.setColor(QtGui.QPalette.Highlight, QtGui.QColor(42, 138, 218))
166 app.setPalette(palette)
167 Settings(False)
168
169
170class Ui_MainWindow(object):
171 def __init__(self):
172 self.web_dialog = Ui_Web()
173 self.preferences_dialog = Ui_Dialog()
174 self.actionCheck_for_updates = QtWidgets.QAction(MainWindow)
175 self.actionCalendar = QtWidgets.QDockWidget(MainWindow)
176 self.actionQuit_2 = QtWidgets.QAction(MainWindow)
177 self.actionVersion = QtWidgets.QAction(MainWindow)
178 self.actionAbout = QtWidgets.QAction(MainWindow)
179 self.actionManual = QtWidgets.QAction(MainWindow)
180 self.actionPreferences = QtWidgets.QAction(MainWindow)
181 self.actionQuit = QtWidgets.QAction(MainWindow)
182 self.actionNew = QtWidgets.QAction(MainWindow)
183 self.dockWidgetContents = QtWidgets.QWidget()
184 self.calendarWidget = QtWidgets.QCalendarWidget(self.dockWidgetContents)
185 self.horizontalLayout = QtWidgets.QHBoxLayout(self.dockWidgetContents)
186 self.dockWidget = QtWidgets.QDockWidget("Calendar", MainWindow)
187 self.menubar = QtWidgets.QMenuBar(MainWindow)
188 self.statusbar = QtWidgets.QStatusBar(MainWindow)
189 self.menuWindows = QtWidgets.QMenu(self.menubar)
190 self.menuHelp = QtWidgets.QMenu(self.menubar)
191 self.menuSettings = QtWidgets.QMenu(self.menubar)
192 self.menuFile = QtWidgets.QMenu(self.menubar)
193 self.menuThemes = QtWidgets.QMenu(self.menuWindows)
194 self.actionDark = QtWidgets.QAction(MainWindow)
195 self.actionLight = QtWidgets.QAction(MainWindow)
196 self.centralwidget = QtWidgets.QWidget(MainWindow)
197 self.textBrowser = QtWidgets.QTextBrowser(self.centralwidget)
198 self.page_2 = QtWidgets.QWidget()
199 self.page = QtWidgets.QWidget()
200 self.stackedWidget = QtWidgets.QStackedWidget(self.centralwidget)
201 self.pushButton = QtWidgets.QPushButton(self.centralwidget)
202 self.radioButton_4 = QtWidgets.QRadioButton(self.centralwidget)
203 self.label_3 = QtWidgets.QLabel(self.centralwidget)
204 self.label_4 = QtWidgets.QLabel(self.centralwidget)
205 self.radioButton_2 = QtWidgets.QRadioButton(self.centralwidget)
206 self.radioButton_3 = QtWidgets.QRadioButton(self.centralwidget)
207 self.radioButton = QtWidgets.QRadioButton(self.centralwidget)
208 self.listView = QtWidgets.QListView(self.centralwidget)
209 self.line = QtWidgets.QFrame(self.centralwidget)
210 self.lcdNumber = QtWidgets.QLCDNumber(self.centralwidget)
211 self.spinBox_3 = QtWidgets.QSpinBox(self.centralwidget)
212 self.spinBox_2 = QtWidgets.QSpinBox(self.centralwidget)
213 self.spinBox_4 = QtWidgets.QSpinBox(self.centralwidget)
214 self.spinBox = QtWidgets.QSpinBox(self.centralwidget)
215 self.lineEdit = QtWidgets.QLineEdit(self.centralwidget)
216 self.progressBar = QtWidgets.QProgressBar(self.centralwidget)
217 self.radioButton_5 = QtWidgets.QRadioButton(self.centralwidget)
218 self.label_2 = QtWidgets.QLabel(self.centralwidget)
219 self.label = QtWidgets.QLabel(self.centralwidget)
220 self.gridLayout = QtWidgets.QGridLayout(self.centralwidget)
221 self.model = QtCore.QStringListModel()
222 self.completer = QtWidgets.QCompleter()
223 self.lineEdit_2 = QtWidgets.QLineEdit(self.centralwidget)
224 self.line_2 = QtWidgets.QFrame(self.centralwidget)
225 self.settings = QtCore.QSettings("ER4OR", "Today")
226
227 def setupUi(self, Window):
228 Window.setObjectName("MainWindow")
229 Window.resize(self.settings.value("Size", QtCore.QSize(1036, 391)))
230 icon = QtGui.QIcon()
231 icon.addPixmap(QtGui.QPixmap("/images/orange.jpg"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
232 Window.setWindowIcon(icon)
233 self.centralwidget.setObjectName("centralwidget")
234 self.gridLayout.setObjectName("gridLayout")
235 self.label.setObjectName("label")
236 self.gridLayout.addWidget(self.label, 8, 1, 1, 1)
237 self.label_2.setObjectName("label_2")
238 self.label_4.setObjectName("label_4")
239 self.gridLayout.addWidget(self.label_4, 0, 1, 1, 1)
240 self.label_4.setAlignment(QtCore.Qt.AlignCenter)
241 self.gridLayout.addWidget(self.label_2, 8, 2, 1, 1)
242 self.radioButton_5.setObjectName("radioButton_5")
243 self.gridLayout.addWidget(self.radioButton_5, 12, 2, 1, 1)
244 self.progressBar.setProperty("value", 100)
245 self.progressBar.setObjectName("progressBar")
246 self.gridLayout.addWidget(self.progressBar, 21, 0, 1, 1)
247 self.lineEdit.setClearButtonEnabled(False)
248 self.lineEdit.setObjectName("lineEdit")
249 self.gridLayout.addWidget(self.lineEdit, 0, 0, 1, 1)
250 self.lineEdit_2.setMaximumSize(QtCore.QSize(16777215, 16777215))
251 self.spinBox.setObjectName("spinBox")
252 self.gridLayout.addWidget(self.spinBox, 9, 1, 1, 1)
253 self.spinBox_4.setObjectName("spinBox_4")
254 self.spinBox_4.setEnabled(False)
255 self.gridLayout.addWidget(self.spinBox_4, 11, 2, 1, 1)
256 self.spinBox_2.setObjectName("spinBox_2")
257 self.gridLayout.addWidget(self.spinBox_2, 9, 2, 1, 1)
258 self.spinBox_3.setObjectName("spinBox_3")
259 self.spinBox_3.setEnabled(False)
260 self.gridLayout.addWidget(self.spinBox_3, 11, 1, 1, 1)
261 sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Expanding)
262 sizePolicy.setHorizontalStretch(0)
263 sizePolicy.setVerticalStretch(0)
264 sizePolicy.setHeightForWidth(self.lcdNumber.sizePolicy().hasHeightForWidth())
265 self.lcdNumber.setSizePolicy(sizePolicy)
266 self.lcdNumber.setMaximumSize(QtCore.QSize(16777215, 40))
267 self.lcdNumber.setFrameShape(QtWidgets.QFrame.StyledPanel)
268 self.lcdNumber.setFrameShadow(QtWidgets.QFrame.Sunken)
269 self.lcdNumber.setLineWidth(7)
270 self.lcdNumber.setSmallDecimalPoint(False)
271 self.lcdNumber.setMode(QtWidgets.QLCDNumber.Dec)
272 self.lcdNumber.setSegmentStyle(QtWidgets.QLCDNumber.Filled)
273 self.lcdNumber.setProperty("intValue", 65)
274 self.lcdNumber.setObjectName("lcdNumber")
275 self.gridLayout.addWidget(self.lcdNumber, 1, 0, 1, 1)
276 self.line.setFrameShape(QtWidgets.QFrame.HLine)
277 self.line.setFrameShadow(QtWidgets.QFrame.Sunken)
278 self.line.setObjectName("line")
279 self.gridLayout.addWidget(self.line, 19, 0, 1, 1)
280 self.radioButton_3.setObjectName("radioButton_3")
281 self.gridLayout.addWidget(self.radioButton_3, 13, 1, 1, 2)
282 self.radioButton.setMaximumSize(QtCore.QSize(130, 16777215))
283 self.radioButton.setObjectName("radioButton")
284 self.gridLayout.addWidget(self.radioButton, 15, 1, 1, 1)
285 self.listView.setObjectName("listView")
286 self.gridLayout.addWidget(self.listView, 7, 1, 1, 2)
287 self.radioButton_2.setObjectName("radioButton_2")
288 self.gridLayout.addWidget(self.radioButton_2, 15, 2, 1, 1)
289 self.label_3.setObjectName("label_3")
290 self.gridLayout.addWidget(self.label_3, 10, 1, 1, 1)
291 self.radioButton_4.setObjectName("radioButton_4")
292 self.gridLayout.addWidget(self.radioButton_4, 12, 1, 1, 1)
293 sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.MinimumExpanding, QtWidgets.QSizePolicy.Fixed)
294 sizePolicy.setHorizontalStretch(0)
295 sizePolicy.setVerticalStretch(0)
296 sizePolicy.setHeightForWidth(self.pushButton.sizePolicy().hasHeightForWidth())
297 self.pushButton.setSizePolicy(sizePolicy)
298 self.pushButton.setObjectName("pushButton")
299 self.gridLayout.addWidget(self.pushButton, 21, 1, 1, 2)
300 sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Expanding)
301 sizePolicy.setHorizontalStretch(0)
302 sizePolicy.setVerticalStretch(0)
303 sizePolicy.setHeightForWidth(self.stackedWidget.sizePolicy().hasHeightForWidth())
304 self.stackedWidget.setSizePolicy(sizePolicy)
305 self.stackedWidget.setMaximumSize(QtCore.QSize(16777215, 16777215))
306 self.stackedWidget.setObjectName("stackedWidget")
307 self.page.setObjectName("page")
308 self.stackedWidget.addWidget(self.page)
309 self.page_2.setObjectName("page_2")
310 self.stackedWidget.addWidget(self.page_2)
311 self.gridLayout.addWidget(self.stackedWidget, 7, 0, 9, 1)
312 self.textBrowser.setMaximumSize(QtCore.QSize(16777215, 30))
313 font = QtGui.QFont()
314 font.setFamily("Eras Medium ITC")
315 font.setPointSize(11)
316 self.textBrowser.setFont(font)
317 self.textBrowser.setFocusPolicy(QtCore.Qt.StrongFocus)
318 self.textBrowser.setContextMenuPolicy(QtCore.Qt.DefaultContextMenu)
319 self.textBrowser.setAutoFillBackground(False)
320 self.textBrowser.setFrameShape(QtWidgets.QFrame.WinPanel)
321 self.textBrowser.setFrameShadow(QtWidgets.QFrame.Sunken)
322 self.textBrowser.setLineWidth(4)
323 self.textBrowser.setObjectName("textBrowser")
324 self.gridLayout.addWidget(self.textBrowser, 1, 1, 1, 2)
325 Window.setCentralWidget(self.centralwidget)
326 self.menubar.setGeometry(QtCore.QRect(0, 0, 1036, 21))
327 self.menubar.setObjectName("menubar")
328 self.menuFile.setObjectName("menuFile")
329 self.menuThemes.setObjectName("menuThemes")
330 self.menuSettings.setObjectName("menuSettings")
331 self.menuHelp.setObjectName("menuHelp")
332 self.menuWindows.setObjectName("menuWindows")
333 Window.setMenuBar(self.menubar)
334 self.statusbar.setObjectName("statusbar")
335 Window.setStatusBar(self.statusbar)
336 self.dockWidget.setObjectName("dockWidget")
337 self.dockWidgetContents.setObjectName("dockWidgetContents")
338 self.horizontalLayout.setObjectName("horizontalLayout")
339 self.calendarWidget.setObjectName("calendarWidget")
340 self.horizontalLayout.addWidget(self.calendarWidget)
341 self.dockWidget.setWidget(self.dockWidgetContents)
342 Window.addDockWidget(QtCore.Qt.DockWidgetArea(1), self.dockWidget)
343 self.actionNew.setObjectName("actionNew")
344 self.actionQuit.setObjectName("actionQuit")
345 self.actionPreferences.setObjectName("actionPreferences")
346 self.actionManual.setObjectName("actionManual")
347 self.actionAbout.setObjectName("actionAbout")
348 self.actionVersion.setObjectName("actionVersion")
349 self.actionQuit_2.setObjectName("actionQuit_2")
350 self.actionCalendar.setObjectName("actionCalendar")
351 self.actionCheck_for_updates.setEnabled(False)
352 self.actionCheck_for_updates.setObjectName("actionCheck_for_updates")
353 self.menuFile.addAction(self.actionNew)
354 self.menuFile.addAction(self.actionQuit)
355 self.menuSettings.addAction(self.actionPreferences)
356 self.menuSettings.addSeparator()
357 self.menuSettings.addAction(self.actionCheck_for_updates)
358 self.menuHelp.addSeparator()
359 self.menuHelp.addAction(self.actionManual)
360 self.menuHelp.addAction(self.actionAbout)
361 self.menuHelp.addAction(self.actionVersion)
362 self.menuWindows.addAction(self.dockWidget.toggleViewAction())
363 self.menuWindows.addSeparator()
364 self.menuWindows.addAction(self.menuThemes.menuAction())
365 self.menubar.addAction(self.menuFile.menuAction())
366 self.menubar.addAction(self.menuWindows.menuAction())
367 self.menubar.addAction(self.menuSettings.menuAction())
368 self.menubar.addAction(self.menuHelp.menuAction())
369 self.actionLight.setObjectName("actionLight")
370 self.actionDark.setObjectName("actionDark")
371 self.menuThemes.addSeparator()
372 self.menuThemes.addAction(self.actionDark)
373 self.menuThemes.addAction(self.actionLight)
374 self.retranslateUi(Window)
375 QtCore.QMetaObject.connectSlotsByName(Window)
376 self.model.setStringList(database_tables())
377 self.completer.setModel(self.model)
378 self.lineEdit.setCompleter(self.completer)
379 self.lineEdit_2.setCursorMoveStyle(QtCore.Qt.VisualMoveStyle)
380 self.lineEdit_2.setClearButtonEnabled(True)
381 self.lineEdit_2.setObjectName("lineEdit_2")
382 self.gridLayout.addWidget(self.lineEdit_2, 0, 2, 1, 1)
383 self.line_2.setFrameShape(QtWidgets.QFrame.VLine)
384 self.line_2.setFrameShadow(QtWidgets.QFrame.Sunken)
385 self.line_2.setObjectName("line_2")
386 self.gridLayout.addWidget(self.line_2, 0, 1, 1, 1)
387 self.settings.beginGroup("main_window")
388
389 def retranslateUi(self, Window):
390 _translate = QtCore.QCoreApplication.translate
391 Window.setWindowTitle(_translate("MainWindow", "TodaytvSeries"))
392 self.label.setText(_translate("MainWindow", "Season"))
393 self.label_2.setText(_translate("MainWindow", "Episode"))
394 self.radioButton_5.setText(_translate("MainWindow", "From And To Specifics"))
395 self.lineEdit.setToolTip(_translate("MainWindow", "<html><head/><body><p>Search The Web</p></body></html>"))
396 self.lineEdit.setPlaceholderText(_translate("MainWindow", "Search"))
397 self.lcdNumber.setToolTip(_translate("MainWindow", "<html><head/><body><p>Time Till Next "
398 "Release</p></body></html>"))
399 self.spinBox_3.setPrefix(_translate("MainWindow", "Season "))
400 self.spinBox_4.setPrefix(_translate("MainWindow", "Episode "))
401 self.label_4.setText(_translate("MainWindow", "Web Search Bar"))
402 self.radioButton_3.setText(_translate("MainWindow", "From Specific Episode (current season ONLY)"))
403 self.radioButton.setText(_translate("MainWindow", "From Specific Season"))
404 self.radioButton_2.setText(_translate("MainWindow", "From a Specific Point in the Series"))
405 self.label_3.setText(_translate("MainWindow", "To"))
406 self.radioButton_4.setText(_translate("MainWindow", "One Specific Episode"))
407 self.pushButton.setText(_translate("MainWindow", "Send to IDM"))
408 self.textBrowser.setToolTip(_translate("MainWindow", "Current Episode"))
409 self.menuFile.setTitle(_translate("MainWindow", "File"))
410 self.menuSettings.setTitle(_translate("MainWindow", "Settings"))
411 self.menuHelp.setTitle(_translate("MainWindow", "Help"))
412 self.menuWindows.setTitle(_translate("MainWindow", "Windows"))
413 self.menuThemes.setTitle(_translate("MainWindow", "Themes"))
414 self.actionNew.setText(_translate("MainWindow", "New"))
415 self.actionNew.setShortcut("Ctrl+N")
416 self.actionNew.setStatusTip('Add File')
417 self.actionQuit.setText(_translate("MainWindow", "Quit"))
418 self.actionQuit.setShortcut("Ctrl+Q")
419 self.actionQuit.triggered.connect(close)
420 self.actionPreferences.setText(_translate("MainWindow", "Preferences"))
421 self.actionManual.setText(_translate("MainWindow", "Manual"))
422 self.actionAbout.setText(_translate("MainWindow", "About Developer"))
423 self.actionVersion.setText(_translate("MainWindow", "Version"))
424 self.actionQuit_2.setText(_translate("MainWindow", "Open"))
425 self.actionCheck_for_updates.setText(_translate("MainWindow", "Check for updates."))
426 self.actionDark.setText(_translate("MainWindow", "Dark"))
427 self.actionDark.triggered.connect(Dark_Theme)
428 self.actionLight.setText(_translate("MainWindow", "Light"))
429 self.actionLight.triggered.connect(Light_Theme)
430 self.lineEdit_2.setPlaceholderText(_translate("MainWindow", "Web Search"))
431 self.actionPreferences.triggered.connect(lambda: self.preferences())
432 self.lineEdit_2.returnPressed.connect(lambda: self.web())
433 self.radioButton.clicked.connect(lambda: self.check())
434 self.radioButton_2.clicked.connect(lambda: self.check())
435 self.radioButton_3.clicked.connect(lambda: self.check())
436 self.radioButton_4.clicked.connect(lambda: self.check())
437 self.radioButton_5.clicked.connect(lambda: self.check())
438
439 def preferences(self):
440 self.preferences_dialog.setupUi()
441 Dialog.exec_()
442
443 def web(self):
444 search = self.lineEdit_2.text()
445 self.web_dialog.setupUi(Web)
446 self.web_dialog.get_search_web_data(search)
447 Web.exec_()
448
449 def check(self):
450 if self.radioButton_5.isChecked():
451 self.spinBox_4.setEnabled(True)
452 self.spinBox_3.setEnabled(True)
453 else:
454 self.spinBox_4.setEnabled(False)
455 self.spinBox_3.setEnabled(False)
456
457
458class Ui_Dialog(QtWidgets.QDialog):
459 def __init__(self, parent=None):
460 super(Ui_Dialog, self).__init__(parent)
461 self.buttonBox = QtWidgets.QDialogButtonBox(Dialog)
462 self.tab_2 = QtWidgets.QWidget()
463 self.tab = QtWidgets.QWidget()
464 self.label_7 = QtWidgets.QLabel(self.tab)
465 self.lineEdit_7 = QtWidgets.QLineEdit(self.tab)
466 self.lineEdit_4 = QtWidgets.QLineEdit(self.tab)
467 self.toolButton = QtWidgets.QToolButton(self.tab)
468 self.label_3 = QtWidgets.QLabel(self.tab)
469 self.label_2 = QtWidgets.QLabel(self.tab)
470 self.pushButton = QtWidgets.QPushButton(self.tab)
471 self.label_4 = QtWidgets.QLabel(self.tab)
472 self.label_6 = QtWidgets.QLabel(self.tab)
473 self.label_5 = QtWidgets.QLabel(self.tab)
474 self.lineEdit_5 = QtWidgets.QLineEdit(self.tab)
475 self.lineEdit_6 = QtWidgets.QLineEdit(self.tab)
476 self.lineEdit_3 = QtWidgets.QLineEdit(self.tab)
477 self.toolButton_2 = QtWidgets.QToolButton(self.tab)
478 self.lineEdit_2 = QtWidgets.QLineEdit(self.tab)
479 self.lineEdit = QtWidgets.QLineEdit(self.tab)
480 self.label = QtWidgets.QLabel(self.tab)
481 self.gridLayout = QtWidgets.QGridLayout(self.tab)
482 self.tabWidget = QtWidgets.QTabWidget(Dialog)
483 self.horizontalLayout = QtWidgets.QHBoxLayout(Dialog)
484 self.settings = QtCore.QSettings()
485
486 def setupUi(self):
487 Dialog.setObjectName("Dialog")
488 Dialog.resize(509, 314)
489 Dialog.setMaximumSize(QtCore.QSize(16777215, 16777215))
490 self.horizontalLayout.setObjectName("horizontalLayout")
491 self.tabWidget.setObjectName("tabWidget")
492 self.tab.setObjectName("tab")
493 self.gridLayout.setObjectName("gridLayout")
494 self.label.setMaximumSize(QtCore.QSize(50, 50))
495 self.label.setObjectName("label")
496 self.gridLayout.addWidget(self.label, 3, 1, 1, 1)
497 self.lineEdit.setMaximumSize(QtCore.QSize(13777215, 16777215))
498 self.lineEdit.setAlignment(QtCore.Qt.AlignLeading | QtCore.Qt.AlignLeft | QtCore.Qt.AlignTop)
499 self.lineEdit.setObjectName("lineEdit")
500 self.gridLayout.addWidget(self.lineEdit, 3, 2, 1, 1)
501 self.lineEdit_2.setMaximumSize(QtCore.QSize(16777215, 16777215))
502 self.lineEdit_2.setObjectName("lineEdit_2")
503 self.gridLayout.addWidget(self.lineEdit_2, 2, 2, 1, 1)
504 self.toolButton_2.setObjectName("toolButton_2")
505 self.gridLayout.addWidget(self.toolButton_2, 2, 3, 1, 1)
506 self.lineEdit_3.setObjectName("lineEdit_3")
507 self.gridLayout.addWidget(self.lineEdit_3, 0, 2, 1, 1)
508 self.lineEdit_6.setObjectName("lineEdit_6")
509 self.gridLayout.addWidget(self.lineEdit_6, 6, 2, 1, 1)
510 self.lineEdit_5.setObjectName("lineEdit_5")
511 self.gridLayout.addWidget(self.lineEdit_5, 5, 2, 1, 1)
512 self.label_5.setMaximumSize(QtCore.QSize(50, 50))
513 self.label_5.setObjectName("label_5")
514 self.gridLayout.addWidget(self.label_5, 5, 1, 1, 1)
515 self.label_6.setMaximumSize(QtCore.QSize(50, 50))
516 self.label_6.setObjectName("label_6")
517 self.gridLayout.addWidget(self.label_6, 6, 1, 1, 1)
518 self.label_4.setMaximumSize(QtCore.QSize(50, 50))
519 self.label_4.setObjectName("label_4")
520 self.gridLayout.addWidget(self.label_4, 4, 1, 1, 1)
521 self.pushButton.setObjectName("pushButton")
522 self.gridLayout.addWidget(self.pushButton, 8, 2, 1, 1)
523 self.label_2.setMaximumSize(QtCore.QSize(140, 50))
524 self.label_2.setObjectName("label_2")
525 self.gridLayout.addWidget(self.label_2, 0, 1, 1, 1)
526 self.label_3.setMaximumSize(QtCore.QSize(50, 50))
527
528 self.label_3.setObjectName("label_3")
529 self.gridLayout.addWidget(self.label_3, 2, 1, 1, 1)
530 self.toolButton.setObjectName("toolButton")
531 self.gridLayout.addWidget(self.toolButton, 0, 3, 1, 1)
532 self.lineEdit_4.setObjectName("lineEdit_4")
533 self.gridLayout.addWidget(self.lineEdit_4, 4, 2, 1, 1)
534 self.lineEdit_7.setObjectName("lineEdit_7")
535 self.gridLayout.addWidget(self.lineEdit_7, 7, 2, 1, 1)
536 self.label_7.setObjectName("label_7")
537 self.gridLayout.addWidget(self.label_7, 7, 1, 1, 1)
538 self.tabWidget.addTab(self.tab, "")
539 self.tab_2.setObjectName("tab_2")
540 self.tabWidget.addTab(self.tab_2, "")
541 self.horizontalLayout.addWidget(self.tabWidget)
542 self.buttonBox.setOrientation(QtCore.Qt.Vertical)
543 self.buttonBox.setStandardButtons(QtWidgets.QDialogButtonBox.Cancel | QtWidgets.QDialogButtonBox.Ok)
544 self.buttonBox.setObjectName("buttonBox")
545 self.horizontalLayout.addWidget(self.buttonBox)
546
547 self.retranslateUi()
548 self.tabWidget.setCurrentIndex(0)
549 self.buttonBox.accepted.connect(Dialog.accept)
550 self.buttonBox.rejected.connect(Dialog.reject)
551 QtCore.QMetaObject.connectSlotsByName(Dialog)
552
553 def retranslateUi(self):
554 _translate = QtCore.QCoreApplication.translate
555 Dialog.setWindowTitle(_translate("Dialog", "Preferences"))
556 self.label.setText(_translate("Dialog", "Cookie"))
557 self.toolButton_2.setText(_translate("Dialog", "..."))
558 self.label_5.setText(_translate("Dialog", "Password"))
559 self.label_6.setText(_translate("Dialog", "Referrer"))
560 self.label_4.setText(_translate("Dialog", "User"))
561 self.pushButton.setText(_translate("Dialog", "Save"))
562 self.label_2.setText(_translate("Dialog", "IDM Save Directory"))
563 self.label_3.setText(_translate("Dialog", "IDM UUID"))
564 self.toolButton.setText(_translate("Dialog", "..."))
565 self.label_7.setText(_translate("Dialog", "PostData"))
566 self.tabWidget.setTabText(self.tabWidget.indexOf(self.tab), _translate("Dialog", "IDM"))
567 self.tabWidget.setTabText(self.tabWidget.indexOf(self.tab_2), _translate("Dialog", "Tab 2"))
568 self.toolButton.clicked.connect(lambda: self.browse("Save Location"))
569 self.lineEdit.setText(self.settings.value('settings/Cookie'))
570 self.lineEdit_2.setText(idms())
571 self.lineEdit_3.setText(self.settings.value('settings/Location'))
572 self.lineEdit_4.setText(self.settings.value('settings/User'))
573 self.lineEdit_5.setText(self.settings.value('settings/Password'))
574 self.lineEdit_6.setText(self.settings.value('settings/Referrer'))
575 self.lineEdit_7.setText(self.settings.value('settings/PostData'))
576 self.lineEdit.returnPressed.connect(lambda: self.lineEdit.setText(self.lineEdit.text()))
577 self.pushButton.clicked.connect(lambda: self.save())
578
579 def browse(self, saver):
580 options = QtWidgets.QFileDialog.DontResolveSymlinks | QtWidgets.QFileDialog.ShowDirsOnly
581 directory = QtWidgets.QFileDialog.getExistingDirectory(self, saver, self.lineEdit_3.text(),
582 options=options)
583 if directory:
584 self.lineEdit_3.setText(directory)
585
586 def save(self):
587 setting = QtCore.QSettings()
588 setting.setValue('settings/Location', self.lineEdit_3.text())
589 setting.setValue('setting/Cookie', self.lineEdit.text())
590 setting.setValue('setting/User', self.lineEdit_4.text())
591 setting.setValue('setting/Password', self.lineEdit_5.text())
592 setting.setValue('setting/Referrer', self.lineEdit_6.text())
593 setting.setValue('setting/PostData', self.lineEdit_7.text())
594 setting.sync()
595
596
597class Ui_Web(object):
598 def __init__(self):
599 self.scrollAreaWidgetContents_2 = QtWidgets.QWidget()
600 self.comboBox = QtWidgets.QComboBox(Web)
601 self.gridLayout = QtWidgets.QGridLayout(Web)
602 self.scrollArea = QtWidgets.QScrollArea(Web)
603 self.textBrowser = QtWidgets.QTextBrowser(self.scrollAreaWidgetContents_2)
604 self.gridLayout_2 = QtWidgets.QGridLayout(self.scrollAreaWidgetContents_2)
605 self.frame = QtWidgets.QFrame(self.scrollAreaWidgetContents_2)
606 self.lineEdit = QtWidgets.QLineEdit(Web)
607 self.pushButton_2 = QtWidgets.QPushButton(Web)
608 self.spinBox = QtWidgets.QSpinBox(Web)
609 self.pushButton = QtWidgets.QPushButton(Web)
610
611 def setupUi(self, Webs):
612 Webs.setObjectName("Web")
613 Webs.resize(548, 253)
614 self.gridLayout.setContentsMargins(11, 11, 11, 11)
615 self.gridLayout.setSpacing(6)
616 self.gridLayout.setObjectName("gridLayout")
617 sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Fixed)
618 sizePolicy.setHorizontalStretch(0)
619 sizePolicy.setVerticalStretch(0)
620 sizePolicy.setHeightForWidth(self.comboBox.sizePolicy().hasHeightForWidth())
621 self.comboBox.setSizePolicy(sizePolicy)
622 self.comboBox.setMaximumSize(QtCore.QSize(300, 16777215))
623 self.comboBox.setObjectName("comboBox")
624 self.gridLayout.addWidget(self.comboBox, 2, 0, 1, 1)
625 sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Preferred)
626 sizePolicy.setHorizontalStretch(0)
627 sizePolicy.setVerticalStretch(0)
628 sizePolicy.setHeightForWidth(self.scrollArea.sizePolicy().hasHeightForWidth())
629 self.scrollArea.setSizePolicy(sizePolicy)
630 self.scrollArea.setWidgetResizable(True)
631 self.scrollArea.setObjectName("scrollArea")
632 self.scrollAreaWidgetContents_2.setGeometry(QtCore.QRect(0, 0, 528, 178))
633 self.scrollAreaWidgetContents_2.setObjectName("scrollAreaWidgetContents_2")
634 self.gridLayout_2.setContentsMargins(11, 11, 11, 11)
635 self.gridLayout_2.setSpacing(6)
636 self.gridLayout_2.setObjectName("gridLayout_2")
637 sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Expanding)
638 sizePolicy.setHorizontalStretch(0)
639 sizePolicy.setVerticalStretch(0)
640 sizePolicy.setHeightForWidth(self.textBrowser.sizePolicy().hasHeightForWidth())
641 self.textBrowser.setSizePolicy(sizePolicy)
642 self.textBrowser.setAutoFillBackground(True)
643 self.textBrowser.setFrameShape(QtWidgets.QFrame.NoFrame)
644 self.textBrowser.setFrameShadow(QtWidgets.QFrame.Plain)
645 self.textBrowser.setLineWidth(1)
646 self.textBrowser.setMidLineWidth(3)
647 self.textBrowser.setObjectName("textBrowser")
648 self.gridLayout_2.addWidget(self.textBrowser, 0, 2, 1, 1)
649 self.frame.setAutoFillBackground(False)
650 self.frame.setFrameShape(QtWidgets.QFrame.NoFrame)
651 self.frame.setFrameShadow(QtWidgets.QFrame.Plain)
652 self.frame.setObjectName("frame")
653 self.gridLayout_2.addWidget(self.frame, 0, 1, 1, 1)
654 self.scrollArea.setWidget(self.scrollAreaWidgetContents_2)
655 self.gridLayout.addWidget(self.scrollArea, 3, 0, 1, 3)
656 sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Fixed)
657 sizePolicy.setHorizontalStretch(0)
658 sizePolicy.setVerticalStretch(0)
659 sizePolicy.setHeightForWidth(self.spinBox.sizePolicy().hasHeightForWidth())
660 self.spinBox.setSizePolicy(sizePolicy)
661 self.spinBox.setMaximumSize(QtCore.QSize(100, 16777215))
662 self.spinBox.setCorrectionMode(QtWidgets.QAbstractSpinBox.CorrectToPreviousValue)
663 self.spinBox.setSuffix("")
664 self.spinBox.setPrefix("")
665 self.spinBox.setMinimum(1)
666 self.spinBox.setProperty("value", 30)
667 self.spinBox.setObjectName("spinBox")
668 self.gridLayout.addWidget(self.spinBox, 2, 2, 1, 1)
669 self.pushButton_2.setObjectName("pushButton_2")
670 self.gridLayout.addWidget(self.pushButton_2, 4, 2, 1, 1)
671 self.lineEdit.setMaximumSize(QtCore.QSize(200, 16777215))
672 self.lineEdit.setInputMask("")
673 self.lineEdit.setClearButtonEnabled(True)
674 self.lineEdit.setObjectName("lineEdit")
675 self.gridLayout.addWidget(self.lineEdit, 2, 1, 1, 1)
676 self.pushButton.setObjectName("pushButton")
677 self.gridLayout.addWidget(self.pushButton, 4, 0, 1, 2)
678
679 self.retranslateUi(Webs)
680 QtCore.QMetaObject.connectSlotsByName(Webs)
681
682 def retranslateUi(self, Webs):
683 _translate = QtCore.QCoreApplication.translate
684 Webs.setWindowTitle(_translate("Web", "Web"))
685 self.textBrowser.setDocumentTitle(_translate("Web", "Description"))
686 self.pushButton_2.setText(_translate("Web", "Search"))
687 self.lineEdit.setPlaceholderText(_translate("Web", "Web Search"))
688 self.pushButton.setText(_translate("Web", "ADD SHOW"))
689 self.pushButton_2.clicked.connect(lambda: self.get_search_web_data(self.lineEdit.text()))
690 self.lineEdit.returnPressed.connect(lambda: self.get_search_web_data(self.lineEdit.text()))
691 self.comboBox.currentIndexChanged.connect(self.get_combo)
692
693 def get_search_web_data(self, search):
694 critical = QtWidgets.QMessageBox()
695 self.lineEdit.setText(search)
696 self.comboBox.clear()
697 html = ""
698 soup = ""
699 self.results = {}
700 tv_maze = "http://api.tvmaze.com/"
701 try:
702 html = requests.get(
703 f"""http://www.todaytvseries2.com/search-series?searchword={search}&searchphrase
704 =all&limit={self.spinBox.value()}""")
705 soup = BeautifulSoup(html.text, "html.parser")
706 except ConnectionError as exc:
707 critical.setIcon(QtWidgets.QMessageBox.Critical)
708 critical.setText(f" No Internet Connection.\n"
709 f"\n"
710 f"For more Info on Error:"
711 f"{exc}")
712 critical.setWindowTitle("CONNECTION ERROR!!!!")
713 critical.setStandardButtons(critical.Ok | critical.Cancel)
714 critical.setDefaultButton(QtWidgets.QMessageBox.Ok)
715 critical.setEscapeButton(QtWidgets.QMessageBox.Cancel)
716 return critical.exec_()
717 except Exception as time:
718 critical.setIcon(QtWidgets.QMessageBox.Critical)
719 critical.setText(f" SERVER DOWN, can't maintain connection.\n"
720 f"\n"
721 f"Site Might be under maintenance or blocked ip or\n"
722 f"unavailable internet connection..\n"
723 f"\n"
724 f"\n"
725 f"For more Info on Error:\n"
726 f"{time}")
727 critical.setWindowTitle("TIMEOUT ERROR!!!!")
728 critical.setStandardButtons(critical.Ok | critical.Cancel)
729 critical.setDefaultButton(QtWidgets.QMessageBox.Ok)
730 critical.setEscapeButton(QtWidgets.QMessageBox.Cancel)
731 return critical.exec_()
732
733 try:
734 html.raise_for_status()
735 except Exception as exc:
736 critical.setIcon(QtWidgets.QMessageBox.Critical)
737 critical.setText(f"There was a problem:\n"
738 f"Contact the Developer\n"
739 f"\n"
740 f"For more Info Error:"
741 f"{exc}")
742 critical.setWindowTitle("CONNECTION ERROR!!!!")
743 critical.setStandardButtons(critical.Ok | critical.Cancel)
744 critical.setDefaultButton(QtWidgets.QMessageBox.Ok)
745 critical.setEscapeButton(QtWidgets.QMessageBox.Cancel)
746 return critical.exec_()
747
748 search_result = soup.select('.uk-article-titletag a')
749 for result in search_result:
750 title = result.get('title')
751 link = 'http://www.todaytvseries2.com' + result.get('href')
752 self.comboBox.addItem(title)
753 self.results.update({title: {'Link': link}})
754 try:
755 json_search = requests.get(tv_maze + "search/shows?q=" + title)
756 resulted = json.loads(json_search.text)
757 image = resulted[0]['show']['image']['original']
758 images = requests.get(image)
759 self.results[title]['image'] = images.content
760 self.results[title]['summary'] = resulted[0]['show']['summary']
761 except Exception as exc:
762 critical.setIcon(QtWidgets.QMessageBox.Critical)
763 critical.setText(f"There was a problem:\n"
764 f"Check Your Internet Connection or Contact the Developer\n"
765 f"For more Info Error:"
766 f"{exc}")
767 critical.setWindowTitle("CONNECTION ERROR!!!!")
768 critical.setStandardButtons(critical.Ok | critical.Cancel)
769 critical.setDefaultButton(QtWidgets.QMessageBox.Ok)
770 critical.setEscapeButton(QtWidgets.QMessageBox.Cancel)
771 return critical.exec_()
772
773
774if __name__ == "__main__":
775 import sys
776 import json
777 import os
778 import winreg
779 import requests
780 from bs4 import BeautifulSoup
781
782 app = QtWidgets.QApplication(sys.argv)
783 app.setStyle("Fusion")
784 QtCore.QCoreApplication.setOrganizationName("ER40R")
785 QtCore.QCoreApplication.setOrganizationDomain("tz-theory.forumsw.net")
786 QtCore.QCoreApplication.setApplicationName("Today_tv_series")
787 MainWindow = QtWidgets.QMainWindow()
788 Dialog = QtWidgets.QDialog()
789 Web = QtWidgets.QDialog()
790 ui = Ui_MainWindow()
791 Theme()
792 ui.setupUi(MainWindow)
793 MainWindow.show()
794 sys.exit(app.exec_())