sclass CruddieFollower { S cookie; int counter; swappable void newDialog() {} swappable void botUtterance(S html) {} *(S *cookie) {} public S get() { S src = loadPageWithParams("https://cruddie.site/bot/incremental", +cookie, n := counter); S newN = firstIntAsString_regexp(src); if (nempty(newN)) { if (cic(src, "NEW DIALOG -->")) newDialog(); n = parseInt(newN); } else doForEach botUtterance(regexpExtractAll([[bot-utterance">(.*?)<]], src)); ret html; } } // returns HTML sS getNewsFromCruddie(S cookie) { ret getNewsFromCruddie(cookie, 0); } static Pair