2017-10-21 96 views
1

我正在嘗試使用Google日曆來跟蹤我的遊戲時間/歷史記錄。跟蹤Steam遊戲時間(來自網絡API)

這是Steam Web API中,我無法找到一個方法來獲得準確的時候我在玩什麼,除了GetRecentlyPlayedGames端點,這給了我一些有趣的數據的詳細信息:

enter image description here

理論上,我可以存儲playtime_forever字段,並且每5分鐘計算一次cron以查看它是否上升,如果連續兩次相同,則意味着我停止播放此會話,並且可以在日曆中記錄它。

所以這個問題就解決了在理論上,但我想知道是否有任何其他的API,我可以使用,而不是說會給我更準確的數據,或者這是我最好的選擇?

我對YouTube的看法是一樣的,因爲他們沒有給我確切的時間,但是例如Netflix這樣做更簡單,我不必管理任何類型的數據(除了什麼我已經發送到日曆)

+0

這很有趣。這是產品或項目的一部分嗎? –

+0

@JoseGómez隨意使它成爲一個產品,這只是我自己的項目,因爲我喜歡跟蹤我的時間 – Amit

回答

0

我發現沒有比最近歷史上其他的方式來得到這個,所以這是我在做什麼。

getPlaytime(request, response) { 
    return this._getRecentHistory() 
    .then(response => response.games) 
    .then(games => { 
     response.json(games); 
     return Promise.all(games.map((game) => { 
     const appRef = this.ref.child('steam').child(game.appid); 
     return appRef.once('value').then(snapshot => { 
      if (snapshot.exists()) { 
      const value = snapshot.val(); 

      if (game.playtime_forever > value.playtime) { 
       const sessionPlaytime = game.playtime_forever - value.playtime; 
       console.log("sessionPlaytime", game.name, sessionPlaytime, "minutes"); 

       const endDate = new Date(); 
       const startDate = new Date(endDate.getTime() - sessionPlaytime * 60 * 1000); 

       this.calendar.createEvent("games", game.name, startDate, endDate); 

       return appRef.update({playtime: game.playtime_forever}); 
      } 

      return Promise.resolve(); 
      } else { 
      return appRef.set({ 
       name: game.name, 
       playtime: game.playtime_forever 
      }); 
      } 
     }); 
     })); 
    }) 
    .catch((e) => console.error(e)); 
}