noqqe » blog | sammelsurium | photos | projects | about

Bookmarks

2015-04-06 @ bash, bm, bookmarks, development, pinboard, web

Seit 2013 benutze ich Pinboard. Letztens flog auf GitHub allerdings ein Commandline Bookmark Manager vorbei. Den Gedanken fand ich eigentlich total toll. Die Syntax fand ich komisch, Ausgabe sah strange aus. Aber es kam auch noch erschwerend hinzu, dass es nicht mal gebaut werden konnte. Also hab ich weiter gesucht und einen ziemlich schönen gefunden.

bm ist in Bash geschrieben, sah schön aus, einfach gestrickt. Eigentlich super. Aber auch hier liess die Bedienung etwas zu wünschen übrig. Aber da das Zeug ja Opensource ist, fork it baby.

bm Fork

Was anfangs nur ein “ja ich passe mir das Teil ein klein bisschen an” war, wurde irgendwie zum Komplettumbau.

  • Der ganze Dropbox Folder Kack ist weg
  • HTML Preview im Browser mit webkit2png ist weg
  • Title wird automatisch mit curl beim adden eines Links hinzugefügt.
  • Syntax zum Bedienen stark umgeschrieben
  • Clean Funktion entfernt
  • Datum (wann wurde der Link geadded) wird automatisch hinzugefügt.
  • Farblich / Formatsmäßig umstrukturiert.

Das Repo: github.com/noqqe/bm

Eine Lizenz würde ich dem ganzen auch gerne hinzufügen, aber da der original Autor noch keine Lizenz hinzugefügt hat, muss ich damit erstmal warten.

Migration von Pinboard

Jetzt musste ich nur noch alle >1000 Bookmarks von Pinboard umziehen. Pinboard bietet einen json Export der eigenen Bookmarks mit allen Meta Informationen an.

Diesen hab ich mir per einfacher Download Funktion lokal gespeichert und mittels dieses Python Schnipsels in das “neue” bm Format umkonvertiert.

import json

with open('dump.json') as dataf:
  data = json.load(dataf)
    for x in data:
      print x["href"]+"|"+x["tags"]+"|"+x["time"]+"|"+x["description"]

Und wenn es beim Umleiten des STDOUT mit Python wegen des Encodings nicht klappt, export PYTHONIOENCODING=utf-8 benutzen. Saugeil. Damit hatte ich immer Probleme.

Ich weiss von ein paar Leuten, dass Sie den RSS Feed meines Pinboard Profils lesen. Für den Moment wird es dort keine neuen Dinge geben. Eventuell bastle ich mich in Python ein kleines Skript dass meine Bookmarks regelmäßig in RSS giesst. Da schau ich aber erstmal.

Comments (7)

Matthias on 2015-04-08T18:29:05.769749
Sieht gut aus und webkit2png gibts auf Linux eh nicht. Beim mir kam eine Fehlermeldung beim adden: "ggrep" kannte mein System nicht und auch die Websuche ergab nichts. Ich habe einfach ein "grep" daraus gemacht und jetzt läufts. Eine *rm* Funktion wäre noch klasse, weil vermutlich irgendwann das händische Löschen recht aufwendig wird. Und vielleicht eine Option, um den gefundenen Link in die *Zwischenablage* zu schieben. Auf alle Fälle ein dickes **Dankeschön**.

noqqe on 2015-04-09T09:15:09.063398
Ah siehst, das mit Webkit2png wusste ich garnicht. Mit dem "ggrep"... Das hat mit OpenBSD zu tun, dass ich benutze. Für das Title Fetching brauche ich das "Gnu Grep", da das mitgelieferte grep unter BSD ein paar Optionen die ich brauche nicht mitbringt. Bzgl. "rm": wie wäre das am Besten umzusetzen? So was gelöscht werden sollte? Einen eindeutigen Indikator gibts ja nicht.

Anonymous on 2015-04-09T17:33:39.965263
Offtopic: Dein identicon: http://www.instructables.com/files/orig/FM5/CVAV/GNOD5VX7/FM5CVAVGNOD5VX7.png

matthias on 2015-04-09T17:45:52.773150
Ja, dazu müsste jeder Eintrag einen eindeutigen Schlüssel bekommen anhand dessen er identifiziert werden kann. Ich habe sogar noch weiter herum gesponnen: wenns außerdem noch git-Funktionalität gäbe, könnte auf einfach Weiße gepusht und gepult werden. Dadurch wäre ein einfaches Verteilen auf verschiedene Instanzen möglich oder man sammelt sogar kollaborativ. *Die Wünsche gehen nicht aus.*

noqqe on 2015-04-10T10:55:37.399750
hahaha :D

Matthias on 2015-04-14T13:22:48.544812
Ich habe das zweite jetzt mal mit *rsync* realisiert: https://github.com/mtthff/bm/tree/clipboard Funktioniert ganz rund. Per cronjob mache ich mir täglich ein Backup der Datei auf dem Host, falls ich mich mal vertue. Was hältst du davon?

noqqe on 2015-04-14T13:41:33.884715
Huh, sieht doch gut aus. Ich mach auch Backups, aber ganz einfach `cp ~/.bookmarks ~/Backups/bookmarks.$(date '+\%F')` So Conflicts werden halt bei dir überschrieben :) Musst halt vorsichtig sein :=)