こんにちは。
今日は前回に引き続きALISのAPIを使っていきます。今回はいいねを取得していきたいと思います。
async function getArticlesId(user) {
const response = await fetch(
`https://alis.to/api/users/${user.alis_id}/articles/public`
);
const body = await response.json();
let alis = {
id: user.user_id,
articles: [],
};
if ("Items" in body) {
body.Items.forEach((article) => {
alis.articles.push(article.article_id);
});
}
return alis;
}
全記事分のいいねを一気にとってくることはできません。そのため、まずはalis idをもとに公開されている記事を取得します。
api/users/${user.alis_id}/articles/public
上記のリクエストを送ると、Itemsに公開されている記事が入ったレスポンスが返ってきます。いいねを取得するには記事のidが必要なので、記事のidをリストに入れるようにしました。
async function getAlisLikes(alis_data) {
let alis = {
id: alis_data.id,
likes: 0,
posts: alis_data.articles.length,
};
await Promise.all(
alis_data.articles.map(async (article) => {
const response = await fetch(
`https://alis.to/api/articles/${article}/likes`
);
return await response.json();
})
)
.then((body) => {
body.forEach((obj) => {
alis.likes += obj.count;
});
})
.catch((err) => {
console.error(err);
});
return alis;
}
次に、いいねを取得します。引数に記事とユーザーidをもったアリスデータを渡しています。
api/articles/${article}/likes
いいねを取得するには、上記のリクエストを送る必要があります。ここのarticleには記事のidが入っています。
今回は全記事のいいねを全て取得したいので、一つの記事のいいねを取ってくる度にいいねカウントを足していくようにしました。
このようにいいねと記事数を取得することができました!
半期ごとのいいねと記事数も取得できるようにしたため、halfとallで分けて保存するようにしています。
次回は半期ごとの取得について書きたいとおもいます😀