他カテゴリ

特定期間の記事とツイートを取得する

やよい🌜UGOK's icon'
  • やよい🌜UGOK
  • 2020/07/22 16:56
Content image

こんばんは。急に暑くなって困ってます。

 

前回、前々回で全期間のアリスの記事とツイートを取得して、いいねの数を数えてDBに保存しました。

今回は半期ごとのいいねを数えたいので、特定の期間で絞って取得してこようと思います。

GET APIを叩いて取得したTwitterのツイート、ALISの記事データにはcreated_atという項目があるので、それを元に期間を限定していきたいと思います。
 

function getLikesAndRT(user, date) {
let rt = 0;
let likes = 0;
const tweets = JSON.parse(
readFileSync(`json/tweets/${user.twitter_id}.json`, "utf-8")
);
tweets.forEach((tweet) => {
const created_at = new Date(tweets[0].created_at);
if (created_at.getTime() > date.getTime()) {
likes += tweet.favorite_count;
rt += tweet.retweet_count;
}
});
const twitter_obj = {
likes_half: likes,
rt_half: rt,
};
return twitter_obj;
}

まず、前回からの変更点です。

const created_at = new Date(tweets[0].created_at);
if (created_at.getTime() > date.getTime()) {

 

この部分と、getLikesAndRT関数にdate引数を追加しています。
半期前より新しい、古いを比較したいのですが、日付の比較をするメソッドするには、形を変更する必要があります。
なので、getTime関数を使ってミリ秒に変換してから比較をしています。

 

async function main() {
const date = new Date();
const month = date.getMonth() + 1;
let period;
if (month !== 4 && month !== 9) {
console.log("学期始めではありません");
return;
}
if (month === 4) {
period = 18408600000;
} else if (month === 9) {
period = 15778800000;
}
date.setTime(date.getTime() - period);
let users = getUsers();
users.forEach((user) => {
user.twitter = getLikesAndRT(user, date);
updateTwitterData(user);
});
}

次に、半期ごと(前期: 4~8, 後期: 9~3)にしたいので、4月始まりの場合と9月始まりの場合で条件を分けています。
学期始めに、その前の学期分のデータを保存したいので、4月と9月以外は関数から出るようにしています。
dateを半期前に戻し、それをgetLikesAndRT関数の引数としてわたしています。

Content image

likes_halfとrt_halfが半期分のいいねとRTです。
数字に差がありますね😀

これで半期分の取得は完了です。
(どっちも6ヶ月なら楽なのにTT)と思いながら書いていました。
1週間ごとも取得するようにする必要があるので、そちらも同じ方法でやろうと思います。

追記:
昨日まとめたあとに、これだと4/30とかに実行した場合9/30からしかとれないのでは...と気がつきました。
また他の方法を試し次第編集します。

 

参考記事

 

Supporter profile icon
Article tip 1人がサポートしています
獲得ALIS: Article like 16.60 ALIS Article tip 1.10 ALIS
やよい🌜UGOK's icon'
  • やよい🌜UGOK
  • @ugok841
UGOKのやよいです。Djangoをやっていました。最近Javascriptを勉強し始めました。Twitter-> @ugok841

投稿者の人気記事
コメントする
コメントする
こちらもおすすめ!
Eye catch
他カテゴリ

京都のきーひん、神戸のこーへん

Like token Tip token
12.10 ALIS
Eye catch
他カテゴリ

警察官が一人で戦ったらどのくらいの強さなの?『柔道編』 【元警察官が本音で回答】

Like token Tip token
114.82 ALIS
Eye catch
クリプト

Bitcoin史 〜0.00076ドルから6万ドルへの歩み〜

Like token Tip token
947.13 ALIS
Eye catch
他カテゴリ

テレビ番組で登録商標が「言えない」のか考察してみる

Like token Tip token
26.20 ALIS
Eye catch
クリプト

NFT解体新書・デジタルデータをNFTで販売するときのすべて【実証実験・共有レポート】

Like token Tip token
120.79 ALIS
Eye catch
他カテゴリ

警察官が一人で戦ったらどのくらいの強さなの?『柔道編』 【元警察官が本音で回答】

Like token Tip token
114.82 ALIS
Eye catch
トラベル

わら人形を釘で打ち呪う 丑の刻参りは今も存在するのか? 京都最恐の貴船神社奥宮を調べた

Like token Tip token
484.35 ALIS
Eye catch
他カテゴリ

オランダ人が語る大麻大国のオランダ

Like token Tip token
46.20 ALIS
Eye catch
ゲーム

【初心者向け】Splinterlandsの遊び方【BCG】

Like token Tip token
6.32 ALIS
Eye catch
クリプト

約2年間ブロックチェ-ンゲームをして

Like token Tip token
61.20 ALIS
Eye catch
トラベル

梅雨の京都八瀬・瑠璃光院はしっとり濃い新緑の世界

Like token Tip token
213.49 ALIS
Eye catch
クリプト

Bitcoinの価値の源泉は、PoWによる電気代ではなくて"競争原理"だった。

Like token Tip token
159.32 ALIS