Hallo Ihr,
ich möchte in einem LAN die FF Lesezeichen synchronisieren. Da für meine Zwecke der FF Synch Server zu aufwändig ist und ich die Funktion auch lokal halten will, dachte ich an eine einfache, trotzdem automatisierte Methode. Gibt es die Möglichkeit mit Python Lesezeichen zu ex/importieren ?
maksimilian
Firefox Lesezeichen im/exportieren
Mir ist für Python kein Modul bekannt, das diese Funktion bietet. Firefox speichert die Lesezeichen in der places.sqlite im Profilordner. Du wirst dich wohl in das sqlite3 Modul von Python einarbeiten und die Datenbank damit bearbeiten müssen.
- DeaD_EyE
- User
- Beiträge: 1232
- Registriert: Sonntag 19. September 2010, 13:45
- Wohnort: Hagen
- Kontaktdaten:
Code: Alles auswählen
import os
import sqlite3
import platform
from pathlib import Path
def get_places():
my_sys = platform.system()
if my_sys == "Windows":
profile_dir = "Mozilla/Firefox/Profiles"
profiles = Path(os.environ.get("APPDATA")) / profile_dir
return list(profiles.glob("*/places.sqlite"))
else:
raise NotImplementedError(f"{my_sys} is not implemented.")
for place in get_places():
with sqlite3.connect(place) as db:
cur = db.cursor()
cur.execute("SELECT url from moz_places")
for row in cur:
print(row[0])
Ich würde dir folgendes empfehlen: https://sqlitebrowser.org/
Mit dem Programm kannst du die Struktur der Datenbank und die Daten auch einsehen.
Gut wäre es noch, wenn du lernst wie man mittels SQL-Statements die Struktur abfragen kannst.
So ein bisschen SQL-Syntax wirst du dir schon aneignen müssen. Einen ORM (z.B. sqlalchemy) würde ich dafür nicht verwenden.
sourceserver.info - sourceserver.info/wiki/ - ausgestorbener Support für HL2-Server
-
- User
- Beiträge: 86
- Registriert: Freitag 2. November 2018, 20:59
Danke für Eure Tipps. Ich versuche, mir die Sache einfacher zu machen. Besteht im NAS die Möglichkeit, places.sqlite zu sharen ? Wenn nicht, würde ich die jüngste Version der Datei in allen anderen Clients durch Kopieren übernehmen.
Das ist eine doofe Idee. Durch kopieren bekommst du immer nur den "winner takes it all" der letzten Kopie. Im besten Fall. Im schlimmsten zu komplettem Datenverlust. Und sqlite sagt explizit, dass sie file-sharing via network filesystemen nicht empfehlen.
- DeaD_EyE
- User
- Beiträge: 1232
- Registriert: Sonntag 19. September 2010, 13:45
- Wohnort: Hagen
- Kontaktdaten:
Du könntest auf der NAS eine neue DB erstellen (ich weiß nicht ob das so gut ist) und dort hin alle Lesezeichen in die DB auf der NAS mit sql hinzufügen.
Das sollte auch über Netzwerkfreigaben funktionieren, wenn das Laufwerk als Netzwerklaufwerk eingegangen ist. Python kann mit open auf das Dateisystem zugreifen, aber nicht auf Netzwerkfreigaben. Deswegen braucht man das Netzwerklaufwerk, also eine Freigabe, die einem Laufwerksbuchstaben zugeordnet ist.
Das sollte auch über Netzwerkfreigaben funktionieren, wenn das Laufwerk als Netzwerklaufwerk eingegangen ist. Python kann mit open auf das Dateisystem zugreifen, aber nicht auf Netzwerkfreigaben. Deswegen braucht man das Netzwerklaufwerk, also eine Freigabe, die einem Laufwerksbuchstaben zugeordnet ist.
sourceserver.info - sourceserver.info/wiki/ - ausgestorbener Support für HL2-Server
-
- User
- Beiträge: 86
- Registriert: Freitag 2. November 2018, 20:59
Erstens ist ein Ratschlag "Du könntest auf der NAS eine neue DB erstellen (ich weiß nicht ob das so gut ist) " etwas merkwürdig, aber ich komme auch mit dem ganzen Text inhaltlich nicht zurecht.
Macht es Sinn bzw. ginge es so, die places.sqlite in allen beteiligten Systemen zu sperren, die neueste auszulesen (via DB-Schnittstelle), dann bei anderen Hosts einzulesen und anschließend die Sperre aufzuheben ?
Macht es Sinn bzw. ginge es so, die places.sqlite in allen beteiligten Systemen zu sperren, die neueste auszulesen (via DB-Schnittstelle), dann bei anderen Hosts einzulesen und anschließend die Sperre aufzuheben ?
- noisefloor
- User
- Beiträge: 4187
- Registriert: Mittwoch 17. Oktober 2007, 21:40
- Wohnort: WW
- Kontaktdaten:
Hallo,
Weil du im Ausgangsposten von "aufwendig" sprichst: was du vorhast, ist mega-aufwendig, wenn es zuverlässig laufen soll. Der Sync-Server von Mozilla nutzen ist die einfache und robuste Lösung.
Gruß, noisefloor
Wie definierst du denn "die neuste"? Lt. deinem Eingangspost hast du ja keinen Master mit X Slaves, sondern X gleichberechtigte DBs. Es gibt DBs, die genau dafür gemacht sind (also Master-Master Replikation über X Instanzen), aber SQLite ist das definitiv _nicht_. Heißt, du musst dich definitiv auch um's Konfliktmanangment beim Abgleich kümmern. Und ich behaupte mal: egal wie du es anstellst, es wird im 1. Versuch nicht so funktionieren, wie du es willst.Macht es Sinn bzw. ginge es so, die places.sqlite in allen beteiligten Systemen zu sperren, die neueste auszulesen...
Weil du im Ausgangsposten von "aufwendig" sprichst: was du vorhast, ist mega-aufwendig, wenn es zuverlässig laufen soll. Der Sync-Server von Mozilla nutzen ist die einfache und robuste Lösung.
Gruß, noisefloor
-
- User
- Beiträge: 86
- Registriert: Freitag 2. November 2018, 20:59
So wie ich es bisher verstehe, benötigt der Synch Server einen Mozilla Account, selbst wenn man seine Daten lokal halten will. Es wird also beim Synchronisieren immer eine Verbindung zu einem Mozilla Server in USA geben.
-
- User
- Beiträge: 86
- Registriert: Freitag 2. November 2018, 20:59
OK, dann wäre ich falsch informiert. Kannst Du mir bitte eine praktikable Info-Quelle nennen ?
Ich kann da nur genauso googeln wie du. Du hast doch schon von dem Ding gehoert, warum suchst du nicht danach? Wenn du Probleme bei der Installation hast, kannst du dich natuerlich gerne melden, aber Vorleseservice mag ich nicht machen.