Ranking postaci serwera
Pobieranie wszystkich stron
import {
type CharactersLadder,
getServerCharactersLadder,
getServerCharactersLadderPage
} from 'margonemski-harvester'
;(async () => {
const ladder: CharactersLadder = []
const successPages: number[] = []
const errorPages: number[] = []
const result = await getServerCharactersLadder(
{
serverName: 'tempest',
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 { getServerCharactersLadderPage } from 'margonemski-harvester'
;(async () => {
const result = await getServerCharactersLadderPage({
serverName: 'tempest',
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 {
type CharacterRow,
type CharactersLadder,
charactersLadderSchema,
characterRowSchema
} from 'margonemski-harvester'
const character: CharacterRow = {
rank: 1,
name: 'Łowcomir Kazrek',
level: 93,
profession: 'Łowca',
lastOnline: '2 dni temu',
ph: 1332,
characterLink: '/profile/view,7218282#char_467968,tempest'
}
const ladder: CharactersLadder = [character, character, character]
const parsedCharacter = characterRowSchema.parse(character)
const parsedLadder = charactersLadderSchema.parse(ladder)