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.
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.
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.
To bot w javascript?
Z tego co widać to:
- Ś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. - 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>
FunkcjeString.indexOf()
iString.substring()
. - 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. - 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.