Rabbithole Währungsconverter

  • Ich verreise recht viel und habe mir dazu einen Shortcut eingerichtet, der mir einen Betrag von einer Währung in die andere umrechnet:
    • Beim Start einer Reise suche ich den aktuellen Umrechnungskurs zur Währung von meinem Zielland heraus und trage ihn in den Shortcut ein.
    • Auf einem Homescreen zum Reisen lebt der Shortcut und nach Eingabe des Betrages zeigt er mir an, wieviel das in etwa in Euro oder in Schweizer Franken ist.
    • Danach bietet er mir an, den Betrag als Ausgabe zu protokollieren. Das übernimmt dann ein anderer Shortcut, der das in eine Numbers-Tabelle einträgt.
  • Es wäre eigentlich ganz cool, wenn der Shortcut nun den Umrechnungskurs selbst ermittelt.
  • Perplexity gefragt, wie das gehen könnte. Wir verwenden die Pro Version, von der man pro Tag immer ein paar Happen bekommt.
    • Es wirft ein paar Vorschläge für online verfügbare APIs aus:
      • Frankfurter (frankfurter.app) hat nur 30 Währungen
        • funktioniert ohne Anmeldung einfach so
        • Die beiden interessanten für mich COP und VND sind nicht dabei.
        • Habe etwas über die API gelernt
        • Habe gelernt, einen Shortcut, der json für eine URL abruft anzulegen und einen json Key aus dem dictionary zu extrahieren
      • Open Exchange Rates
        • Funktioniert nur mit Anmeldung. In der Dokumentation stehen bereits alle unterstützten Währungen
        • Account angelegt
        • E-Mail notwendig
        • API Key abgerufen
        • Die API ist die gleiche wie bei Frankfurter. Man übergibt eine base-Währung und erhält die Umrechnungskurse.
        • das Extrahieren funktioniert nicht
        • In der Fehlermeldung steht drin, dass das Setzen der Base Währung nur mit einem bezahl Account möglich ist
        • Für ein Spass Projekt erst mal keine Alternative
      • fixer.io
        • Das Anlegen eines Accounts ist eine Herausforderung. Neben den wirklich notwendigen Daten wie E-Mail-Adresse, wollen sie eine Adresse eine richtige Adresse haben - für die Rechnung, die sie womöglich mal stellen
        • Auch hier ist das Setzen der Base-Währung in der freien API nicht dabei.
        • Die Standard Base Währung ist ebenfalls Euro
        • In der Dokumentation erfährt man nicht, welche Währungen sie unterstützen. Dafür muss man bereits die API abrufen. Das ist etwas dürftig.
    • Nun ja. Online-APIs kann man verwenden. Aber für eine andere base-Währung als Euro oder Dollar muss man die Umrechnung in die Zielwährung selbst machen.
    • Aber das ist kein Problem.
    • Perplexity sagt ausserdem, dass man das Ergebnis für einen Tag zwischenspeichern sollte in einem Cache um unnötige API Aufrufe zu vermeiden
  • Okay, die Abrufe mit fixer API lassen sich also programmieren. Ein paar Suchen nach bereits fertigen Lösungen habe ich auch einen Shortcut von robric18 gefunden, der das bereits implementiert hat, dass man Ergebnis zwischen speichert.
    • Er verwendet eine ganz andere API, die inzwischen keinen kostenlos verwendbaren Endpunkt anbietet.
    • Als Inspiration ist es aber ganz nützlich
  • Ich habe das nun in einige separate Shortcuts ausgelagert:
    • Ein Shortcut 🅰️, um die Währungkurse abzurufen und im iCloud - Shortcuts - Ordner in einer Datei zu speichern. Wenn die Datei bereits existiert, wird die API nicht mehr aufgerufen.
    • Ein Shortcut 🅱️, um von einer Währung in die andere zu konvertieren, der Shortcut 🅰️ verwendet, um die Zielwährung zu bestimmen.
    • Das funktioniert nun erstaunlich gut.
  • Das original - Skript von robric18 habe ich dann gelöscht.

Diese Lösung funktioniert erst mal - aber so richtig zufriedenstellend ist es noch nicht:
- Es fehlt insbesondere noch das Löschen des Caches mit den Kursen, um tagesaktuelle Umrechungskurse abzuholen
- Die Berechnung des Zielbetrages ist nicht sicher getestet

