Ich möchte gerne Bahn-Tickets der DB per Smart Rule umbenennen:
YYYY-MM-dd_R1.5 Bahn Fahrkarte Reiseziel
Allerdings scheint die Variable “Document Date” das Kaufdatum zu berücksichtigen, obwohl das Datum für die Fahrt im Dokument als erstes steht. Selbst “Newest Document Date” gibt das Kaufdatum aus. Auf welchem Schlauch könnte ich stehen, um hier die richtige Variable zu finden?
Das Reisedatum wird übrigens hingegen von der Variable Document Amount ausgelesen (im Modus DD.MM.), aber der Preis im Dokument hingegen nicht. Gibt es Theorien, woran das liegen könnte?
Außerdem habe ich noch keinen Weg gefunden, das Reiseziel zu extrahieren. Hat hier jemand vielleicht eine Idee?
Script. Das könnte vermutlich alles andere auch erledigen. Ich habe mir allerdings noch nie eine Fahrkarte daraufhin angesehen. Sprichst du von den A4-PDFs, die man per E-Mail bekommt oder von Papiertickets aus dem Automaten?
Edit
Da war ich wohl etwas zu optimistisch. Nachdem ich mir drei Fahrkarten (A4-PDF) angesehen habe, gibt es alleine für die Abfahrt/Ankunft drei Varianten:
Rückfahrt Praha Berlin Hbf
Einfache Fahrt Berlin Hbf1— Halle(Saale)Hbf
Einfache Fahrt Halle(Saale)Hbf Berlin Hbf
Wie soll man da den Zielbahnhof rausfiltern?
Dito Datum: Ich kaufe immer Sparpreis-Tickets, da steht das Datum für den Zug drin. Aber zB für Prag-Berlin (s.o.) erscheint das unter “Reiseverbindung”, bei Berlin-Halle viel weiter oben im Ticket hinter “Zugbindung”.
Im Netz habe ich das hier gefunden
Aber der Code ist sieben Jahre alt und stützt sich auf eine Windows-Software, die nicht mehr gepflegt wird
Danke für deine wie immer hilfreiche – wenngleich in diesem Fall wenig aufmunternde – Antwort! Dann muss ich schauen, dass ich das vorher doch nochmal durch Hazel jage, zumindest hat das in der Vergangenheit zuverlässig funktioniert. Seit DB die Tickets im Design verändert hatten, hätte ich auch da nochmal rangemusst. Ich habe das Ticket mal an Jim geschickt und hoffe, dass die Techis bei DT eine Idee haben
Es kommt wirklich darauf an, was du für Tickets hast. Und vielleicht ist es sinnvoll, sich den PDF-Text Zeile für Zeile anzugucken, wie das der Mensch mit dem PowerShell-Script vor sieben Jahren gemacht hat.
Das “Design” der Tickets spielt mE keine große Rolle – es kommt mehr darauf an, was Du für ein Ticket hast. Z.B. bei den Flex-Tickets: Welches Datum willst Du da haben? Letztlich kannst Du ja fast fahren, wann Du willst…
Da hast du Recht. Bei mir sind es auch immer Sparpreise, daher ist das konkrete Datum immer angegeben. Ich bin auch nicht picky wegen des Reiseziels, wenn es nur mit von-bis klappen sollte (habe ich nicht geschafft, was sicher auch an meinen nichtvorhandenen Skriptkünsten liegt), bin ich da leidenschaftslos, wichtig ist mir ein semantischer Marker, sodass ich auf einen Blick sehen kann, welche Info ich benötige. Datum alleine funktioniert mit meinem Gehirn nicht
RE: “Design”, das war unklar von mir ausgedrückt. Ich meinte auch damit den Textaufbau. Früher gab es mehr ‘Ankerpunkte’, die ich in Hazel wählen konnte wie “→”, aber aus irgendeinem Grund wird das Zeichen nicht mehr mitkopiert/als Zeichen erkannt. Sonst hätte ich mit viel Mühe (hier auch wieder: fehlende Skills) eine RegEx-Nummer draus machen können.
Selbst mit Skills – aus den Texten hinter “Einfache Fahrt”/“Hinfahrt”/“Rückfahrt” lassen sich nicht zuverlässig (!) die nötigen Informationen extrahieren. Zum einen kann sich die Bahn ja selbst nicht entscheiden, ob sie zwischen Abfahrt und Ziel ein Leerzeichen einfügen möchte oder nicht (s.o.). Zum anderen – wie soll eine Regel wissen, dass die Fahrt von “Praha” nach “Berlin Hbf” geht und nicht von “Praha Berlin” nach “Hbf”?
Ja, man könnte “Hbf” speziell behandeln, aber es ist alles ein Geraffel. Dito der Pfeil: Mal kommt der als “1—”, mal gar nicht.
Ich habe noch das hier gefunden, das etwas aktueller ist und “nur” Java und Python braucht: GitHub - rumpeltux/onlineticket: Parser for online-tickets according to ETF-918.3
das liest die Daten direkt aus dem QR-Code des Tickets aus, was mE vernünftiger ist als mit dem PDF rumzuspielen. Der QR-Code enthält nämlich strukturierte Daten, da steht dann “To” und “From” drin…