Mit der heißen Nadel gestrickt
Für diesen Blog verwende ich aktuell das wunderbare BSSG1. Das Teil ist schnell, wird liebevoll gepflegt und bringt sehr ansprechende Themes mit.
So etwas hätte ich auch gerne für meine Gemini Capsule2. Da die Szene aber eher klein ist, gibt es keine “großen” Apps oder SSG, sondern etliche kleine Pakete, um aus Markdown oder anderen Quellen Gemtext zu erzeugen. Die Auswahl ist schwierig und einige Projekte werden nicht mehr weitergeführt.
Für den Transfer meiner alten Instagram-Posts zu Pixelfed habe ich tatsächlich Excel und VBA verwendet. Die Software muss ich sowieso täglich im Büro nutzen, ich komme leider nicht dran vorbei. Da lag es nahe, die Daten einfach in eine Tabelle zu importieren und per Macro ein einfaches Script zu schreiben, welches dann per toot3 nach Pixelfed schreibt.
Mein Wissen über VBA stammt zu 100% aus Suchen nach genau dem Problem, welches gerade zu lösen war. Dementsprechend sieht mein Quellcode, naja, gewöhnungsbedürftig aus. Aber er erfüllt seinen Zweck
Damals™ war ich noch recht fit in Turbo Pascal, aber das ist halt Jahrzehnte her. Anstatt mich nun in Free Pascal einzuarbeiten, habe ich die anstehende Aufgabe daher erstmal wieder per Tabellenkalkulation und Macro gelöst.
Das Ergebnis ist eine LibreCalc-Datei, in der es verschiedene Blätter mit rudimentärer Konfiguration, Postings, Seiteninhalten und einem Gemfeed gibt. Damit kann ich zumindest mein Gemlog pflegen, ohne jede .gmi einzeln ändern zu müssen.
Nächster Schritt: das Projekt nach Python oder eventuell Rust zu portieren. Ersteres habe ich schon mal ausprobiert, letzteres kenne ich nur vom Hörensagen.
Für diejenigen unter Euch, die trashige Horrorfilme mögen und einigermaßen abgehärtet sind, hier der Basic-Code aus Libre. Popcorn müsst Ihr selbst besorgen. 🤣
Sub WriteBlog
Dim spalte as Integer
Dim zeile as Integer
Dim feedzeile as Integer
Dim postings as Integer
Dim gmidatei as String
Dim header as String
Dim content as String
Dim backtoblog as String
Dim postingdate as Date
Dim previousmonth as Integer
Dim headermonth as String
previousmonth = 0
postings = ThisComponent.Sheets.getbyname("Config").getCellRangeByName("B2").value
zeile = 0
feedzeile = 2
for spalte = 1 to postings
gmidatei = "~/gemini/"&Left((ThisComponent.Sheets.getbyname("Postings").getCellbyPosition(spalte,1).getstring()),10)&".gmi"
postingdate = ThisComponent.Sheets.getbyname("Postings").getCellbyPosition(spalte,1).getstring()
headermonth = Choose (Month(postingdate), "January", "February", "March", "April" , "May","June","July","August","September","October","November","December")
header = ThisComponent.Sheets.getbyname("Postings").getCellbyPosition(spalte,0).getstring()
content = ThisComponent.Sheets.getbyname("Postings").getCellbyPosition(spalte,3).getstring()
backtoblog = ThisComponent.Sheets.getbyname("Config").getCellRangeByName("B9").getstring()
outputfile = Freefile
if (Month(postingdate) <> previousmonth) then
if (zeile > 0) then
zeile = zeile + 1
end if
ThisComponent.Sheets.getbyname("blog.gmi").getCellbyPosition(0,zeile).string="## " & headermonth & " "&Year(postingdate)
zeile = zeile + 2
previousmonth = Month(postingdate)
end if
ThisComponent.Sheets.getbyname("blog.gmi").getCellbyPosition(0,zeile).string="=> "&Left((ThisComponent.Sheets.getbyname("Postings").getCellbyPosition(spalte,1).getstring()),10)&".gmi "&Iif (Day(postingdate) < 10, "0" ,"")&Day(postingdate)&"."&Iif (Month(postingdate) < 10, "0" ,"")&Month(postingdate)&"."&Year(postingdate)&" - " & header
ThisComponent.Sheets.getbyname("feed.gmi").getCellbyPosition(0,feedzeile).string="=> gemini://gemini.zeitverschreib.de/blog/"&Left((ThisComponent.Sheets.getbyname("Postings").getCellbyPosition(spalte,1).getstring()),10)&".gmi/ "&Year(postingdate)&"-"&Iif (Month(postingdate) < 10, "0" ,"")&Month(postingdate)&"-"&Iif (Day(postingdate) < 10, "0" ,"")&Day(postingdate)&" "& header
open gmidatei for output as outputfile
Print #outputfile, "## " & header
Print #outputfile, ""
Print #outputfile,content
Print #outputfile, ""
Print #outputfile,backtoblog
close outputfile
zeile = zeile + 1
feedzeile = feedzeile + 1
next spalte
End Sub