Ein paar Tage später

  • Ich suchte noch einmal das Skript von robic18 für Inspiration. Ich hatte einen Typo und suchte nach robrix18 - dafür gab es natürlich keine Ergebnisse, aber Serendipitätsergebnisse.
  • Nun taucht in den Suchergebnissen ein anderer Artikel auf: HOW TO USE THE BUILT-IN CURRENCY CONVERTER FEATURE ON YOUR IPHONE
    • In der aktuellen Version von iOS hat Apple den Taschenrechner erweitert
    • Man kann jetzt direkt von einer Währung in die andere umrechnen.
    • Den Kalkulator kann man ebenfalls in Shortcuts einbinden
    • Damit würde das Abholen der aktuellen Umrechnungskurse entfallen - insofern wir Apple vertrauen, bei seinen Dienstleistern halbwegs aktuelle Kurse abzurufen.
  • Ich habe nun einen neuen Shortcut angelegt, der nur die Berechnung über die API vom Kalkulator macht
    • Es funktioniert gut, die Ergebnisse sehen stimmig aus.
    • Account bei fixer.io gelöscht
    • Account bei openexchangerate gelöscht.
  • Damit wäre das Problem der Währungsumrechnung ziemlich einfach gelöst.
  • Fehlt noch die Bestimmung des Währungscodes von dem Land in dem ich mich gerade befinde - also das Abholen der des aktuellen Standortes und die Konvertierung des Standortes in das internationale Währungskürzel
    • robic18 verwendet die Wetter API um den aktuellen Ort herauszufinden. Das wäre schon mal erledigt.
    • Die Seite laenderdaten.de liefert eine Liste von den internationalen Währungscodes
      • Ich könnte das jetzt irgendwie parsen und versuchen das aktuelle Land, in dem ich mich befinde, auf diesen Code zu mappen
      • Das ist mit Shortcuts nicht so einfach
      • Es funktioniert nur, wenn die Länder übereinstimmen.
    • Aber wir haben ja ein lokales LLM installiert.
      • Was ist, wenn ich den Wetter-Standort an Apple Intelligence übergebe und den Währungscode bestimmen lasse.
      • Mit einigem Herumprompten funktioniert das erstaunlich gut und ich konnte es auch überreden, mir nur den Code auszugeben.
      • Ich weiss aber nicht wie zuverlässig das ist.
      • Aber die Lösung ist erstmal besser als das Parsen einer Webseite
  • Kopfschmerzen bereitet mir, wann genau ich automatisiert die aktuelle Währung an meinem Land festlegen kann – und damit auch den Umrechnungskurs.
    • Ich reise ja nicht dermassen viel, so dass ich bei jedem Aufruf des Währungskonverters das Land bestimmen und die Währung oder den Umrechnungskurs bestimmen müsste.
    • Das Bestimmen ist auch recht langsam, je nachdem wie die Wetter-API antwortet oder wie die Lokale AI Lust hat.
  • Vermutlich ist es einfachste, einen Shortcut zu schreiben, der irgendwo das lokale Währungskürzel abspeichert oder wenn die Datei bereits existiert, einfach den Inhalt zurück gibt.
  • Der Währungskonverter könnte diesen Shortcut abrufen und für die Kalkulator-Formel verwenden.
  • Wenn ich irgendwohin reise, das nicht im Euro- oder im Schweizer Franken Raum liegt, dann ist es meistens im Flugzeug. Wenn ich nun ankomme, könnte ich auch sagen ich irgendwann den Flugmodus deaktivieren werde.
  • Ich könnte also beim Deaktivieren des Flugmodus den Währungscache löschen.
  • Beim nächsten Aufruf des Währungskonverters wird so wieder das Kürzel am Standort bestimmt, von mir bestätigt und gespeichert.
  • Nach ein paar Versuchen habe ich nun eine passable und gut testbare Lösung.

Yess - eine Lösung.

  1. Shortcut Cleanup Local Currency Code
    • Löscht die Datei mit dem Währungscode
    • Wird automatisch beim Deaktivieren des Flugmodus ausgeführt.
  2. Shortcut Retrieve Local Currency Code
    • Wenn die Datei mit dem Währungscode existiert
      • Liefere den Inhalt
    • Sonst
      • Rufe den aktuellen Standort mit der Wetter-API ab
      • Verwende Apple Intelligence mit dem lokalen Modell, um den Währungscode zu bestimmen
      • Frage nach, ob der Währungscode korrekt ist
        • Falls ja, speichere den Währungscode in der Datei mit dem Währungscode
        • Liefere den Währungscode
  3. Shortcut Convert Currency With Calc
    • Empfängt ein JSON-Dictionary mit einigen Eingabeparametern.
    • Liefert die mit der Kalkulator-App umgerechnete Währung
  4. Shortcut Convert Local Currency
    • Ruft Retrieve Local Currency Code auf
    • Fragt nach dem umzurechnenden Wert in der lokalen Währung
    • Ruft Convert Currency With Calc mit den Parametern ab
    • Zeigt den umgerechneten Betrag in der Zielwährung an
    • Gibt die Option zum Protokollieren einer Ausgabe wie bisher auch

Natürlich ist die Lösung nicht perfekt aber für meine Bedürfnisse die beste:

  • Der Speicherort der Cache-Datei ist in zwei Shortcuts hinterlegt.
    • Das könnte man mit einem dritten Shortcut lösen, der nur den Speicherort liefert.
  • Ob das Bestimmen der Währung des Landes, wo ich mich befinde, tatsächlich funktioniert, kann ich nur durch hinfliegen und Ausprobieren testen. Zumindest gibt es eine manuelle Bestätigung.
    • Das könnte man auch manuell überschreiben
    • Man könnte AI eine Umrechnungstabelle übergeben
  • Ob der Kurs von Apple auch der ist, den meine Bank berechnet sei dahingestellt.
    • Das ist mir egal
    • Immerhin ist das besser und schneller als den Kurs manuell herauszufinden.

Herzlichen Dank für das Lesen. Ich habe keine Kommentare auf meinem Blog eingerichtet. Falls du auf deinem eigenen Blog bezug nimmst, sende mir gerne eine Webmention senden. Hier unten kannst Du gerne weiter stöbern. Manchmal habe ich auch etwas gelernt. Es gibt eine Slashes-Seite.