src/eric7/WebBrowser/Bookmarks/BookmarksImporters/FirefoxImporter.py

Mon, 07 Nov 2022 17:19:58 +0100

author
Detlev Offenbach <detlev@die-offenbachs.de>
date
Mon, 07 Nov 2022 17:19:58 +0100
branch
eric7
changeset 9482
a2bc06a54d9d
parent 9473
3f23dbf37dbe
child 9489
c03b8323d11a
permissions
-rw-r--r--

Corrected/acknowledged some bad import style and removed some obsolete code.

1716
d634df56a664 Added a bookmarks importer for Firefox.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1 # -*- coding: utf-8 -*-
d634df56a664 Added a bookmarks importer for Firefox.
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) 2012 - 2022 Detlev Offenbach <detlev@die-offenbachs.de>
1716
d634df56a664 Added a bookmarks importer for Firefox.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
4 #
d634df56a664 Added a bookmarks importer for Firefox.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
5
d634df56a664 Added a bookmarks importer for Firefox.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
6 """
d634df56a664 Added a bookmarks importer for Firefox.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
7 Module implementing an importer for Firefox bookmarks.
d634df56a664 Added a bookmarks importer for Firefox.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
8 """
d634df56a664 Added a bookmarks importer for Firefox.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
9
d634df56a664 Added a bookmarks importer for Firefox.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
10 import os
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
11 import sqlite3
1716
d634df56a664 Added a bookmarks importer for Firefox.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
12
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
13 from PyQt6.QtCore import QCoreApplication, QDate, Qt, QUrl
1716
d634df56a664 Added a bookmarks importer for Firefox.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
14
9473
3f23dbf37dbe Resorted the import statements using isort.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9413
diff changeset
15 from eric7 import Globals
3f23dbf37dbe Resorted the import statements using isort.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9413
diff changeset
16 from eric7.EricGui import EricPixmapCache
1716
d634df56a664 Added a bookmarks importer for Firefox.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
17
9473
3f23dbf37dbe Resorted the import statements using isort.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9413
diff changeset
18 from .BookmarksImporter import BookmarksImporter
1716
d634df56a664 Added a bookmarks importer for Firefox.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
19
d634df56a664 Added a bookmarks importer for Firefox.
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):
1716
d634df56a664 Added a bookmarks importer for Firefox.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
22 """
d634df56a664 Added a bookmarks importer for Firefox.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
23 Module function to get information for the given source id.
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
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")
1716
d634df56a664 Added a bookmarks importer for Firefox.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
26 @return tuple with an icon (QPixmap), readable name (string), name of
d634df56a664 Added a bookmarks importer for Firefox.
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
1716
d634df56a664 Added a bookmarks importer for Firefox.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
31 """
8205
4a0f1f896341 Applied some code simplifications suggested by the new Simplify checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8143
diff changeset
32 if sourceId != "firefox":
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
33 raise ValueError("Unsupported browser ID given ({0}).".format(sourceId))
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
34
8205
4a0f1f896341 Applied some code simplifications suggested by the new Simplify checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8143
diff changeset
35 if Globals.isWindowsPlatform():
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
36 standardDir = os.path.expandvars("%APPDATA%\\Mozilla\\Firefox\\Profiles")
8205
4a0f1f896341 Applied some code simplifications suggested by the new Simplify checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8143
diff changeset
37 elif Globals.isMacPlatform():
4a0f1f896341 Applied some code simplifications suggested by the new Simplify checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8143
diff changeset
38 standardDir = os.path.expanduser(
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
39 "~/Library/Application Support/Firefox/Profiles"
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
40 )
8205
4a0f1f896341 Applied some code simplifications suggested by the new Simplify checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8143
diff changeset
41 else:
4a0f1f896341 Applied some code simplifications suggested by the new Simplify checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8143
diff changeset
42 standardDir = os.path.expanduser("~/.mozilla/firefox")
4a0f1f896341 Applied some code simplifications suggested by the new Simplify checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8143
diff changeset
43 return (
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
44 EricPixmapCache.getPixmap("chrome"),
8205
4a0f1f896341 Applied some code simplifications suggested by the new Simplify checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8143
diff changeset
45 "Mozilla Firefox",
4a0f1f896341 Applied some code simplifications suggested by the new Simplify checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8143
diff changeset
46 "places.sqlite",
4a0f1f896341 Applied some code simplifications suggested by the new Simplify checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8143
diff changeset
47 QCoreApplication.translate(
4a0f1f896341 Applied some code simplifications suggested by the new Simplify checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8143
diff changeset
48 "FirefoxImporter",
4a0f1f896341 Applied some code simplifications suggested by the new Simplify checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8143
diff changeset
49 """Mozilla Firefox stores its bookmarks in the"""
4a0f1f896341 Applied some code simplifications suggested by the new Simplify checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8143
diff changeset
50 """ <b>places.sqlite</b> SQLite database. This file is"""
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
51 """ usually located in""",
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
52 ),
8205
4a0f1f896341 Applied some code simplifications suggested by the new Simplify checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8143
diff changeset
53 QCoreApplication.translate(
4a0f1f896341 Applied some code simplifications suggested by the new Simplify checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8143
diff changeset
54 "FirefoxImporter",
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
55 """Please choose the file to begin importing bookmarks.""",
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
56 ),
8205
4a0f1f896341 Applied some code simplifications suggested by the new Simplify checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8143
diff changeset
57 standardDir,
4a0f1f896341 Applied some code simplifications suggested by the new Simplify checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8143
diff changeset
58 )
1716
d634df56a664 Added a bookmarks importer for Firefox.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
59
d634df56a664 Added a bookmarks importer for Firefox.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
60
d634df56a664 Added a bookmarks importer for Firefox.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
61 class FirefoxImporter(BookmarksImporter):
d634df56a664 Added a bookmarks importer for Firefox.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
62 """
d634df56a664 Added a bookmarks importer for Firefox.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
63 Class implementing the Chrome bookmarks importer.
d634df56a664 Added a bookmarks importer for Firefox.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
64 """
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
65
5605
1950fe1a32c4 Finished fixing code style issues detected by the extended style checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5389
diff changeset
66 def __init__(self, sourceId="", parent=None):
1716
d634df56a664 Added a bookmarks importer for Firefox.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
67 """
d634df56a664 Added a bookmarks importer for Firefox.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
68 Constructor
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
69
5605
1950fe1a32c4 Finished fixing code style issues detected by the extended style checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5389
diff changeset
70 @param sourceId source ID (string)
1716
d634df56a664 Added a bookmarks importer for Firefox.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
71 @param parent reference to the parent object (QObject)
d634df56a664 Added a bookmarks importer for Firefox.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
72 """
8218
7c09585bd960 Applied some more code simplifications suggested by the new Simplify checker (super(Foo, self) => super()).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8205
diff changeset
73 super().__init__(sourceId, parent)
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
74
1716
d634df56a664 Added a bookmarks importer for Firefox.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
75 self.__fileName = ""
d634df56a664 Added a bookmarks importer for Firefox.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
76 self.__db = None
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
77
1716
d634df56a664 Added a bookmarks importer for Firefox.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
78 def setPath(self, path):
d634df56a664 Added a bookmarks importer for Firefox.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
79 """
d634df56a664 Added a bookmarks importer for Firefox.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
80 Public method to set the path of the bookmarks file or directory.
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
81
1716
d634df56a664 Added a bookmarks importer for Firefox.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
82 @param path bookmarks file or directory (string)
d634df56a664 Added a bookmarks importer for Firefox.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
83 """
d634df56a664 Added a bookmarks importer for Firefox.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
84 self.__fileName = path
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
85
1716
d634df56a664 Added a bookmarks importer for Firefox.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
86 def open(self):
d634df56a664 Added a bookmarks importer for Firefox.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
87 """
d634df56a664 Added a bookmarks importer for Firefox.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
88 Public method to open the bookmarks file.
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
89
1716
d634df56a664 Added a bookmarks importer for Firefox.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
90 @return flag indicating success (boolean)
d634df56a664 Added a bookmarks importer for Firefox.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
91 """
d634df56a664 Added a bookmarks importer for Firefox.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
92 if not os.path.exists(self.__fileName):
d634df56a664 Added a bookmarks importer for Firefox.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
93 self._error = True
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
94 self._errorString = self.tr("File '{0}' does not exist.").format(
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
95 self.__fileName
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
96 )
1716
d634df56a664 Added a bookmarks importer for Firefox.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
97 return False
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
98
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
99 try:
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
100 self.__db = sqlite3.connect(self.__fileName)
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
101 except sqlite3.DatabaseError as err:
1716
d634df56a664 Added a bookmarks importer for Firefox.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
102 self._error = True
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
103 self._errorString = self.tr("Unable to open database.\nReason: {0}").format(
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
104 str(err)
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
105 )
1716
d634df56a664 Added a bookmarks importer for Firefox.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
106 return False
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
107
1716
d634df56a664 Added a bookmarks importer for Firefox.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
108 return True
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
109
1716
d634df56a664 Added a bookmarks importer for Firefox.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
110 def importedBookmarks(self):
d634df56a664 Added a bookmarks importer for Firefox.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
111 """
d634df56a664 Added a bookmarks importer for Firefox.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
112 Public method to get the imported bookmarks.
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
113
1716
d634df56a664 Added a bookmarks importer for Firefox.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
114 @return imported bookmarks (BookmarkNode)
d634df56a664 Added a bookmarks importer for Firefox.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
115 """
2403
e3d7a861547c Continued implementing the delayed import.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2302
diff changeset
116 from ..BookmarkNode import BookmarkNode
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
117
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
118 importRootNode = BookmarkNode(BookmarkNode.Root)
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
119
1716
d634df56a664 Added a bookmarks importer for Firefox.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
120 # step 1: build the hierarchy of bookmark folders
d634df56a664 Added a bookmarks importer for Firefox.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
121 folders = {}
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
122
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
123 try:
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
124 cursor = self.__db.cursor()
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
125 cursor.execute(
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
126 "SELECT id, parent, title FROM moz_bookmarks "
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
127 "WHERE type = 2 and title !=''"
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
128 )
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
129 for row in cursor:
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
130 id_ = row[0]
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
131 parent = row[1]
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
132 title = row[2]
8260
2161475d9639 Applied some more code simplifications suggested by the new Simplify checker (Y108: use ternary operator).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8218
diff changeset
133 folder = (
2161475d9639 Applied some more code simplifications suggested by the new Simplify checker (Y108: use ternary operator).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8218
diff changeset
134 BookmarkNode(BookmarkNode.Folder, folders[parent])
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
135 if parent in folders
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
136 else BookmarkNode(BookmarkNode.Folder, importRootNode)
8260
2161475d9639 Applied some more code simplifications suggested by the new Simplify checker (Y108: use ternary operator).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8218
diff changeset
137 )
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
138 folder.title = title.replace("&", "&&")
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
139 folders[id_] = folder
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
140 except sqlite3.DatabaseError as err:
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
141 self._error = True
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
142 self._errorString = self.tr("Unable to open database.\nReason: {0}").format(
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
143 str(err)
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
144 )
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
145 return None
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
146
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
147 try:
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
148 cursor = self.__db.cursor()
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
149 cursor.execute(
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
150 "SELECT parent, title, fk, position FROM moz_bookmarks"
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
151 " WHERE type = 1 and title != '' ORDER BY position"
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
152 )
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
153 for row in cursor:
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
154 parent = row[0]
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
155 title = row[1]
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
156 placesId = row[2]
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
157
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
158 cursor2 = self.__db.cursor()
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
159 cursor2.execute(
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
160 "SELECT url FROM moz_places WHERE id = {0}".format( # secok
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
161 placesId
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
162 )
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
163 )
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
164 row2 = cursor2.fetchone()
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
165 if row2:
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
166 url = QUrl(row2[0])
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
167 if not title or url.isEmpty() or url.scheme() in ["place", "about"]:
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
168 continue
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
169
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
170 if parent in folders:
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
171 bookmark = BookmarkNode(BookmarkNode.Bookmark, folders[parent])
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
172 else:
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
173 bookmark = BookmarkNode(BookmarkNode.Bookmark, importRootNode)
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
174 bookmark.url = url.toString()
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
175 bookmark.title = title.replace("&", "&&")
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
176 except sqlite3.DatabaseError as err:
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
177 self._error = True
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
178 self._errorString = self.tr("Unable to open database.\nReason: {0}").format(
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
179 str(err)
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
180 )
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
181 return None
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
182
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
183 importRootNode.setType(BookmarkNode.Folder)
1716
d634df56a664 Added a bookmarks importer for Firefox.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
184 if self._id == "firefox":
3190
a9a94491c4fd Changed the code to use QObject.tr() instead of QObject.trUtf8().
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3160
diff changeset
185 importRootNode.title = self.tr("Mozilla Firefox Import")
1716
d634df56a664 Added a bookmarks importer for Firefox.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
186 else:
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
187 importRootNode.title = self.tr("Imported {0}").format(
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
188 QDate.currentDate().toString(Qt.DateFormat.SystemLocaleShortDate)
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
189 )
1716
d634df56a664 Added a bookmarks importer for Firefox.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
190 return importRootNode

eric ide

mercurial