Отслеживание игрового времени в Steam (из веб-API)

Я пытаюсь отслеживать свое игровое время/историю с помощью Календаря Google.

Это веб-API Steam, в котором я не могу найти способ получить подробную информацию о когда именно я играл во что, кроме конечной точки GetRecentlyPlayedGames, которая дает мне некоторые интересные данные:

введите здесь описание изображения

Теоретически я могу хранить поле playtime_forever, и каждые 5 минут cron смотреть поднимается ли оно, и если 2 раза подряд одно и то же, значит я перестал играть в эту сессию, и я могу логировать это в Календаре.

Таким образом, эта проблема решена в теории, но мне было интересно, есть ли какой-либо другой API, который я мог бы использовать вместо этого, который дал бы мне более точные данные, или это лучший вариант, который у меня есть?

То же самое я делаю с YouTube, потому что они не дают мне точное время, но, например, Netflix делает так, что это проще, и мне не нужно управлять какими-либо данными (кроме того, что я уже отправил на календарь)


person Amit    schedule 21.10.2017    source источник
comment
Это очень интересно. Это часть продукта или проекта?   -  person Jose Gómez    schedule 20.11.2017
comment
@JoseGómez не стесняйтесь делать из этого продукт, это всего лишь мой собственный проект, потому что мне нравится отслеживать свое время.   -  person Amit    schedule 20.11.2017


Ответы (1)


Я не нашел другого способа получить это, кроме недавней истории, вот что я делаю.

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));
}
person Amit    schedule 28.10.2017