knuspermagier.de
Er bloggt noch? Krass!

Foto-Doppelleben

Jahrelang lebte ich ein Doppelleben. Meine iPhone-Fotos waren in der Photos.app gespeichert und alle richtigen Fotos halt in Lightroom, als RAW-Dateien. Ich wehrte mich immer dagegen, einfach alle Fotos in Photos zu packen, da es mit den RAWs immer zu große Datenmengen waren und allgemein zu viele Fotos, man macht ja doch öfters mal zweihundert Schnappschüsse von der gleichen Sache.

Der große Nachteil: Man guckt sich die Fotos der richtigen Kamera niemals an, denn wann schließt man schonmal die Lightroom-SSD an und blättert durch. Selten. Spätestens als die Photos.app die ganzen Memory-Funktionen mit den generierten Videos bekam, verspürte ich ich die Lust, auch die guten Fotos dort drin zu haben, also begann ich Fotos, die ich in Lightroom schonmal ausgesucht hatte, weil sie zum Beispiel in Fotobüchern oder sowas auftauchten, zu exportieren und in Photos.app zu importieren.

Das klappte auch ziemlich gut und mittlerweile erfreue ich mich an diversen Fotos und finde es auch super, mal eben die Fotos des Island-Urlaubs schnell angucken zu können, ohne größere Umwege gehen zu müssen.


Wie des Öfteren, wenn man irgendwas anfängt und es nicht komplett zu Ende bringt, hatte ich nun, ein Jahr nach der letzten partiellen Export-Aktion, nun allerdings das Problem, dass ich keine Ahnung hatte, welche Bilder ich nun schon importiert hatte und welche nicht, da ich es mir in Lightroom natürlich nicht gesondert markiert hatte.

Um das Projekt abzuschließen brauchte ich nun also eine Liste von Fotos, die ich schon importiert hatte. Was machen wir da am besten? Zum Glück, ist die Photos.app-Library nur eine SQLite-Datenbank.

Tatsächlich ist es wirklich super-einfach. Die Query, die man gegen Datenbank (liegt in ~/Pictures/Photos Library.photoslibrary/database/photos.sqlite) abfeuern muss lautet:

select ZORIGINALFILENAME from ZADDITIONALASSETATTRIBUTES where ZORIGINALFILENAME LIKE '%pwa%'

Natürlich habe ich hier den Vorteil, dass meine Datein alle automatisch so heißen: 20210806-164907-pwa-0172.jpg. Irgendwann inspirierte mich Pablo dazu und jetzt paid es off, dass die Dateien nicht als IMG_0172.jpg im Dateisystem abgelegt werden.


Nun hatte ich also eine Liste von knapp fünftausend Dateinamen, wie finde ich die nun alle in Lightroom und wie markiere ich sie am Besten? Meine erste Idee war es, die Dateinamen einfach in den Filter zu pasten, aber leider schmiert Lightroom ab, wenn man da so viel auf einmal reinpackt, schade.

Zweiter Versuch: Die Anzahl der Suchworte etwas reduzieren. Eigentlich brauche ich ja nur die Tage, am Ende liegt ja alles in Tag-basierten Ordnern im Dateisystem und es reicht mir, die Tage zu markieren und nicht jedes exportierte Foto. Ich schnippel mir also kurz per Regex die ersten acht Zeichen raus und mache folgendes:

cat Photos.sqlite.csv | sort | uniq > sorted.txt

Ja, ich hätte den Regex auch direkt mit in dem Oneliner machen können, aber ich wusste nicht wie, und es kurz in Sublime zu machen, ging schneller. Wichtig ist übrigens sort vor uniq zu machen, sonst klappt es natürlich nicht. Das Ergebnis waren auf jeden Fall nur noch 106 Zeilen in der Datei, das ist ja übersichtlich.

Die paar Zeilen würde ich jetzt gerne doch nochmal ins Lightroom Suchfeld pasten, aber leider stürzt es weiterhin ab, sobald ich in den Filtermodus gehe, weil er die tausenden Dateinamen noch gespeichert hat und das Feld damit prefilled. Tolle Wurst.


Nach einem Optimize Catalogue klappte es aber, juchu. Nun konnte ich also alle Bilder doch noch mit einem “exported-to-photos”-Tag versehen. Leider muss ich die Markierung in der Ordner-Liste doch noch manuell machen.

screenshot-2022-06-25-at-11.18.33.png
Grün heißt exportiert!

Würfelspiele

