Ranking klan贸w serwera

Pobieranie wszystkich stron

import { type GuildsLadder, getServerGuildsLadder } from 'margonemski-harvester'
;(async () => {
    const ladder: GuildsLadder = []
    const successPages: number[] = []
    const errorPages: number[] = []

    const result = await getServerGuildsLadder(
        {
            serverName: 'Tempest', // dla stron rankingu klan贸w nazwa 艣wiata musi by膰 z wielkiej litery, 'https://www.margonem.pl/ladder/guilds,Tempest?page=2'
            onPageSuccess({ data, currentPage }) {
                ladder.push(...data)
                successPages.push(currentPage)
            },
            onPageError({ errorData, currentPage }) {
                console.error(errorData)
                errorPages.push(currentPage)
            }
        },
        {
            delayBetweenPagesInMs: 150 // 429 Too Many Requests
        }
    )

    if (result.success) {
        console.log({
            totalPages: result.totalPages
        })
    } else {
        console.error({
            cause: result.cause,
            errorName: result.errorName
        })
    }
})()

Pobieranie jednej strony

import { getServerGuildsLadderPage } from 'margonemski-harvester'
;(async () => {
    const result = await getServerGuildsLadderPage({
        serverName: 'Tempest', // dla stron rankinu klan贸w nazwa 艣wiata musi by膰 z wielkiej litery, 'https://www.margonem.pl/ladder/guilds,Tempest?page=2'
        page: 1
    })

    if (result.success) {
        console.log(result.data)
    } else {
        console.error(result.cause)
    }
})()

Walidacja i parsowanie

Pomy艣lna walidacja i parsowanie s膮 wymagane do zwr贸cenia obiektu zawieraj膮cego pobrane dane, dlatego nie ma potrzeby ich ponownego wykonywania.

import {
    GuildRow,
    GuildsLadder,
    guildRowSchema,
    guildsLadderSchema
} from 'margonemski-harvester'

const guild: GuildRow = {
    rank: 1,
    name: 'Wojownicy z Okolicy',
    level: 22,
    ph: 231313,
    players: 100,
    power: '9m',
    guildLink: '/guilds/view,Tempest,2615'
}

const ladder: GuildsLadder = [guild, guild, guild]

const parsedGuild = guildRowSchema.parse(guild)

const parsedLadder = guildsLadderSchema.parse(ladder)