Ein Datum mit PHP von einem Image einer externen URL auslesen

Von Roland Golla
0 Kommentar
Image Date externe URL auslesen

Es gibt so PHP Projekte bei denen man auch mal das Datum von einem Image bei einer externen URL auslesen muß. Dabei könnte die Welt doch so einfach sein. Ist sie aber leider nicht. Für ein Symfony 5 Open Source Projekt importiere ich News von unterschiedlichen Webseiten. Viele sind dabei ein Standard WordPress und stellen über den WordPress Feed kaum Probleme dar. Was aber ist, wenn es kein Datum gibt.

Mit PHP get_headers last modified als Date für eine externe Image URL auslesen

public function getDateFromImage(string $urlToFile): string|false
{
    $headers = get_headers($urlToFile, true);
    if($headers) {
        return $headers["Last-Modified"];
    }

    return false;
}

Link zum GitHub Projekt
https://github.com/nevercodealone/waterpolo/blob/5fba68d17997f89d965854181195d6f4cb8dcb93/src/Handler/ImageHandler.php#L35

Wenn Nobrainer zu Manntagen werden – wie schwer das Datum vom Image einer externen URL sein kann

PHPStan PHP-Training
PHPStan PHP-Training

Viele Wege führen nach Rom, leider aber oft nur einer an das persönliche Etappenziel. Persönlich dachte ich übrigens bisher, daß ein Datum einer News praktisch die wichtigste Eigenschaft ist. Die Tatsache keine Sitemaps zu haben war mir schon klar. Das bedeutet mit einem PHP Crawler Seitenelemente zu parsen. Mit Headline, Bild und Link ist das allerdings auch wirklich überschaubar. Aber ein Datum für eine News zu bekommen, die gar keins hat. Dafür gab es erstmal die Recherche im Dom. Vielleicht ist doch eine Info in den HTML Meta Tags. Leider nichts. Also ist die einzige Möglichkeit. Aus meinen Erfahrungen mit der Google Vision API – die ja auch noch in dem Projekt hier schlummert, wusste ich auf jeden Fall das der Informationsgehalt in einem Bild oft deutlich über mehr als 1000 Worten liegt.

Getimagesize, EXIF, Servereinstellungen und das Ziel doch so nah ist

Git Branch File durchsuchen
Git Branch File durchsuchen

Mit exif dachte ich auch ganz einfach das Ziel zu erreichen. Resultat war allerdings der Zeitpunkt vom anlegen der lokalen Kopie. Das hätte alle News in der Übersicht auf die ersten Plätze gebracht. Daher habe ich eine Zeitlang darauf gesetzt die Metadaten des aktuellen Bildes mit einer Art Force-Befehl behalten zu können. Die Methode nimmt leider keine externen URLs entgegen. Aber es war eine erste Idee Header Informationen des externen Servers in Betracht zu ziehen. Getimagesize kann von externen URLs mehr als nur die Maße auslesen. Leider hängt das aber an den Einstellungen und hat in meinem Falle nicht ans Ziel geführt.

Wo ein Wille, da ist auch ein Weg – wenn die Nacht zum Tage wird

User Stories die niemand testen will
User Stories die niemand testen will

Unser Job und das Leben macht genau dann Spaß, wenn wir gefordert, aber nicht überfordert sind. Darunter befindet sich die Langeweile und darüber die Hoffnungslostigkeit. Also Boreout und Burnout. Das aktuelle Projekt hat bei mir persönlich mehrere Ziele im Blick. Das erste ist es mit Hilfe von PHPUnit eine wirklich tolle PHP Architektur zu schaffen. Das ist ein sehr großes Ziel. Und deutlich schwerer als gedacht. Dazu dachte ich kann ich ganz locker eine YouTube Serie starten. Das habe ich auch getan und bin auf der Bahn. Dazu kommt dann noch TailwindCSS im Frontend. Und hier finde ich die Kurve schon extrem steil. Der richtige Einstieg, vor allem mit Webpack, fällt mir sehr schwer. Insgesamt macht es mir aber doch Spaß. Denn der Weg lohnt sich und bringt mich als Developer doch sehr gut weiter.

Open Source Projekte sind schön und bitte teilt den Blog hier

Um die Antwort hier auf das Problem zu finden habe ich wirklich viel gegoogelt. Parallel habe ich mir noch Hilfe von einem FB Forum und auf im Sulu und TYPO3 Slack geholt. Das waren Stunden an Recherche. Bitte hilf anderen sich diese Zeit zu sparen, indem zu Backlinks auf den Artikel hier generierst. Das ist sehr wichtig, damit der Artikel hier überhaupt eine Chance hat zu ranken und gefunden zu werden. Vielen Dank dafür.

0 Kommentar

Tutorials und Top Posts

Gib uns Feedback

Diese Seite benutzt Cookies. Ein Akzeptieren hilft uns die Seite zu verbessern. Ok Mehr dazu