Auf dem neuen Album von Schandmaul ist ein Song mit dem Titel “Der elfseitige Würfel”. Er ist als Bonus-Track markiert und gefällt mir sehr gut, es ist, würde ich sagen, sogar einer der besten des Albums. Schade, dass es nur ein Bonus ist!

Naja, jedenfalls habe ich dabei entdeckt, dass mir Songs, in denen es um Würfel geht, irgendwie besonders gut gefallen. Von Saltatio Mortis gibt es zum Beispiel mit Tod und Teufel auch ein Lied, in dem gewürfelt wird! Ich legte mir also eine Spotify-Playlist mit allen Liedern an, die mir zum Thema Würfeln einfallen und leider musste ich nach dem Zweiten bereits aufhören. Mir fiel kein weiteres ein. Ich war mir allerdings recht sicher, dass es von Subway to Sally doch auch ein Lied gab, in dem gewürfelt wurde.

Ich rätselte für einige Tage und fragte sogar, ohne Erfolg, Twitter. Sollte meine neu entdeckte Liebe zu Liedern, die vom Würfeln handeln, schon zu Ende sein, weil mir nicht einfallen will, in welchem Subway to Sally-Lied gewürfelt wird?


Zum Glück kann ich ja programmieren.

Ich brauchte eine Möglichkeit alle Songtexte von Subway to Sally nach Wörtern, die was mit Würfeln zu tun haben, zu durchsuchen. Leider gibt es meines Wissens nach keine allumfassende Lyrics-Datenbank mit einer Suche, die mir ermöglicht eine derartige Suchanfrage zu formulieren. Markus empfahl mir genius.com, das hat ja eine Volltextsuche, aber man kann halt nicht zusätzlich nach Artist filtern.

Immerhin hat Genius eine API, mit der man sich alle gelisteten Songs zu einem Artist holen kann, aber leider nicht die Songtexte. Das scheint alles ein sehr kompliziertes Thema zu sein, ich kann mich noch erinnern, dass vor zehn oder zwanzig Jahren schon Seiten abgemahnt wurden, weil sie Songtexte veröffentlichten. Vielleicht kriegt man die hier deshalb auch nicht über die API. Wer weiß. Naja. Aber wenigstens bekommt man die URLs der Genius-Webseite zu dem jeweiligen Song und kann den Text da einfach aus dem HTML scrapen. Ein Hoch auf serverseitig gerenderte Webseiten.

Ich kopierte also schnell einen API-Call zusammen, der mir die Liste der Subway-Songs in eine SQLite-Datenbank schrieb und baute noch ein zweites Script, dass die Songtexte läd. Nachdem ich die nötigen Sachen aus einem anderen Script kopierte, fiel mir ein, dass ich auch alles in eine Textdatei hätte packen und grep benutzen können, aber naja, SQLite ist gerade angesagt!

Nun war es soweit. Ich hatte eine Datenbank mit allen (ich habe jetzt nicht wirklich verglichen, wie viele Texte bei Genius fehlen, es waren so um die 200 Stück, das erschien mir recht okay) Texten und muss nun nur noch herausfinden, ob gewürfelt wird!

Statt einem SELECT title FROM songs WHERE text LIKE '%würfel%' entschied ich mich noch einen Volltext-Index aufzubauen, weil ich es einfach mal gemacht haben wollte! Das funktioniert folgendermaßen:

CREATE VIRTUAL TABLE lyrics USING FTS5(title, text);
INSERT INTO lyrics SELECT title, text FROM songs;

Das war aufregend. 🥲

Nun kann ich statt einer popeligen LIKE-Query folgendes benutzen:

SELECT * FROM lyrics WHERE lyrics MATCH 'Würfel';
wuerfel.png

Jetzt würden wir uns natürlich alle wünschen, dass all meine Arbeit nicht umsonst war und mindestens ein Lied als Ergebnis herauskommt, das ich in meine Playlist aufnehmen kann, doch weit gefehlt. Nichts, einfach nichts. Eine kurze Kontrolle mit einem etwas häufiger vorkommenden Wort, liefert ein Ergebnis, also kann ich technisches Versagen auch ausschließen:

SELECT * FROM lyrics WHERE lyrics MATCH 'Engel';
engel.png

Tja, Schade. Subway to Sally scheint kein Würfel-Lied zu haben. Wahrscheinlich dachte mein Kopf, dass in Sieben gewürfelt wird, oder so.


Kennt ihr noch ein gutes Würfel-Lied einer Mittelalterband? Wenn ja, sagt Bescheid. Ich habe keine Lust das Script jetzt nochmal anzuwerfen.

