#programowanie #hejto
Przeglądam pobieżnie dokumentacje hejto api, ale nie widzę opcji pobrania wszystkich komentarzy i postów jednego użytkownika. Ktoś może podpowiedzieć jak to ogarnąć?
entropy_

@koszotorobur kolega ma pytanie

koszotorobur

@redve - się nie da tak łatwo - trzeba kombinować - to Hejto API jest nie tylko toporne ale i źle udokumentowane - na dodatek od czasu do czasu po cichu coś w nim zmieniają (i to wcale nie na lepsze)


Jak siądę przy kompie to może będę miał gdzieś przykład w Pythonie jak pobrać wszystkie wpisy.

redve

@koszotorobur a komentarze też sie tak masz?

CzosnkowySmok

@redve a co? Klapsztange planujesz?

redve

@CzosnkowySmok nieee, chce znaleść w historii jednego użytkownika pewne wypowiedzi ( ͡° ͜ʖ ͡°)

mógłbym manualnie ale nie chce mi sie ręcznie 1000 komentarzy sprawdzać

CzosnkowySmok

@redve uuu... Brzmi jak afera

lipa13

@redve Patrzcie no ludzie jakie te programisty teraz wygodne. Nic tylko po API by się komunikowały a na stary, dobry web scraping nawet nie spojrzą.

koszotorobur

@redve - BTW: a próbowałeś mojej Szukaczki Hejto: https://hejto-szukaczka.vercel.app/?

koszotorobur

@redve - Masz tu kod Pythona do https://docs.hejto.pl/#tag/Posts/operation/get_posts :

import requests


user = "koszotorobur"


client = "" # Get it from https://developer.hejto.pl/

secret = "" # Get it from https://developer.hejto.pl/


url = " https://auth.hejto.pl/token"

body = {

   "client_id": client,

   "client_secret": secret,

   "grant_type": "client_credentials",

}

headers = {"Content-type": "application/json"}


r = requests.post(url, json=body, headers=headers)

token = r.json().get("access_token")


for page in range(1_000_000_000):

   url = " https://api.hejto.pl/posts"

   headers = {"Authorization": f"Bearer {token}"}

   params = {

       "period": "all",

       "page": page + 1,

       "limit": 50, # 50 is the max

       "orderBy": "p.createdAt", # p.createdAt|p.numLikes|p.numComments|p.hot|p.hotness|rand|p.promoted

       "orderDir": "desc", # asc

       "users[]": user,

   }


   r = requests.get(url, params=params, headers=headers)


   items = r.json().get("_embedded").get("items")

   if items:

       for item in items:

           print(item.get("content"))

   else:

       break

Z tego co pamiętam Hajto API zwraca maksymalnie 50 stron gdzie może być maksymalnie 50 wpisów na jednej stronie - co daje maksymalnie 2500 wpisów, które można wyciągać na raz.... no chyba, że później posortujesz w drugą stronę to na dwa razy po 2500 wpisów wyciągniesz maksymalnie 5000).

Zaloguj się aby komentować