knuspermagier.de
Der privateste Blog von Philipp.
philipps.photos logo

Mehr Musik

Ich mag ja dieses POP.md Projekt von Florian und da ich in letzter Zeit ständig neue Musik oder lustige Youtube-Musik-Videos finde, die ich irgendwie gerne teilen würde, dachte ich mir jetzt schon mehrfach, dass es ja ganz cool wäre auch sowas zu bauen, aber natürlich habe ich schon einen Blog und der Single-Blog-Way ist der einzige Weg, den man gehen sollte. Daher entschließe ich mich wohl eher ein paar extra Post-Types anzulegen und irgendwie hübsch zu stylen. Falls in nächster Zeit also unerwartet viele Musik-Empfehlungen in eurem Feed landen, bitte nicht aufregen. Vielleicht baue ich noch eine Funktion ein, dass man sich die Themen für den RSS-Feed selber zusammenstellen kann. Ich weiß ja, wie beliebt mein Musikgeschmack bei meinen Lesern ist.

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.