eric7/WebBrowser/ImageSearch/ImageSearchEngine.py

branch
eric7
changeset 8312
800c432b34c8
parent 8237
acc1490f822e
child 8318
962bce857696
diff -r 4e8b98454baa -r 800c432b34c8 eric7/WebBrowser/ImageSearch/ImageSearchEngine.py
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/eric7/WebBrowser/ImageSearch/ImageSearchEngine.py	Sat May 15 18:45:04 2021 +0200
@@ -0,0 +1,84 @@
+# -*- coding: utf-8 -*-
+
+# Copyright (c) 2016 - 2021 Detlev Offenbach <detlev@die-offenbachs.de>
+#
+
+"""
+Module implementing the image search engine.
+"""
+
+from PyQt5.QtCore import QObject, QUrl
+
+import Preferences
+
+
+class ImageSearchEngine(QObject):
+    """
+    Class implementing the image search engine.
+    """
+    def __init__(self, parent=None):
+        """
+        Constructor
+        
+        @param parent reference to the parent object
+        @type QObject
+        """
+        super().__init__(parent)
+        
+        self.__searchEngineNames = ["Google", "TinEye", "Yandex"]
+    
+    def searchEngine(self):
+        """
+        Public method to get the name of the current search engine.
+        
+        @return name of the current search engine
+        @rtype str
+        """
+        return Preferences.getWebBrowser("ImageSearchEngine")
+    
+    def setSearchEngine(self, searchEngine):
+        """
+        Public method to set the current search engine.
+        
+        @param searchEngine name of the search engine
+        @type str
+        """
+        Preferences.setWebBrowser("ImageSearchEngine", searchEngine)
+    
+    def searchEngineNames(self):
+        """
+        Public method to get the list of supported search engines.
+        
+        @return list of supported search engines
+        @rtype list of str
+        """
+        return self.__searchEngineNames[:]
+    
+    def getSearchQuery(self, imageUrl, searchEngine=None):
+        """
+        Public method to get the image search query URL.
+        
+        @param imageUrl URL of the image to search for
+        @type QUrl
+        @param searchEngine name of the image search engine to be used
+        @type str
+        @return search query URL
+        @rtype QUrl
+        """
+        if not searchEngine:
+            searchEngine = self.searchEngine()
+        
+        searchEngine_l = searchEngine.lower()
+        if searchEngine_l == "google":              # __IGNORE_WARNING_Y116__
+            return QUrl("https://www.google.com/searchbyimage?"
+                        "site=search&image_url={0}".format(
+                            imageUrl.toString()))
+        elif searchEngine_l == "yandex":
+            return QUrl("https://yandex.com/images/search?"
+                        "&img_url={0}&rpt=imageview".format(
+                            imageUrl.toString()))
+        elif searchEngine_l == "tineye":
+            return QUrl("http://www.tineye.com/search?url={0}".format(
+                imageUrl.toString()))
+        else:
+            return QUrl()

eric ide

mercurial