2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

NIJIBOXAdvent Calendar 2017

Day 5

Product HuntのAPI叩いてみた

Last updated at Posted at 2017-12-04

どうも、連続投稿です。tack.saitoです。
nijiboxでエンジニア風を醸し出して過ごしています。

さてさて。
今後、流行るような単語、知りたいなー、ってことで。

Product HuntのAPI叩こう
結果をスプレッドシートに保存して、すこーし解析して、流行りに敏感になろう!
そうだ、GASで完結だ!!

と、思いついたのでProduct HuntのAPI叩きにいきます。

API叩く準備


  // product huntにログインして、keyとsecretを発行しときます
  var key = "your key";
  var secret = "your secret";
  
  var preHeaders = {
    "Accept": "application/json",
    "Content-Type": "application/json"
  };
  
  var preBody = {
    "client_id" : key,
    "client_secret" : secret,
    "grant_type" : "client_credentials"
  };
  
  var preParams = {
    "headers" : preHeaders,
    "payload" : preBody
  };
  
  var tokenResponse = UrlFetchApp.fetch("https://api.producthunt.com/v1/oauth/token", preParams);
  var tokenData = JSON.parse(tokenResponse.getContentText());
  var access_token = tokenData.access_token; //API叩くためのaccess token取得
  

API叩く


  var headers = {
    "Authorization": "Bearer "+ access_token, // さっきのtoken
    "Accept": "application/json",
    "Content-Type": "application/json"
  };
  
  var params = {
    "headers" : headers,
    "payload" : ""
  };

  var url = "https://api.producthunt.com/v1/posts?days_ago=1";

  try{
    // API叩く部分
    var response = UrlFetchApp.fetch(url, params);
    var data = JSON.parse(response.getContentText());
    var posts = data.posts;
    
    // 結果をスプレッドシートに保存部分
    for(var key in posts){
      var id = posts[key].id;
      var name = posts[key].name;
      var tag = posts[key].tagline;
      var url = posts[key].discussion_url;
      var voteCount = posts[key].votes_count;
      // ここはページにアクセスして、正規表現でdescription部分を取得してます(今回は省略)
      var description = getDescription(url);
      // 書き込む先のsheetを取得しといて
      var sheet = getMySheet();
      sheet.appendRow([id,name,tag,description,voteCount,url]);
    }
  } catch(e) {
    Logger.log(e);
  } 

動かすと....

スクリーンショット 2017-11-30 16.14.30.png

いけました。素敵です。
ただ、他のendpointはなぜか認証に失敗するっぽく、叩けない。
うーむ。謎です。。。

解析部分

description detailの部分を単語に区切って
大文字が入っているものを抽出し、
iPhoneやAndroid,App,And,How,Why,Weなど除外。
で、カウントしていきます。

スクリーンショット 2017-11-30 16.21.14.png
(右側は出てきた回数)

これからの時代はAIだ!!!

ってことが分かったので、2番目に流行っているslackに投稿しよう

slack投稿

やり方は他の人が書いてる(と思うので)そこは省略

スクリーンショット 2017-11-30 16.25.40.png

テキストのリアクション、結構好きです。

まとめ

スプレッドシート + GASで
流行りの単語を検出 + 解析 + slack通知
ができました(?)

解析は、うまいことしたいなーと思いつつ。
今はクリスマスを待ちましょう。

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?