Pokaż zdjęcia z Instagram według Hashtagu

Taki temat mi się ostatnio nawinął: „Pokaż zdjęcia z Intagram’a, które mają odpowiedni hashtag”…

Szukałem kilka dni rozwiązań, ale poza zawiłymi skryptami, opartymi na Instagram API nie udało się nic znaleźć. Dopiero na Stack Overflow znalazłem dość proste rozwiązanie oparte na darmowym API, dostępnym bez logowania czy autoryzacji. Adres, który trzeba wywołać to:

https://www.instagram.com/explore/tags/twoj_tag/?__a=1

Zwracany jest kod JSON, który prezentuje pierwsze 16 wyników, a także informację czy istnieje kolejna strona z wynikami.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
{
    "tag":
    {
        "name": "twoj_tag",
        "content_advisory": null,
        "media":
        {
            "nodes": [],
            "count": 0,
            "page_info":
            {
                "has_next_page": false,
                "end_cursor": null
            }
        },
        "top_posts":
        {
            "nodes": []
        }
    }
}

Powyższy kod zwraca pusty wynik, ale łatwo zauważyć kilka cennych informacji. Wartość „media” zwraca dane zdjęć (nodes), łączną ilość, oraz informację czy istnieje następne strona i jakie jest jej id (end_cursor). Jeżeli następna strona istnieje, to należy ją wywołać adresem:

https://www.instagram.com/explore/tags/twoj_tag/?__a=1?max_id= >> end_cursor << (np.: https://www.instagram.com/explore/tags/wosp/?__a=1&max_id=J0HWajudwAAAF0HWaEprQAAAFiYA)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
$baseUrl = 'https://www.instagram.com/explore/tags/wgdyni/?__a=1';
$url = $baseUrl;
$limit = 100;
$i = 1;
while(1)
{
    $json = json_decode(file_get_contents($url));
    $nodes = $json->tag->media->nodes;
    foreach ($nodes as $nID => $image)
    {
        echo('<p> ' . $i . ' <img src="' . $image->thumbnail_src . '"></p>');
        $i++;
        if ($i > $limit) exit;
    }
    if(!$json->tag->media->page_info->has_next_page) break;
    $url = $baseUrl.'&max_id='.$json->tag->media->page_info->end_cursor;
}

Prosty skrypt, którzy przedstawia maksymalnie 100 zdjęć na hashtag ‚wgdyni’. W pętli pobierane są dane z adresu $url. Za każdym razem adres jest modyfilkowany o parametr max_id=”. Jeżeli ‚has_next_page’ wynosi false, to pętla jest zatrzymywana. Ilość pobieranych zdjęć do pokazania ustalona jest w zmiennej $limit. Jeżeli indeks pętli $i jest większy od $limit, to następuje przerwanie ‚exit’.

Warto przejrzeć całe drzewo JSON z wynikiem. Można z niego odczytać m.in. takie informacje jak ilość komentarzy, lajków, opis zdjęcia czy jego rozmiar.

Zobacz przykład

Dodaj komentarz

Privacy Preference Center

Treść banner z cookies

Lorem ipsum dolor sit amet enim. Etiam ullamcorper. Suspendisse a pellentesque dui, non felis. Maecenas malesuada elit lectus felis, malesuada ultricies. Curabitur et ligula. Ut molestie a, ultricies porta urna. Vestibulum commodo volutpat a, convallis ac, laoreet enim. Phasellus fermentum in, dolor. Pellentesque facilisis. Nulla imperdiet sit amet magna. Vestibulum dapibus, mauris nec malesuada fames ac turpis velit, rhoncus eu, luctus et interdum adipiscing wisi. Aliquam erat ac ipsum. Integer aliquam purus. Quisque lorem tortor fringilla sed, vestibulum id, eleifend justo vel bibendum sapien massa ac turpis faucibus orci luctus non, consectetuer lobortis quis, varius in, purus. Integer ultrices posuere cubilia Curae, Nulla ipsum dolor lacus, suscipit adipiscing. Cum sociis natoque penatibus et ultrices volutpat. Nullam wisi ultricies a, gravida vitae, dapibus risus ante sodales lectus blandit eu, tempor diam pede cursus vitae, ultricies eu, faucibus quis, porttitor eros cursus lectus, pellentesque eget, bibendum a, gravida ullamcorper quam. Nullam viverra consectetuer. Quisque cursus et, porttitor risus. Aliquam sem. In hendrerit nulla quam nunc, accumsan congue. Lorem ipsum primis in nibh vel risus. Sed vel lectus. Ut sagittis, ipsum dolor quam.

google analitycs

Close your account?

Your account will be closed and all data will be permanently deleted and cannot be recovered. Are you sure?