Instagrambilder eines Hashtags als "Diashow"?
Hi, gibt es die Möglchlichkeit die Bilder eines Hashtags auf eine Homepage zu importieren?
Ich möchte auf der Arbeit eine Aktion starten und die Bilder sollen Live auf eine Leinwand Projeziert werden und sich selbstständig alle paar Stunden aktualisieren.
Auf dem Cannstatter Wasen habe ich das mal in einem Festzelt gesehen und bin absolut Ratlos, wie die das gemacht haben. Die einzige Idee die mir kommt ist es, die Bilder zu speichern und manuell hochzuladen aber das wäre zu aufwendig :-(
1 Antwort
a) Die Instagram Graph API bietet eine Suche für Medien, die mit einem bestimmten Hashtag markiert wurden: Hashtag-Suche.
b) Es gibt eine öffentliche Schnittstelle für Bilder, die mit einem bestimmten Tag assoziiert werden können.
Über diese URL (den Tag musst du natürlich noch setzen):
https://www.instagram.com/explore/tags/<YOURTAG>/?__a=1
erhältst du einen JSON-Response, in dem Bilder-URLs enthalten sind, die mit dem Tag versehen wurden und von öffentlichen Profilen stammen.
In deiner Webanwendung könntest du folglich einen Request an die jeweilige URL schicken, den Response abgreifen, parsen und die Bilder dann auf deiner Webseite rendern lassen.
Mit PHP könnte eine Lösung für den ersten Schritt ungefähr so aussehen:
$response = file_get_contents($url);
$data = json_decode($response);
Im zweiten Schritt müsstest du schauen, wie du URLs aus dem Objekt / dem Response bekommst. Dazu solltest du dir die Daten zumindest einmal ausgeben lassen.
print($response);
Mit einem JSON Formatter (es gibt entsprechende Online-Tools) lässt sich der Text übersichtlicher formatieren und du könntest die Struktur des JSON genauer analysieren. Wenn ich nun richtig geschaut habe, würde man bspw. über diesen Weg an die URL des ersten Bildes kommen:
$data->top->sections[0]->layout_content->medias[0]->media->image_versions2->candidates[0]->url
Alle Bilder liegen also im medias-Array, unter candidates sind verschiedene Versionen eines Bildes.
$medias = $data->top->sections[0]->layout_content->medias;
foreach ($medias as $media): ?>
<img alt="Your Tag ..." src="<?= $media->media->image_versions2->candidates[0]->url ?>">
<?php endforeach; ?>
Um weitere Bilder zu erhalten, müsstest du im Response einmal nach dem next_max_id-Property suchen. Die ID kann an den Querystring gehängt werden:
https://www.instagram.com/explore/tags/<YOURTAG>/?__a=1&max_id=<YOUR_NEXT_MAX_ID>
Achte darauf, diese Schnittstelle nicht zu oft in kurzer Zeit aufzurufen, andernfalls kann es gut sein, dass dich Instagram schnell sperrt.