From 2dcbc44412cb1eda6f8c6896a14432d812c2c5c0 Mon Sep 17 00:00:00 2001 From: Lev Rusanov <30170278+JDM170@users.noreply.github.com> Date: Mon, 22 Apr 2024 16:22:23 +0700 Subject: [PATCH] split main window and search dialog into other files Signed-off-by: Lev Rusanov <30170278+JDM170@users.noreply.github.com> --- .gitignore | 2 +- form.ui => main.ui | 0 window.py => main_window.py | 108 +--------------------------------- run.py | 2 +- search_dialog.py | 112 ++++++++++++++++++++++++++++++++++++ 5 files changed, 117 insertions(+), 107 deletions(-) rename form.ui => main.ui (100%) rename window.py => main_window.py (67%) create mode 100644 search_dialog.py diff --git a/.gitignore b/.gitignore index bd2ca05..5c0a86f 100644 --- a/.gitignore +++ b/.gitignore @@ -1,5 +1,5 @@ __pycache__ venv -form.py +main.py search.py *.json diff --git a/form.ui b/main.ui similarity index 100% rename from form.ui rename to main.ui diff --git a/window.py b/main_window.py similarity index 67% rename from window.py rename to main_window.py index 857b63d..5246b1f 100644 --- a/window.py +++ b/main_window.py @@ -3,11 +3,11 @@ from PyQt5.QtCore import Qt from PyQt5.QtWidgets import ( - QMainWindow, QDialog, QListWidgetItem, QFileDialog, QMessageBox + QMainWindow, QListWidgetItem, QFileDialog, QMessageBox ) from jsonIO import jsonIO -from form import Ui_MainWindow -from search import Ui_SearchDialog +from main import Ui_MainWindow +from search_dialog import SearchDialog statuses = { @@ -224,105 +224,3 @@ class MainWindow(QMainWindow, Ui_MainWindow): # return pass - -header = { - "User-Agent": "", - "Authorization": "" -} - - -from requests import post, get -from urllib.parse import urlencode -class SearchDialog(QDialog, Ui_SearchDialog): - def __init__(self, parent=None): - QDialog.__init__(self, parent, flags=Qt.Window) - Ui_SearchDialog.__init__(self) - self.ui = Ui_SearchDialog() - self.ui.setupUi(self) - - self.parent = parent - - # import tokens from tokens.json - if not jsonIO.is_valid_json("tokens.json"): - jsonIO.save_json("tokens.json", { - "useragent": "", - "client_id": "", - "client_secret": "", - "authorization_code": "", - "access_token": "", - "refresh_token": "" - }) - QMessageBox.critical(self, "Ошибка", "Заполните 'tokens.json' своими данными чтобы поиск работал корректно!") - self.close() - else: - self.tokens = jsonIO.load_json("tokens.json") - for key, value in self.tokens.items(): - if (key != "access_token" or key != "refresh_token") and value == "": - QMessageBox.critical(self, "Ошибка", "Заполните 'tokens.json' своими данными чтобы поиск работал корректно!") - self.close() - if self.tokens["access_token"] == "": - self.get_new_access_token() - self.update_headers() - - self.ui.search.clicked.connect(self.search_titles) - - def update_headers(self): - header["User-Agent"] = self.tokens["useragent"] - header["Authorization"] = "Bearer {}".format(self.tokens["access_token"]) - - def get_new_access_token(self): - response = post("https://shikimori.one/oauth/token", headers=header, data={ - "grant_type": "authorization_code", - "client_id": self.tokens["client_id"], - "client_secret": self.tokens["client_secret"], - "code": self.tokens["authorization_code"], - }) - if response.status_code == 200: - new_tokens = response.json() - self.tokens["access_token"] = new_tokens["access_token"] - self.tokens["refresh_token"] = new_tokens["refresh_token"] - jsonIO.save_json("tokens.json", self.tokens) - self.update_headers() - print("got new tokens") - - def refresh_access_token(self): - response = post("https://shikimori.one/oauth/token", headers=header, data={ - "grant_type": "refresh_token", - "client_id": self.tokens["client_id"], - "client_secret": self.tokens["client_secret"], - "refresh_token": self.tokens["refresh_token"], - }) - if response.status_code == 200: - new_tokens = response.json() - self.tokens["access_token"] = new_tokens["access_token"] - self.tokens["refresh_token"] = new_tokens["refresh_token"] - jsonIO.save_json("tokens.json", self.tokens) - self.update_headers() - print("tokens updated", new_tokens) - - def search_titles(self): - title_name = self.ui.to_search.text() - if len(title_name) == 0: - QMessageBox.critical(self, "Ошибка", "Введите название тайтла.") - return - response = get("https://shikimori.one/api/animes", headers=header, params={"search": title_name, "limit": 25}) - # print(response.json()) - if response.status_code == 401: - if response.json()["error"] == "invalid_token": - self.refresh_access_token() - # self.search_titles() - return - if response.status_code == 200: - found_titles = response.json() - if len(found_titles) == 0: - QMessageBox.information(self, "Информация", "Ничего не найдено. Попробуйте еще раз.") - return - self.ui.search_list.clear() - for data in found_titles: - item = QListWidgetItem() - if data["russian"] != "": - item.setText("{} | {}".format(data["russian"], data["name"])) - else: - item.setText(data["name"]) - item.setData(1, data["id"]) - self.ui.search_list.addItem(item) diff --git a/run.py b/run.py index a9b2404..3bb218d 100644 --- a/run.py +++ b/run.py @@ -3,7 +3,7 @@ from sys import argv, exit from PyQt5.QtWidgets import QApplication -from window import MainWindow +from main_window import MainWindow if __name__ == '__main__': diff --git a/search_dialog.py b/search_dialog.py new file mode 100644 index 0000000..5e36a86 --- /dev/null +++ b/search_dialog.py @@ -0,0 +1,112 @@ +#!/usr/bin/python3 +# -*- coding: utf-8 -*- + +from PyQt5.QtCore import Qt +from PyQt5.QtWidgets import QDialog +from search import Ui_SearchDialog +from jsonIO import jsonIO +from requests import post, get +from urllib.parse import urlencode + + +header = { + "User-Agent": "", + "Authorization": "" +} +tokens_filename = "tokens.json" + + +class SearchDialog(QDialog, Ui_SearchDialog): + def __init__(self, parent=None): + QDialog.__init__(self, parent, flags=Qt.Window) + Ui_SearchDialog.__init__(self) + self.ui = Ui_SearchDialog() + self.ui.setupUi(self) + + self.parent = parent + + # import tokens from tokens_filename + if not jsonIO.is_valid_json(tokens_filename): + jsonIO.save_json(tokens_filename, { + "oauth_app_name": "", + "client_id": "", + "client_secret": "", + "authorization_code": "", + "access_token": "", + "refresh_token": "" + }) + QMessageBox.critical(self, "Ошибка", "Заполните 'tokens.json' своими данными чтобы поиск работал корректно!") + self.close() + else: + self.tokens = jsonIO.load_json(tokens_filename) + for key, value in self.tokens.items(): + if (key != "access_token" or key != "refresh_token") and value == "": + QMessageBox.critical(self, "Ошибка", "Заполните 'tokens.json' своими данными чтобы поиск работал корректно!") + self.close() + if self.tokens["access_token"] == "": + self.get_new_access_token() + self.update_headers() + + self.ui.search.clicked.connect(self.search_titles) + + def update_headers(self): + header["User-Agent"] = self.tokens["oauth_app_name"] + header["Authorization"] = "Bearer {}".format(self.tokens["access_token"]) + + def get_new_access_token(self): + response = post("https://shikimori.one/oauth/token", headers=header, data={ + "grant_type": "authorization_code", + "client_id": self.tokens["client_id"], + "client_secret": self.tokens["client_secret"], + "code": self.tokens["authorization_code"], + }) + if response.status_code == 200: + new_tokens = response.json() + self.tokens["access_token"] = new_tokens["access_token"] + self.tokens["refresh_token"] = new_tokens["refresh_token"] + jsonIO.save_json(tokens_filename, self.tokens) + self.update_headers() + print("got new tokens") + + def refresh_access_token(self): + response = post("https://shikimori.one/oauth/token", headers=header, data={ + "grant_type": "refresh_token", + "client_id": self.tokens["client_id"], + "client_secret": self.tokens["client_secret"], + "refresh_token": self.tokens["refresh_token"], + }) + if response.status_code == 200: + new_tokens = response.json() + self.tokens["access_token"] = new_tokens["access_token"] + self.tokens["refresh_token"] = new_tokens["refresh_token"] + jsonIO.save_json(tokens_filename, self.tokens) + self.update_headers() + print("tokens updated", new_tokens) + + def search_titles(self): + title_name = self.ui.to_search.text() + if len(title_name) == 0: + QMessageBox.critical(self, "Ошибка", "Введите название тайтла.") + return + response = get("https://shikimori.one/api/animes", headers=header, params={"search": title_name, "limit": 25}) + # print(response.json()) + if response.status_code == 401: + if response.json()["error"] == "invalid_token": + self.refresh_access_token() + # self.search_titles() + return + if response.status_code == 200: + found_titles = response.json() + if len(found_titles) == 0: + QMessageBox.information(self, "Информация", "Ничего не найдено. Попробуйте еще раз.") + return + self.ui.search_list.clear() + for data in found_titles: + item = QListWidgetItem() + if data["russian"] != "": + item.setText("{} | {}".format(data["russian"], data["name"])) + else: + item.setText(data["name"]) + item.setData(1, data["id"]) + self.ui.search_list.addItem(item) +