Chrome - Editing Preferences-file using JSON.ahk

Stelle Fragen zur Programmierung mit Autohotkey

Moderator: jNizM

BNOLI
Posts: 548
Joined: 23 Mar 2020, 03:55

Chrome - Editing Preferences-file using JSON.ahk

04 May 2020, 03:11

Moin,
in praktisch jedem aktuellen Browser gibt es die "Die am häufigsten besuchten Seiten"-Buttons auf der Startseite.
Bei Goggle Chrome sind das 10 Buttons/Verlinkungen, welche vom Browser in der 'Preferences'-Datei verwaltet werden.
Es handelt sich dabei um eine Datei im JSON-format, welche OHNE Dateiendung auf folgendem Pfad abgelegt ist: "C:\Users\<User Name>\AppData\Local\Google\Chrome\User Data\Default\"

Meine ersten Versuche mit @cocobelgica's :arrow: JSON.ahk, diese Info auszulesen, waren final erfolgreich.
Jetzt soll es ans Editieren gehen. Ziel ist es, diese 'favorites' nach Belieben zu swappen, also morgens 10 "News"-Optionen angezeigt zu bekommen, und mittels Hotkey dann auf 10 "Programmierer"-Optionen (o.a.) zu wechseln.
Frage: gehe ich recht in der Annahme, das ein JSON.Dump()/eine Editierung (wie bei anderen Dateien) Löschung und Neuanlage derselben erfordert? Damit wäre dann doch auch ein Restart von Chrome zur Reinitialisierung erforderlich??
Remember to use [code]CODE[/code]-tags for your multi-line scripts. Stay safe, stay inside, and remember washing your hands for 20 sec !
just me
Posts: 7107
Joined: 02 Oct 2013, 08:51
Location: Germany

Re: Chrome - Editing Preferences-file using JSON.ahk

04 May 2020, 04:28

Moin,

es ist schon länger her, dass ich damit mal herumgespielt habe. Ich bin aber sehr sicher, dass Deine Annahmen richtig sind. Anstelle von "Löschen und Neuanlage" reicht vielleicht auch "Überschreiben".

(Zu Fragen dieserArt fällt mir immer ein: Warum probiert er das nicht einfach aus?) ;)
BNOLI
Posts: 548
Joined: 23 Mar 2020, 03:55

Re: Chrome - Editing Preferences-file using JSON.ahk

04 May 2020, 04:57

(Zu Fragen dieserArt fällt mir immer ein: Warum probiert er das nicht einfach aus?) ;)
Berechtigte Frage. Ursprünglich hatte ich noch mehrere Fragen, die ich allerdings dann zurückgestellt hatte, weil mir die Zeit ausging :roll: ... und weil ich die erstmal testen wollte :lol:

Eine Verständnis-/Interpretationsfrage schwurbelt da z.B. herum (nein, kann man nicht vorab ausprobieren!):

Warum heisst das Auslesen JSON.Load(), aber das Editieren JSON.Dump()??

Haben wir einen Dump (z.B. einer Datenbank) gemacht, war damit ein Datenauszug gemeint.
Dahingegen zum Editieren/Hinzufügen wurde ein (Up)Load vorgenommen, also für beides schlicht umgekehrt!?
Schließlich geht die 'Aktion' von AHK aus ... :think:
Anstelle von "Löschen und Neuanlage" reicht vielleicht auch "Überschreiben".
... was nach meinem (bisherigen) Verständnis (auf Dateiebene) ein zusammenfassender Begriff für "Löschen und Neuanlage" war/ist. Anyway. (M)ein Problem könnte es werden - sollte das 'Prefences'-file durch Chrome gelockt sein ... was ich dann mal ausprobieren muss :D
Remember to use [code]CODE[/code]-tags for your multi-line scripts. Stay safe, stay inside, and remember washing your hands for 20 sec !
BNOLI
Posts: 548
Joined: 23 Mar 2020, 03:55

Re: Chrome - Editing Preferences-file using JSON.ahk

04 May 2020, 09:13

... und so kann's gehn, wieder was gelernt: https://www.autohotkey.com/boards/viewtopic.php?p=200482#p200482
The Dump method is similar to 'stringify', dumping the JSON object into a string, while Load does the opposite and loads a JSON string into an AHK object.
... wobei ich noch völlig auf dem Schlauch stehe wie nun die drei Einträge (zu jeweils einer der Verlinkungen im JSON-file (wie vorab gespoilert)) in der JSON.Dump()-funktion auszusehen haben :shifty:
Remember to use [code]CODE[/code]-tags for your multi-line scripts. Stay safe, stay inside, and remember washing your hands for 20 sec !
just me
Posts: 7107
Joined: 02 Oct 2013, 08:51
Location: Germany

Re: Chrome - Editing Preferences-file using JSON.ahk

04 May 2020, 09:53

Soweit ich mich erinnere, erstellt JSON.Load() aus einem JSON-String ein AHK-Objekt. Was Du daraus über einen Schlüssel auslesen kannst, kannst Du über denselben Schlüssel auch ändern/beschreiben. Danach lässt Du das geänderte AHK-Objekt mit JSON.Dump() wieder in einen JSON-String zurückwandeln. Der kann nun in die Datei zurückgeschrieben werden, falls Chrome das zulässt.

Und dann noch:
"Löschen und Neuanlage" heißt für mich: FileDelete und FileAppend.
"Überschreiben" heißt für mich dagegen: Handle := FileOpen(..., "w"), Handle.Write() und Handle.Close().
User avatar
haichen
Posts: 461
Joined: 09 Feb 2014, 08:24

Re: Chrome - Editing Preferences-file using JSON.ahk

04 May 2020, 10:09

Json format ist ein String. Preference ist eine textdatei.
Die hast du mit Load in ein Objekt geladen (deserialisiert).
Dann machst du damit etwas, zum Beispiel deine Links ändern.
Danach wird das Objekt wieder serialisiert, also in einen String umgewandelt und als Datei preference wieder gepeichert.

Code: Select all

oStr	:= JSON.Load(iStr)
;...
iStr:= JSON.Dump(oStr)
Filedelete, % iPath . "Preferences"
FileAppend , %iStr%, % iPath . "Preferences"
So müsste das funktionieren.
Ich würde das original beim rumprobieren als Kopie sichern ;)
BNOLI
Posts: 548
Joined: 23 Mar 2020, 03:55

Re: Chrome - Editing Preferences-file using JSON.ahk

04 May 2020, 14:22

Danke Euch beiden für diese Hinweise. Werde mich mal damit weiterquälen ;)
Remember to use [code]CODE[/code]-tags for your multi-line scripts. Stay safe, stay inside, and remember washing your hands for 20 sec !

Return to “Ich brauche Hilfe”

Who is online

Users browsing this forum: No registered users and 24 guests