Firefox Lesezeichen im/exportieren

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
maksimilian
User
Beiträge: 86
Registriert: Freitag 2. November 2018, 20:59

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
Benutzeravatar
JakobDev
User
Beiträge: 63
Registriert: Mittwoch 17. Juli 2019, 17:20

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.
Benutzeravatar
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
maksimilian
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.
__deets__
User
Beiträge: 14545
Registriert: Mittwoch 14. Oktober 2015, 14:29

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.
Benutzeravatar
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.
sourceserver.info - sourceserver.info/wiki/ - ausgestorbener Support für HL2-Server
maksimilian
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 ?
__deets__
User
Beiträge: 14545
Registriert: Mittwoch 14. Oktober 2015, 14:29

Wie sperrst du die denn? Und wie verhaelt sich das in der Aufwaendigkeit dazu, etwas zu benutzen, dass dafuer gemacht ist, dieses Problem zu loesen?
Benutzeravatar
noisefloor
User
Beiträge: 4187
Registriert: Mittwoch 17. Oktober 2007, 21:40
Wohnort: WW
Kontaktdaten:

Hallo,
Macht es Sinn bzw. ginge es so, die places.sqlite in allen beteiligten Systemen zu sperren, die neueste auszulesen...
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.

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
maksimilian
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.
__deets__
User
Beiträge: 14545
Registriert: Mittwoch 14. Oktober 2015, 14:29

Du verstehst falsch. Wenn du den selbst betreibst, ist genau das NICHT der Fall.
maksimilian
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 ?
__deets__
User
Beiträge: 14545
Registriert: Mittwoch 14. Oktober 2015, 14:29

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.
Antworten