eric6/WebBrowser/Bookmarks/BookmarksImporters/ChromeImporter.py

Tue, 02 Mar 2021 17:17:09 +0100

author
Detlev Offenbach <detlev@die-offenbachs.de>
date
Tue, 02 Mar 2021 17:17:09 +0100
changeset 8143
2c730d5fd177
parent 7923
91e843545d9a
child 8205
4a0f1f896341
permissions
-rw-r--r--

Changed the use of PyQt enums because the way they were used previously is deprecated since two years and replaced some deprecated Qt stuff.

1714
e9bd88363184 Added a bookmarks importer for Google Chrome and Chromium.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1 # -*- coding: utf-8 -*-
e9bd88363184 Added a bookmarks importer for Google Chrome and Chromium.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
2
7923
91e843545d9a Updated copyright for 2021.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7836
diff changeset
3 # Copyright (c) 2012 - 2021 Detlev Offenbach <detlev@die-offenbachs.de>
1714
e9bd88363184 Added a bookmarks importer for Google Chrome and Chromium.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
4 #
e9bd88363184 Added a bookmarks importer for Google Chrome and Chromium.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
5
e9bd88363184 Added a bookmarks importer for Google Chrome and Chromium.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
6 """
e9bd88363184 Added a bookmarks importer for Google Chrome and Chromium.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
7 Module implementing an importer for Chrome bookmarks.
e9bd88363184 Added a bookmarks importer for Google Chrome and Chromium.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
8 """
e9bd88363184 Added a bookmarks importer for Google Chrome and Chromium.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
9
e9bd88363184 Added a bookmarks importer for Google Chrome and Chromium.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
10 import os
e9bd88363184 Added a bookmarks importer for Google Chrome and Chromium.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
11 import json
e9bd88363184 Added a bookmarks importer for Google Chrome and Chromium.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
12
3656
441956d8fce5 Started porting eric5 to PyQt5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3484
diff changeset
13 from PyQt5.QtCore import QCoreApplication, QDate, Qt
1714
e9bd88363184 Added a bookmarks importer for Google Chrome and Chromium.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
14
e9bd88363184 Added a bookmarks importer for Google Chrome and Chromium.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
15 from .BookmarksImporter import BookmarksImporter
e9bd88363184 Added a bookmarks importer for Google Chrome and Chromium.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
16
e9bd88363184 Added a bookmarks importer for Google Chrome and Chromium.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
17 import UI.PixmapCache
e9bd88363184 Added a bookmarks importer for Google Chrome and Chromium.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
18 import Globals
e9bd88363184 Added a bookmarks importer for Google Chrome and Chromium.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
19
e9bd88363184 Added a bookmarks importer for Google Chrome and Chromium.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
20
5605
1950fe1a32c4 Finished fixing code style issues detected by the extended style checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5389
diff changeset
21 def getImporterInfo(sourceId):
1714
e9bd88363184 Added a bookmarks importer for Google Chrome and Chromium.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
22 """
e9bd88363184 Added a bookmarks importer for Google Chrome and Chromium.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
23 Module function to get information for the given source id.
e9bd88363184 Added a bookmarks importer for Google Chrome and Chromium.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
24
5605
1950fe1a32c4 Finished fixing code style issues detected by the extended style checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5389
diff changeset
25 @param sourceId id of the browser ("chrome" or "chromium")
1714
e9bd88363184 Added a bookmarks importer for Google Chrome and Chromium.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
26 @return tuple with an icon (QPixmap), readable name (string), name of
e9bd88363184 Added a bookmarks importer for Google Chrome and Chromium.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
27 the default bookmarks file (string), an info text (string),
3002
6ffc581f00f1 Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2954
diff changeset
28 a prompt (string) and the default directory of the bookmarks file
6ffc581f00f1 Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2954
diff changeset
29 (string)
2954
bf0215fe12d1 Continued correcting doc strings by using the new doc string checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2403
diff changeset
30 @exception ValueError raised to indicate an invalid browser ID
1714
e9bd88363184 Added a bookmarks importer for Google Chrome and Chromium.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
31 """
5605
1950fe1a32c4 Finished fixing code style issues detected by the extended style checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5389
diff changeset
32 if sourceId == "chrome":
1714
e9bd88363184 Added a bookmarks importer for Google Chrome and Chromium.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
33 if Globals.isWindowsPlatform():
e9bd88363184 Added a bookmarks importer for Google Chrome and Chromium.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
34 standardDir = os.path.expandvars(
3002
6ffc581f00f1 Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2954
diff changeset
35 "%USERPROFILE%\\AppData\\Local\\Google\\Chrome\\"
6ffc581f00f1 Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2954
diff changeset
36 "User Data\\Default")
1725
d7a3430f7cbf Adapted the bookmarks importers to Mac OS X and changed the SQL stuff of the firefox importer to use sqlite3 because of issues of QSql on Mac OS X.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1719
diff changeset
37 elif Globals.isMacPlatform():
d7a3430f7cbf Adapted the bookmarks importers to Mac OS X and changed the SQL stuff of the firefox importer to use sqlite3 because of issues of QSql on Mac OS X.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1719
diff changeset
38 standardDir = os.path.expanduser(
d7a3430f7cbf Adapted the bookmarks importers to Mac OS X and changed the SQL stuff of the firefox importer to use sqlite3 because of issues of QSql on Mac OS X.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1719
diff changeset
39 "~/Library/Application Support/Google/Chrome/Default")
1714
e9bd88363184 Added a bookmarks importer for Google Chrome and Chromium.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
40 else:
e9bd88363184 Added a bookmarks importer for Google Chrome and Chromium.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
41 standardDir = os.path.expanduser("~/.config/google-chrome/Default")
e9bd88363184 Added a bookmarks importer for Google Chrome and Chromium.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
42 return (
7533
88261c96484b Removed the '.png' extension from all call to get an icon or a pixmap from the PixmapCache because this is not needed anymore.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7360
diff changeset
43 UI.PixmapCache.getPixmap("chrome"),
1714
e9bd88363184 Added a bookmarks importer for Google Chrome and Chromium.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
44 "Google Chrome",
e9bd88363184 Added a bookmarks importer for Google Chrome and Chromium.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
45 "Bookmarks",
3002
6ffc581f00f1 Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2954
diff changeset
46 QCoreApplication.translate(
6ffc581f00f1 Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2954
diff changeset
47 "ChromeImporter",
6ffc581f00f1 Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2954
diff changeset
48 """Google Chrome stores its bookmarks in the"""
6ffc581f00f1 Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2954
diff changeset
49 """ <b>Bookmarks</b> text file. This file is usually"""
6ffc581f00f1 Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2954
diff changeset
50 """ located in"""),
3022
57179e4cdadd Fixed a bunch of visible indentation issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3002
diff changeset
51 QCoreApplication.translate(
57179e4cdadd Fixed a bunch of visible indentation issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3002
diff changeset
52 "ChromeImporter",
1714
e9bd88363184 Added a bookmarks importer for Google Chrome and Chromium.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
53 """Please choose the file to begin importing bookmarks."""),
e9bd88363184 Added a bookmarks importer for Google Chrome and Chromium.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
54 standardDir,
e9bd88363184 Added a bookmarks importer for Google Chrome and Chromium.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
55 )
5605
1950fe1a32c4 Finished fixing code style issues detected by the extended style checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5389
diff changeset
56 elif sourceId == "chromium":
1714
e9bd88363184 Added a bookmarks importer for Google Chrome and Chromium.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
57 if Globals.isWindowsPlatform():
e9bd88363184 Added a bookmarks importer for Google Chrome and Chromium.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
58 standardDir = os.path.expandvars(
3002
6ffc581f00f1 Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2954
diff changeset
59 "%USERPROFILE%\\AppData\\Local\\Google\\Chrome\\"
6ffc581f00f1 Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2954
diff changeset
60 "User Data\\Default")
1714
e9bd88363184 Added a bookmarks importer for Google Chrome and Chromium.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
61 else:
e9bd88363184 Added a bookmarks importer for Google Chrome and Chromium.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
62 standardDir = os.path.expanduser("~/.config/chromium/Default")
e9bd88363184 Added a bookmarks importer for Google Chrome and Chromium.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
63 return (
7533
88261c96484b Removed the '.png' extension from all call to get an icon or a pixmap from the PixmapCache because this is not needed anymore.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7360
diff changeset
64 UI.PixmapCache.getPixmap("chromium"),
1714
e9bd88363184 Added a bookmarks importer for Google Chrome and Chromium.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
65 "Chromium",
e9bd88363184 Added a bookmarks importer for Google Chrome and Chromium.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
66 "Bookmarks",
3002
6ffc581f00f1 Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2954
diff changeset
67 QCoreApplication.translate(
6ffc581f00f1 Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2954
diff changeset
68 "ChromeImporter",
6ffc581f00f1 Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2954
diff changeset
69 """Chromium stores its bookmarks in the <b>Bookmarks</b>"""
6ffc581f00f1 Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2954
diff changeset
70 """ text file. This file is usually located in"""),
3022
57179e4cdadd Fixed a bunch of visible indentation issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3002
diff changeset
71 QCoreApplication.translate(
57179e4cdadd Fixed a bunch of visible indentation issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3002
diff changeset
72 "ChromeImporter",
1714
e9bd88363184 Added a bookmarks importer for Google Chrome and Chromium.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
73 """Please choose the file to begin importing bookmarks."""),
e9bd88363184 Added a bookmarks importer for Google Chrome and Chromium.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
74 standardDir,
e9bd88363184 Added a bookmarks importer for Google Chrome and Chromium.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
75 )
e9bd88363184 Added a bookmarks importer for Google Chrome and Chromium.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
76 else:
5605
1950fe1a32c4 Finished fixing code style issues detected by the extended style checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5389
diff changeset
77 raise ValueError(
1950fe1a32c4 Finished fixing code style issues detected by the extended style checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5389
diff changeset
78 "Unsupported browser ID given ({0}).".format(sourceId))
1714
e9bd88363184 Added a bookmarks importer for Google Chrome and Chromium.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
79
e9bd88363184 Added a bookmarks importer for Google Chrome and Chromium.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
80
e9bd88363184 Added a bookmarks importer for Google Chrome and Chromium.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
81 class ChromeImporter(BookmarksImporter):
e9bd88363184 Added a bookmarks importer for Google Chrome and Chromium.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
82 """
e9bd88363184 Added a bookmarks importer for Google Chrome and Chromium.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
83 Class implementing the Chrome bookmarks importer.
e9bd88363184 Added a bookmarks importer for Google Chrome and Chromium.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
84 """
5605
1950fe1a32c4 Finished fixing code style issues detected by the extended style checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5389
diff changeset
85 def __init__(self, sourceId="", parent=None):
1714
e9bd88363184 Added a bookmarks importer for Google Chrome and Chromium.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
86 """
e9bd88363184 Added a bookmarks importer for Google Chrome and Chromium.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
87 Constructor
e9bd88363184 Added a bookmarks importer for Google Chrome and Chromium.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
88
5605
1950fe1a32c4 Finished fixing code style issues detected by the extended style checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5389
diff changeset
89 @param sourceId source ID (string)
1714
e9bd88363184 Added a bookmarks importer for Google Chrome and Chromium.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
90 @param parent reference to the parent object (QObject)
e9bd88363184 Added a bookmarks importer for Google Chrome and Chromium.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
91 """
5605
1950fe1a32c4 Finished fixing code style issues detected by the extended style checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5389
diff changeset
92 super(ChromeImporter, self).__init__(sourceId, parent)
1714
e9bd88363184 Added a bookmarks importer for Google Chrome and Chromium.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
93
e9bd88363184 Added a bookmarks importer for Google Chrome and Chromium.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
94 self.__fileName = ""
e9bd88363184 Added a bookmarks importer for Google Chrome and Chromium.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
95
e9bd88363184 Added a bookmarks importer for Google Chrome and Chromium.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
96 def setPath(self, path):
e9bd88363184 Added a bookmarks importer for Google Chrome and Chromium.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
97 """
e9bd88363184 Added a bookmarks importer for Google Chrome and Chromium.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
98 Public method to set the path of the bookmarks file or directory.
e9bd88363184 Added a bookmarks importer for Google Chrome and Chromium.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
99
e9bd88363184 Added a bookmarks importer for Google Chrome and Chromium.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
100 @param path bookmarks file or directory (string)
e9bd88363184 Added a bookmarks importer for Google Chrome and Chromium.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
101 """
e9bd88363184 Added a bookmarks importer for Google Chrome and Chromium.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
102 self.__fileName = path
e9bd88363184 Added a bookmarks importer for Google Chrome and Chromium.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
103
e9bd88363184 Added a bookmarks importer for Google Chrome and Chromium.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
104 def open(self):
e9bd88363184 Added a bookmarks importer for Google Chrome and Chromium.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
105 """
e9bd88363184 Added a bookmarks importer for Google Chrome and Chromium.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
106 Public method to open the bookmarks file.
e9bd88363184 Added a bookmarks importer for Google Chrome and Chromium.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
107
e9bd88363184 Added a bookmarks importer for Google Chrome and Chromium.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
108 @return flag indicating success (boolean)
e9bd88363184 Added a bookmarks importer for Google Chrome and Chromium.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
109 """
e9bd88363184 Added a bookmarks importer for Google Chrome and Chromium.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
110 if not os.path.exists(self.__fileName):
e9bd88363184 Added a bookmarks importer for Google Chrome and Chromium.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
111 self._error = True
3190
a9a94491c4fd Changed the code to use QObject.tr() instead of QObject.trUtf8().
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3160
diff changeset
112 self._errorString = self.tr(
3002
6ffc581f00f1 Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2954
diff changeset
113 "File '{0}' does not exist.").format(self.__fileName)
1714
e9bd88363184 Added a bookmarks importer for Google Chrome and Chromium.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
114 return False
e9bd88363184 Added a bookmarks importer for Google Chrome and Chromium.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
115 return True
e9bd88363184 Added a bookmarks importer for Google Chrome and Chromium.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
116
e9bd88363184 Added a bookmarks importer for Google Chrome and Chromium.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
117 def importedBookmarks(self):
e9bd88363184 Added a bookmarks importer for Google Chrome and Chromium.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
118 """
e9bd88363184 Added a bookmarks importer for Google Chrome and Chromium.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
119 Public method to get the imported bookmarks.
e9bd88363184 Added a bookmarks importer for Google Chrome and Chromium.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
120
e9bd88363184 Added a bookmarks importer for Google Chrome and Chromium.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
121 @return imported bookmarks (BookmarkNode)
e9bd88363184 Added a bookmarks importer for Google Chrome and Chromium.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
122 """
e9bd88363184 Added a bookmarks importer for Google Chrome and Chromium.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
123 try:
7785
9978016560ec Changed code to use context manager 'open()' for file operations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7781
diff changeset
124 with open(self.__fileName, "r", encoding="utf-8") as f:
9978016560ec Changed code to use context manager 'open()' for file operations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7781
diff changeset
125 contents = json.load(f)
7836
2f0d208b8137 Changed code to not use the OSError aliases (IOError, EnvironmentError, socket.error and select.error) anymore.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7785
diff changeset
126 except OSError as err:
1714
e9bd88363184 Added a bookmarks importer for Google Chrome and Chromium.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
127 self._error = True
3190
a9a94491c4fd Changed the code to use QObject.tr() instead of QObject.trUtf8().
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3160
diff changeset
128 self._errorString = self.tr(
7268
a28338eaf694 Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7229
diff changeset
129 "File '{0}' cannot be read.\nReason: {1}"
a28338eaf694 Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7229
diff changeset
130 ).format(self.__fileName, str(err))
1714
e9bd88363184 Added a bookmarks importer for Google Chrome and Chromium.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
131 return None
e9bd88363184 Added a bookmarks importer for Google Chrome and Chromium.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
132
2403
e3d7a861547c Continued implementing the delayed import.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2302
diff changeset
133 from ..BookmarkNode import BookmarkNode
1715
558e44df025a Added a bookmarks importer for Opera.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1714
diff changeset
134 importRootNode = BookmarkNode(BookmarkNode.Folder)
1714
e9bd88363184 Added a bookmarks importer for Google Chrome and Chromium.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
135 if contents["version"] == 1:
e9bd88363184 Added a bookmarks importer for Google Chrome and Chromium.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
136 self.__processRoots(contents["roots"], importRootNode)
e9bd88363184 Added a bookmarks importer for Google Chrome and Chromium.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
137
e9bd88363184 Added a bookmarks importer for Google Chrome and Chromium.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
138 if self._id == "chrome":
3190
a9a94491c4fd Changed the code to use QObject.tr() instead of QObject.trUtf8().
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3160
diff changeset
139 importRootNode.title = self.tr("Google Chrome Import")
1714
e9bd88363184 Added a bookmarks importer for Google Chrome and Chromium.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
140 elif self._id == "chromium":
3190
a9a94491c4fd Changed the code to use QObject.tr() instead of QObject.trUtf8().
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3160
diff changeset
141 importRootNode.title = self.tr("Chromium Import")
1714
e9bd88363184 Added a bookmarks importer for Google Chrome and Chromium.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
142 else:
7268
a28338eaf694 Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7229
diff changeset
143 importRootNode.title = self.tr(
a28338eaf694 Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7229
diff changeset
144 "Imported {0}"
8143
2c730d5fd177 Changed the use of PyQt enums because the way they were used previously is deprecated since two years and replaced some deprecated Qt stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7923
diff changeset
145 ).format(QDate.currentDate().toString(
2c730d5fd177 Changed the use of PyQt enums because the way they were used previously is deprecated since two years and replaced some deprecated Qt stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7923
diff changeset
146 Qt.DateFormat.SystemLocaleShortDate))
1714
e9bd88363184 Added a bookmarks importer for Google Chrome and Chromium.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
147 return importRootNode
e9bd88363184 Added a bookmarks importer for Google Chrome and Chromium.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
148
e9bd88363184 Added a bookmarks importer for Google Chrome and Chromium.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
149 def __processRoots(self, data, rootNode):
e9bd88363184 Added a bookmarks importer for Google Chrome and Chromium.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
150 """
e9bd88363184 Added a bookmarks importer for Google Chrome and Chromium.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
151 Private method to process the bookmark roots.
e9bd88363184 Added a bookmarks importer for Google Chrome and Chromium.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
152
e9bd88363184 Added a bookmarks importer for Google Chrome and Chromium.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
153 @param data dictionary with the bookmarks data (dict)
e9bd88363184 Added a bookmarks importer for Google Chrome and Chromium.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
154 @param rootNode node to add the bookmarks to (BookmarkNode)
e9bd88363184 Added a bookmarks importer for Google Chrome and Chromium.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
155 """
e9bd88363184 Added a bookmarks importer for Google Chrome and Chromium.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
156 for node in data.values():
e9bd88363184 Added a bookmarks importer for Google Chrome and Chromium.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
157 if node["type"] == "folder":
e9bd88363184 Added a bookmarks importer for Google Chrome and Chromium.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
158 self.__generateFolderNode(node, rootNode)
e9bd88363184 Added a bookmarks importer for Google Chrome and Chromium.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
159 elif node["type"] == "url":
e9bd88363184 Added a bookmarks importer for Google Chrome and Chromium.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
160 self.__generateUrlNode(node, rootNode)
e9bd88363184 Added a bookmarks importer for Google Chrome and Chromium.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
161
e9bd88363184 Added a bookmarks importer for Google Chrome and Chromium.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
162 def __generateFolderNode(self, data, rootNode):
e9bd88363184 Added a bookmarks importer for Google Chrome and Chromium.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
163 """
e9bd88363184 Added a bookmarks importer for Google Chrome and Chromium.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
164 Private method to process a bookmarks folder.
e9bd88363184 Added a bookmarks importer for Google Chrome and Chromium.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
165
e9bd88363184 Added a bookmarks importer for Google Chrome and Chromium.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
166 @param data dictionary with the bookmarks data (dict)
e9bd88363184 Added a bookmarks importer for Google Chrome and Chromium.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
167 @param rootNode node to add the bookmarks to (BookmarkNode)
e9bd88363184 Added a bookmarks importer for Google Chrome and Chromium.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
168 """
2403
e3d7a861547c Continued implementing the delayed import.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2302
diff changeset
169 from ..BookmarkNode import BookmarkNode
1714
e9bd88363184 Added a bookmarks importer for Google Chrome and Chromium.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
170 folder = BookmarkNode(BookmarkNode.Folder, rootNode)
1719
c65aefefa2ff Fixed a little omission in the new bookmarks importers.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1715
diff changeset
171 folder.title = data["name"].replace("&", "&&")
1714
e9bd88363184 Added a bookmarks importer for Google Chrome and Chromium.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
172 for node in data["children"]:
e9bd88363184 Added a bookmarks importer for Google Chrome and Chromium.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
173 if node["type"] == "folder":
e9bd88363184 Added a bookmarks importer for Google Chrome and Chromium.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
174 self.__generateFolderNode(node, folder)
e9bd88363184 Added a bookmarks importer for Google Chrome and Chromium.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
175 elif node["type"] == "url":
e9bd88363184 Added a bookmarks importer for Google Chrome and Chromium.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
176 self.__generateUrlNode(node, folder)
e9bd88363184 Added a bookmarks importer for Google Chrome and Chromium.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
177
e9bd88363184 Added a bookmarks importer for Google Chrome and Chromium.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
178 def __generateUrlNode(self, data, rootNode):
e9bd88363184 Added a bookmarks importer for Google Chrome and Chromium.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
179 """
e9bd88363184 Added a bookmarks importer for Google Chrome and Chromium.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
180 Private method to process a bookmarks node.
e9bd88363184 Added a bookmarks importer for Google Chrome and Chromium.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
181
e9bd88363184 Added a bookmarks importer for Google Chrome and Chromium.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
182 @param data dictionary with the bookmarks data (dict)
e9bd88363184 Added a bookmarks importer for Google Chrome and Chromium.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
183 @param rootNode node to add the bookmarks to (BookmarkNode)
e9bd88363184 Added a bookmarks importer for Google Chrome and Chromium.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
184 """
2403
e3d7a861547c Continued implementing the delayed import.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2302
diff changeset
185 from ..BookmarkNode import BookmarkNode
1714
e9bd88363184 Added a bookmarks importer for Google Chrome and Chromium.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
186 bookmark = BookmarkNode(BookmarkNode.Bookmark, rootNode)
e9bd88363184 Added a bookmarks importer for Google Chrome and Chromium.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
187 bookmark.url = data["url"]
1719
c65aefefa2ff Fixed a little omission in the new bookmarks importers.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1715
diff changeset
188 bookmark.title = data["name"].replace("&", "&&")

eric ide

mercurial