philipps.photos logo

SwiftUI, die Tausendste

Es war WWDC und wie jedes Jahr verspürte ich kurz den Drang, was mit Swift zu machen. Normalerweise wird das immer sofort im Keim erstickt, weil ich immer etwas mit den ganze neuen Funktionen machen will, aber das würde bedeuten, ich müsste Betas installieren und könnte das Endprodukt erst im September auf meinem iPhone benutzen. Das schreckt mich normalerweise immer ganz gut ab.

Das gute daran ist allerdings, dass man, wenn man so mal ein paar Jahre skippt, irgendwann doch anfangen kann, etwas zu bauen und zwar einfach mit den Features aus den letzten Jahren. Ich glaube, mein letzter SwiftUI-Versuch scheiterte zum Beispiel daran, dass es keinen TextEditor gab und nur ein TextField, oder so. Gibts mittlerweile, toll.

Ich habe mich also mal kurz wieder in ein paar Tutorials begeben und versucht eine, alle werden es ahnen, App für meine Tagebuch-Webapp zu bauen, auch wenn ich mit der Webapp eigentlich zufrieden bin, aber warum was neues bauen, wenn man einfach das gleiche immer wieder machen kann.

screenshot-2022-06-08-at-23.20.24.png

Jedenfalls läuft es erstaunlich gut. Ich finde Swift allerdings wirklich sehr ekelig. Also alles so wie immer, irgendwie. Ich wünschte, jemand hätte sich überlegt, mal eine leichte und verständliche Sprache zu entwickeln, statt diesem Monster, das vor Syntax-Sugar und unverständlichen konstrukten nur so trieft. Naja.

Schauen wir mal, wie lange ich motiviert bleibe. Mein Hauptproblem gerade ist, dass ich die Webapp ja nun auf klassische Art und Weise baute, halt mit serverseitig gerenderten HTML-Views und ohne fertige REST-API. Tja. Wie ist da nun die best practise herangehensweise, wenn man doch beides braucht? Ich werde es wohl herausfinden müssen, oder einfach alles copy pasten, ist ja auch egal, hauptsache es funktioniert.

img_5498.jpeg

Seitdem es wieder Mehl gibt, verspüre ich den Drang zu backen. Gerade angesagt: Foccacia. Muss aber noch üben.

philipps.photos logo

Was machen eigentlich (1)

Ab und zu, meist spät in der Nacht, fällt mir ein, dass ich ab und zu ein paar obskure Schrei-Bands höre und ich frage mich, was die eigentlich in der letzten Zeit so gemacht haben. Ich sollte mir da mal eine Liste anlegen, oder sie einfach bei Spotify verfolgen.

Marathonmann

Fangen wir an mit Marathonmann. Zuerst fällt mir eine neue Single mit Sperling und Kind Kaputt ins Auge. Catcht mich nicht so richtig, dafür lerne ich aber Kind Kaputt kennen.

Abgesehen davon haben sie anscheinend ein Akustikalbum veröffentlicht, was mit ja eigentlich gefallen sollte, denn ich liebe Akustik-Versionen von Rocksongs. Leider wird hier, soweit ich das bisher mitbekam, nicht mehr geschrieen und damit geht der USP der Band komplett verloren. Schade.

Die Band mit dem wilden Gitarristen von Adam Angst

Wie hießen die gleich noch? Ich brauche etwas um das zu ermitteln und finde auf dem Weg dieses tolle Cover von Junge von Adam Angst. Nach wenigen weiteren Videos komm ich drauf: FJØRT. Leider haben sie nichts groß neues vorzuweisen. Nur eine kleine Corona-Session.

8kids

Ich fand einen relativ neuen Live-Auftritt und musste feststellen, dass ihre Drummerin gegen einen Mann ausgetauscht wurde. Außerdem gibt es keinen Bassisten, was ist denn hier los. Nach dem Samsas Traum-Konzert von letztens schon wieder eine Band ohne Bassisten!

Objects in the Rear View Mirror

Folgende Spannende Geschichte:

Ganz davon abgesehen finde ich es ganz grandios einen Song mit einem so langen Titel und einer Länge von mehr als zehn Minuten zu veröffentlichen.

Kartoffeln in Stäbe schnibbeln, knapp 10 Minuten mit einem Löffel Essig im Wasser kochen; mehlen, salzen, ölen und dann 30 Minuten in den Ofen. Ich finde das Video von Pro Home Cooks dazu nicht mehr, es hat meine Selfmade-Pommes revolutioniert. Sehr lecker!