src/eric7/WebBrowser/ImageSearch/ImageSearchEngine.py

Tue, 18 Oct 2022 16:06:21 +0200

author
Detlev Offenbach <detlev@die-offenbachs.de>
date
Tue, 18 Oct 2022 16:06:21 +0200
branch
eric7
changeset 9413
80c06d472826
parent 9221
bf71ee032bb4
child 9653
e67609152c5e
permissions
-rw-r--r--

Changed the eric7 import statements to include the package name (i.e. eric7) in order to not fiddle with sys.path.

4955
8a966fc19ce3 Started to implement the image search functionality for the new web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1 # -*- coding: utf-8 -*-
8a966fc19ce3 Started to implement the image search functionality for the new web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
2
8881
54e42bc2437a Updated copyright for 2022.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8318
diff changeset
3 # Copyright (c) 2016 - 2022 Detlev Offenbach <detlev@die-offenbachs.de>
4955
8a966fc19ce3 Started to implement the image search functionality for the new web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
4 #
8a966fc19ce3 Started to implement the image search functionality for the new web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
5
8a966fc19ce3 Started to implement the image search functionality for the new web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
6 """
8a966fc19ce3 Started to implement the image search functionality for the new web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
7 Module implementing the image search engine.
8a966fc19ce3 Started to implement the image search functionality for the new web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
8 """
8a966fc19ce3 Started to implement the image search functionality for the new web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
9
8318
962bce857696 Replaced all imports of PyQt5 to PyQt6 and started to replace code using obsoleted methods and adapt to the PyQt6 enum usage.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8312
diff changeset
10 from PyQt6.QtCore import QObject, QUrl
4955
8a966fc19ce3 Started to implement the image search functionality for the new web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
11
9413
80c06d472826 Changed the eric7 import statements to include the package name (i.e. eric7) in order to not fiddle with sys.path.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
12 from eric7 import Preferences
4955
8a966fc19ce3 Started to implement the image search functionality for the new web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
13
4956
1496516b0f2c Finished implementing the image search functionality for the new web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4955
diff changeset
14
4955
8a966fc19ce3 Started to implement the image search functionality for the new web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
15 class ImageSearchEngine(QObject):
8a966fc19ce3 Started to implement the image search functionality for the new web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
16 """
8a966fc19ce3 Started to implement the image search functionality for the new web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
17 Class implementing the image search engine.
8a966fc19ce3 Started to implement the image search functionality for the new web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
18 """
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
19
4955
8a966fc19ce3 Started to implement the image search functionality for the new web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
20 def __init__(self, parent=None):
8a966fc19ce3 Started to implement the image search functionality for the new web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
21 """
8a966fc19ce3 Started to implement the image search functionality for the new web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
22 Constructor
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
23
4955
8a966fc19ce3 Started to implement the image search functionality for the new web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
24 @param parent reference to the parent object
8a966fc19ce3 Started to implement the image search functionality for the new web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
25 @type QObject
8a966fc19ce3 Started to implement the image search functionality for the new web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
26 """
8218
7c09585bd960 Applied some more code simplifications suggested by the new Simplify checker (super(Foo, self) => super()).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7923
diff changeset
27 super().__init__(parent)
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
28
4956
1496516b0f2c Finished implementing the image search functionality for the new web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4955
diff changeset
29 self.__searchEngineNames = ["Google", "TinEye", "Yandex"]
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
30
4955
8a966fc19ce3 Started to implement the image search functionality for the new web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
31 def searchEngine(self):
8a966fc19ce3 Started to implement the image search functionality for the new web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
32 """
8a966fc19ce3 Started to implement the image search functionality for the new web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
33 Public method to get the name of the current search engine.
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
34
4956
1496516b0f2c Finished implementing the image search functionality for the new web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4955
diff changeset
35 @return name of the current search engine
1496516b0f2c Finished implementing the image search functionality for the new web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4955
diff changeset
36 @rtype str
4955
8a966fc19ce3 Started to implement the image search functionality for the new web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
37 """
4957
55c9bb589b0a Added a configuration for the image search to the web browser config page.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4956
diff changeset
38 return Preferences.getWebBrowser("ImageSearchEngine")
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
39
4955
8a966fc19ce3 Started to implement the image search functionality for the new web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
40 def setSearchEngine(self, searchEngine):
8a966fc19ce3 Started to implement the image search functionality for the new web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
41 """
8a966fc19ce3 Started to implement the image search functionality for the new web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
42 Public method to set the current search engine.
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
43
4955
8a966fc19ce3 Started to implement the image search functionality for the new web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
44 @param searchEngine name of the search engine
8a966fc19ce3 Started to implement the image search functionality for the new web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
45 @type str
8a966fc19ce3 Started to implement the image search functionality for the new web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
46 """
4957
55c9bb589b0a Added a configuration for the image search to the web browser config page.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4956
diff changeset
47 Preferences.setWebBrowser("ImageSearchEngine", searchEngine)
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
48
4956
1496516b0f2c Finished implementing the image search functionality for the new web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4955
diff changeset
49 def searchEngineNames(self):
1496516b0f2c Finished implementing the image search functionality for the new web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4955
diff changeset
50 """
1496516b0f2c Finished implementing the image search functionality for the new web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4955
diff changeset
51 Public method to get the list of supported search engines.
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
52
4956
1496516b0f2c Finished implementing the image search functionality for the new web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4955
diff changeset
53 @return list of supported search engines
1496516b0f2c Finished implementing the image search functionality for the new web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4955
diff changeset
54 @rtype list of str
1496516b0f2c Finished implementing the image search functionality for the new web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4955
diff changeset
55 """
1496516b0f2c Finished implementing the image search functionality for the new web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4955
diff changeset
56 return self.__searchEngineNames[:]
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
57
4955
8a966fc19ce3 Started to implement the image search functionality for the new web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
58 def getSearchQuery(self, imageUrl, searchEngine=None):
8a966fc19ce3 Started to implement the image search functionality for the new web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
59 """
8a966fc19ce3 Started to implement the image search functionality for the new web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
60 Public method to get the image search query URL.
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
61
4955
8a966fc19ce3 Started to implement the image search functionality for the new web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
62 @param imageUrl URL of the image to search for
8a966fc19ce3 Started to implement the image search functionality for the new web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
63 @type QUrl
8a966fc19ce3 Started to implement the image search functionality for the new web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
64 @param searchEngine name of the image search engine to be used
8a966fc19ce3 Started to implement the image search functionality for the new web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
65 @type str
8a966fc19ce3 Started to implement the image search functionality for the new web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
66 @return search query URL
8a966fc19ce3 Started to implement the image search functionality for the new web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
67 @rtype QUrl
8a966fc19ce3 Started to implement the image search functionality for the new web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
68 """
8a966fc19ce3 Started to implement the image search functionality for the new web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
69 if not searchEngine:
4957
55c9bb589b0a Added a configuration for the image search to the web browser config page.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4956
diff changeset
70 searchEngine = self.searchEngine()
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
71
4955
8a966fc19ce3 Started to implement the image search functionality for the new web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
72 searchEngine_l = searchEngine.lower()
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
73 if searchEngine_l == "google": # __IGNORE_WARNING_Y116__
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
74 return QUrl(
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
75 "https://www.google.com/searchbyimage?"
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
76 "site=search&image_url={0}".format(imageUrl.toString())
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
77 )
4955
8a966fc19ce3 Started to implement the image search functionality for the new web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
78 elif searchEngine_l == "yandex":
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
79 return QUrl(
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
80 "https://yandex.com/images/search?"
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
81 "&img_url={0}&rpt=imageview".format(imageUrl.toString())
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
82 )
4955
8a966fc19ce3 Started to implement the image search functionality for the new web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
83 elif searchEngine_l == "tineye":
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
84 return QUrl(
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
85 "http://www.tineye.com/search?url={0}".format(imageUrl.toString())
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
86 )
4955
8a966fc19ce3 Started to implement the image search functionality for the new web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
87 else:
8a966fc19ce3 Started to implement the image search functionality for the new web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
88 return QUrl()

eric ide

mercurial