From c0aa665347a8dffed161d1ac1b61e840939d931d Mon Sep 17 00:00:00 2001 From: MichaelFitzurka Date: Thu, 31 Mar 2022 12:40:43 -0400 Subject: [PATCH 1/3] Adding web link convenience button to open a valid url value in a browser window. --- comictaggerlib/taggerwindow.py | 20 +++++++++++++++++++- comictaggerlib/ui/taggerwindow.ui | 30 +++++++++++++++++++++++++----- 2 files changed, 44 insertions(+), 6 deletions(-) diff --git a/comictaggerlib/taggerwindow.py b/comictaggerlib/taggerwindow.py index 945889c..60fdddf 100644 --- a/comictaggerlib/taggerwindow.py +++ b/comictaggerlib/taggerwindow.py @@ -25,6 +25,7 @@ import json import webbrowser import re import pickle +import requests #import signal from PyQt5 import QtCore, QtGui, QtWidgets, uic @@ -221,6 +222,7 @@ class TaggerWindow(QtWidgets.QMainWindow): self.btnAddCredit.clicked.connect(self.addCredit) self.btnRemoveCredit.clicked.connect(self.removeCredit) self.twCredits.cellDoubleClicked.connect(self.editCredit) + self.btnOpenWebLink.clicked.connect(self.openWebLink) self.connectDirtyFlagSignals() self.pageListEditor.modified.connect(self.setDirtyFlag) self.pageListEditor.firstFrontCoverChanged.connect( @@ -409,8 +411,11 @@ class TaggerWindow(QtWidgets.QMainWindow): self.actionReportBug.triggered.connect(self.reportBug) self.actionComicTaggerForum.triggered.connect(self.showForum) - # ToolBar + # Notes Menu + self.btnOpenWebLink.setIcon( + QtGui.QIcon(ComicTaggerSettings.getGraphic('open.png'))) + # ToolBar self.actionLoad.setIcon( QtGui.QIcon(ComicTaggerSettings.getGraphic('open.png'))) self.actionLoadFolder.setIcon( @@ -1368,6 +1373,19 @@ class TaggerWindow(QtWidgets.QMainWindow): self.twCredits.removeRow(row) self.setDirtyFlag() + def openWebLink(self): + if self.leWebLink is not None: + web_link = "{0}".format(self.leWebLink.text()).strip(); + if len(web_link) > 0: + try: + response = requests.get(web_link) + webbrowser.open_new_tab(web_link) + except: + QtWidgets.QMessageBox.information( + self, + self.tr("Web Link"), + self.tr("Web Link is invalid.")) + def showSettings(self): settingswin = SettingsWindow(self, self.settings) diff --git a/comictaggerlib/ui/taggerwindow.ui b/comictaggerlib/ui/taggerwindow.ui index d5fcc3b..cd01647 100644 --- a/comictaggerlib/ui/taggerwindow.ui +++ b/comictaggerlib/ui/taggerwindow.ui @@ -929,11 +929,31 @@ - - - false - - + + + + + false + + + + + + + + 0 + 0 + + + + + 40 + 16777215 + + + + + From 8c5d4869f9139fc7863e55fd88241f86b7d09be0 Mon Sep 17 00:00:00 2001 From: MichaelFitzurka Date: Thu, 31 Mar 2022 13:34:40 -0400 Subject: [PATCH 2/3] Updates to comments. --- comictaggerlib/taggerwindow.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/comictaggerlib/taggerwindow.py b/comictaggerlib/taggerwindow.py index 60fdddf..d2ce6cb 100644 --- a/comictaggerlib/taggerwindow.py +++ b/comictaggerlib/taggerwindow.py @@ -1375,10 +1375,10 @@ class TaggerWindow(QtWidgets.QMainWindow): def openWebLink(self): if self.leWebLink is not None: - web_link = "{0}".format(self.leWebLink.text()).strip(); - if len(web_link) > 0: + web_link = self.leWebLink.text().strip(); + if web_link: try: - response = requests.get(web_link) + requests.get(web_link) webbrowser.open_new_tab(web_link) except: QtWidgets.QMessageBox.information( From 2a3620ea2104efde2b5810526e084a4b70287ae5 Mon Sep 17 00:00:00 2001 From: MichaelFitzurka Date: Fri, 1 Apr 2022 09:48:53 -0400 Subject: [PATCH 3/3] Replacing requests validation with urlparse. --- comictaggerlib/taggerwindow.py | 26 ++++++++++++++++---------- 1 file changed, 16 insertions(+), 10 deletions(-) diff --git a/comictaggerlib/taggerwindow.py b/comictaggerlib/taggerwindow.py index d2ce6cb..bf62ae1 100644 --- a/comictaggerlib/taggerwindow.py +++ b/comictaggerlib/taggerwindow.py @@ -25,13 +25,14 @@ import json import webbrowser import re import pickle -import requests #import signal from PyQt5 import QtCore, QtGui, QtWidgets, uic from PyQt5 import QtNetwork from PyQt5.QtCore import QUrl +from urllib.parse import urlparse + #from comicarchive import ComicArchive #from pageloader import PageLoader from .volumeselectionwindow import VolumeSelectionWindow @@ -1376,15 +1377,20 @@ class TaggerWindow(QtWidgets.QMainWindow): def openWebLink(self): if self.leWebLink is not None: web_link = self.leWebLink.text().strip(); - if web_link: - try: - requests.get(web_link) - webbrowser.open_new_tab(web_link) - except: - QtWidgets.QMessageBox.information( - self, - self.tr("Web Link"), - self.tr("Web Link is invalid.")) + valid = False; + try: + result = urlparse(web_link) + valid = all([result.scheme in ["http", "https"], result.netloc]) + except: + pass + + if valid: + webbrowser.open_new_tab(web_link) + else: + QtWidgets.QMessageBox.warning( + self, + self.tr("Web Link"), + self.tr("Web Link is invalid.")) def showSettings(self):