Pobieranie informacji ze strony do pamięci

0

Hej! Jakiej biblioteki mogę użyć, żeby cyklicznie co minutę kod sprawdzał, czy na stronie pojawiła się nowa informacja i jeżeli takowa się pojawiła to żeby zapisał ją jakoś do pamięci? Potrzebuję zrobić DiscordBota, który będzie wysyłał wiadomość z nowo wprowadzoną informacją na stronie, czy to artykuł czy cokolwiek?! Oczywiście wiem, że potrzebuję hostingu i takowy już mam.

0

Można to zrobić lepiej, jak wiesz, jak się nazywają obiekty, których szukasz. Najbardziej ogólny mechanizm to z grubsza:

setInterval(function(){
 var html = document.body.innerHTML;
 if (html.indexOf("nowa informacja")) localStorage.setItem('nazwa_zmiennej', 1);
}, 60000);

Żeby manipulować cudzymi stronami, potrzebujesz zrobić rozszerzenie do przeglądarki, albo skrypt dla gotowego rozszerzenia typu Greasemokey.
Ew. umieć programowo zaemulować przeglądarkę z obsługą JS.
Ew. może skorzystać z API Discorda, jeśli takowe udostępnia.

W sumie napisz więcej, co to za strona, czy chcesz żeby ten bot chodził na serwerze czy odpalał się lokalnie.

0

Próbuję zrobić to z cheerio, ale jakoś problem mam... strona to https://osu.ppy.sh/p/beatmaplist&s=4&r=0 i jak widzisz masz tam różne mapy. Jeżeli nowa mapa się pojawi na stronie, to bot wysyła informacje o tej mapie (tytul etc). Co do postawienia bota to nie problem, bo wiem jak.

0

To bot w javascript?
Z tego co widać to:

  1. Ściągnij źródło sprawdzanej strony. Niestety zwykły ajax nie zadziała. Poczytaj o cross domain ajax i jak to obejść. Jest kilka rozwiązań więc dobierz odpowiednie.
  2. Możesz parsować ściągniętą stronę, ale w tym wypadku wystarczy proste wycięcie zawartość spomiędzy ciągu znaków <script id="json-beatmaps" type="application/json"> a </script> Funkcje String.indexOf() i String.substring().
  3. Wyciętą zawartość traktujesz JSON.parse() i masz obiekt. W nim powinny być wszystkie oczekiwane informacje. Zdaje się, że są tam znaczniki czasowe, więc łatwo znaleźć ostatnio dodane elementy.
  4. Zwróć dane do bota (nie wiem nic o nim więc z tym nie pomogę).

EDIT:
Ta strona udostępnia dane przez api: https://github.com/ppy/osu-api/wiki
Użyj go a odpadnie punkt 2. Dzięki temu możesz też od razu zawęzić wyniki.

1 użytkowników online, w tym zalogowanych: 0, gości: 1