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)