使用Notion搭建游戏清单『Part1 搭建基本框架&建立SteamAPI类』

Notion简单介绍

Notion是一个用于工作管理或者日常生活行动管理的网站,拥有网页、PC端软件、手机端软件(Android、IOS)等不同运行环境,可以实现在任意设备上的工作管理,并且所有运行环境都可以实时同步。

Notion以模块(Block)为基本单位,围绕笔记文档、知识库、任务、轻量的数据库等方面来组织内容。在这张白纸上,包括文字、表格、视频、音频、网页、数据库等等,各种类型内容都可以看作“模块”。操作也非常简单,用户从左边的工具栏中拖进来,或是采取“/”即可调用,随意将内容组织,并且支持Markdown语法。

notion

当 Notion 遇到游戏,两者在我这里碰撞出了一个游戏库。内容含有最近游玩游戏,每日游戏时间记录,每月游戏时间记录(热力图),每年游戏时间记录(热力图),游戏时间排行,年度总结,往年游玩数据(时间,数量,达成成就数),游戏清单(包含游戏具体信息和个人测评),截图展示,攻略或文章收集。

游戏清单概览

具体内容纯属个人主观感受,不喜误喷。

游戏清单框架搭建

Notion教程网络上很多,关于注册相关的请自行查找(建议使用教育邮箱进行注册)。

Notion:https://www.notion.com/zh-cn

注册完成后,输入标题后就可以正式开始制作了(建议设置为全宽)。

新建"游戏清单数据库"

正文中输入"/database",在下拉框中选择表格视图即可生成一个数据库表格。

新建页面属性

在名称后点击加号可以新建属性项,在出现的下拉框中设置属性项的类型,点击新建的属性项可以进行详细设置(名称、属性类型等)。

目前我自己使用的属性有:(类型:对应名称)

标题:游戏名

文本:name、开发商、我的评级

多选:游戏类型、游戏要素、游玩平台、游玩状态

日期:发售日期

数字:游玩时长、已达成成就、总成就数、我的评分、appid

上次编辑时间:最近修改

网址:steamdb链接

函数:成就进度、成就进度条形图、发售年份

函数部分较为复杂,我会放在『Part 5 游戏清单美化』(暂定)进行细节代码说明。

创建完成之后可以先尝试自己填写(函数部分除外)。

点击标题属性栏右侧的打开,可以查看对应的游戏页面,其中包含属性栏(我这里的属性栏样式是重新设置过的,正常的应为从上到下的一列,感兴趣可以自行探索,后面美化篇会写详细教程),点击回车可以进行正文编写。

查看填入的属性

但是,我们的steam库不可能只有几款游戏,成百甚至上千款游戏我们不可能一个一个的设置,工作量会十分巨大。我采用的是利用SteamAPI和NotionAPI,使用Python写一个脚本,让计算机每日运行来更新数据,我们要做的只有为喜欢的游戏写写评测。下面我将展示脚本中SteamAPI部分的代码。

Steam Web API

获取基本信息

首先我们要获取Steam Web API密钥,获取方式十分简单,网址是Steam 社区 :: Steam Web API 密钥,按照提示点几下就行了,域名可以随便填写,需要记住它提供的32位密钥。

SteamID(17位数字)和Account ID可以在SteamDB点击右上角个人信息查看。

基本信息

关于SteamAPI的使用可以查看下面的链接:

Steam Web API简易使用介绍:https://blog.imzy.ink/steamapi/

Steam Web API Documentation and Tester:https://steamapi.xpaw.me/

Steam Web API - Valve Developer Community:https://developer.valvesoftware.com/wiki/Steam_Web_API

使用的库文件和全局变量设置

下面所列打码部分填上刚刚获取的三串密钥(字符串格式),网址是可能会使用的网址,变量名称可自行更改。

基本参数设置

Steam API Class

我们建一个SteamAPI类,其中的变量hearder可写可不写,不写就设置为空字符串,想写的话可以参照User-Agent的获取:https://blog.csdn.net/yigehunzibale/article/details/134145853。

类变量

Steam API Class方法函数

  • checkConnection():接受url和参数,如果成功获取数据则返回json格式,反之则报错。

  • endConnection():关闭Session对话池。

checkConnection方法和endConnection方法

  • getOwnedGames():获取已拥有游戏信息。

getOwnedGames方法

SteamAPI返回的信息大致如下图所示,我们这个方法直接返回"response"的键值,包括游戏总数和拥有游戏的信息。

SteamAPI:getOwnedGames()

  • getRecentlyPlayedGames():获取最近(两周)游玩游戏信息

getRecentlyPlayedGames方法

返回值为字典,键名为"appid"(字符串),值为字典,其中包含键名:游戏名"game_name"、总游玩时间"playtime_forever"、游戏图标链接id"img_icon_url"

  • getPlayerAchievements():获取游戏成就信息

getPlayerAchievements方法

输入参数为游戏的appid(整型)

返回值为字典,键名:已达成成就数"achieved_num"和总成就数"achievement_num"

  • getGameDetails():获取游戏商店信息

getGameDetails方法

输入参数为游戏的appid(整型)

返回值为字典,键名从上到下是:游戏名"name"、开发商"developers"、发售日期"release_date"、appid"appid"、游戏平台"platform"、封面图片链接"header_image"、库背景图片链接"cover_image"、游戏图标id"icon_image"、steamdb链接"steamdb_link"

  • getTotalState():获取游玩的总数据

getTotalState方法

返回值为字典,键名:总游玩过的游戏"total_played_games"、游玩总时长"total_playtime"、达成成就个数"total_completed_achievements"、拥有的游戏数量"total_games"

  • getYearReplay():获取Steam年度回顾

getYearReplay方法

输入参数为想要查询的年份(字符串)

返回值为字典,键名:年总游戏时长"total_playtime_hours"、年游玩游戏数量"total_play_summary"、该年每月游玩时间"month_playtime"、该年每月游戏数量"month_playgame_num"

这个方法无法直接从SteamAPI的接口中获取数据,只好从Steam年度回顾爬取数据了。如果有知道相关API接口可以在评论区指出。

以上就是我所使用的所有方法了,由于是自用,注释写的就少了点,可以使用GPT自行加注释。

本人还是学生,代码可能会出现BUG,如有发现或者是改进办法可以在评论区指出,还请嘴下留情

总结

注意:运行的时候最好开着魔法,不开连接会非常不稳定,有时可能会报错。

以上,SteamAPI对象就写完了,各位可以设置完三个关键密钥后,print各个函数的输出感受一下。

下一章我会构建NotionAPI对象来接受数据,修改后传入新建的游戏清单中。

可以提前浏览相关内容:

使用 Notion API 集成:https://blog.imzy.ink/steamapi/

Introduction:https://developers.notion.com/reference/intro

Notion API的使用详解:https://www.hangge.com/blog/cache/detail_3440.html

最后,球球点赞和盒电

更多游戏资讯请关注:电玩帮游戏资讯专区

电玩帮图文攻略 www.vgover.com