Instagrambilder eines Hashtags als "Diashow"?

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.