├── LICENSE ├── README.md ├── json ├── GetSteamData.php ├── SteamAPI.php ├── classSteamCard.php ├── images │ └── loading.svg └── loading.svg └── page-steam.php /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2020 雾时之森 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # 在你的 WordPress 博客展示 Steam 游戏库 2 | 作为一个爱玩游戏的人,博客怎么能没有你的游戏库呢,所以按理是要把它攒出来的。本页面模版**理论**适配了大部分主题,部分布局比较奇葩的主题也能用但是需要修改样式,如果你有更好看的样式,也可以分享给我们~ 3 | 4 | 本页面模版由 [蘑菇](https://fairysen.com/) 和 [阿肾](https://imashen.cn/) 二人合作开发完成,您可以使用和二次修改但请务必保留版权,谢谢! 5 | 6 | 插件版由 [野兔](https://www.azimiao.com) 制作: 7 | 8 | 9 | ## 二次开发说明 10 | 由于 Steam 修改相关政策,导致原有的数据获取方式失效,于是我在 `蘑菇` 和 `阿肾` 二人的基础上对 SteamAPI 进行修复,现在个人游戏库相关的数据通过 Steam 官方提供的 Web API 获取。同时也修改了 Steam 个人资料卡片的获取方式,由 [exophase](https://gamercards.exophase.com) 网站提供支持。 11 | 12 | ## README 13 | 1. 下载项目中的文件,将 `page-steam.php` 扔到你的主题根目录,将 `json` 目录扔到你的站点根目录 14 | 2. 修改 `page-steam.php` 文件 15 | - 第 196 行填写 SteamID; 16 | - 第 197 行填写 Steam Web API 密钥; 17 | - 第 198 行填写 exophase 网站生成的个人资料卡片链接; 18 | - 第 203 行填写 SteamAPI 接口地址 19 | - 详细及其他请参考代码注释修改。 20 | 3. 服务器在境内,理论上API地址未被屏蔽,若不幸被屏蔽可修改 `SteamAPI.php` 文件第 25、26 行,自行添加代理;若服务器在境外直接走本地即可 21 | 4. 信息填好后,在 `WP后台 - 新建页面` 选择 `Steam游戏库` 这个模版 22 | 5. 若发现游戏库/游戏时长不正常显示,请到 Steam 个人设置界面,将数据全部改为公开,记得 ***游戏详情*** 底下有个附属选项,不要打勾 ✔ 23 | 24 | ## API 25 | 接口文档:https://steamapi.xpaw.me/ 26 | 27 | ## DEMO 28 | [Steam游戏库](https://blog.grayzhao.com/together-game/) 29 | 30 | ## ISSUE 31 | 1. 如果数据不对,请手动删除 `steam.json` 文件,再次打开页面数据将会自动更新 32 | 2. 关于打开没有数据的问题请检测你的 Steam 游戏库是否设置为公开,信息是否填写正确,手动请求API是否能得到数据,格式为:`https://你的域名/json/SteamAPI.php?id=你的SteamID&key=您的 Steam Web API 密钥` 33 | 3. 第一次打开没有数据需要手动刷新一遍,请检查你是否开启了 *AJAX* 34 | 4. 打开页面报错,请使用 Chrome 浏览器或者 FireFox 浏览器,F12 查看具体错误 35 | 5. 如果第一次打开样式有问题就把 CSS 添加到全局里 36 | 6. 本页面模版理论适配了大部分 WP 主题,部分布局比较奇葩的主题也能用但是可能需要修改样式 37 | -------------------------------------------------------------------------------- /json/GetSteamData.php: -------------------------------------------------------------------------------- 1 | "; 20 | //echo var_dump($game_data); 21 | 22 | // 构造请求接口 23 | foreach ($game_data as $key => $value) { 24 | // limit 25 | $appid = $game_data[$pagenum]['appid']; 26 | 27 | if ($key == $limit || $appid == NULL) { 28 | break; 29 | } 30 | $array[$key]['num'] = $key; 31 | $array[$key]['name'] = $game_data[$pagenum]['name']; 32 | // 中国大陆 CDN 图片加速 33 | $array[$key]['logo'] = "https://cdn.cloudflare.steamstatic.com/steam/apps/" . $appid . "/capsule_184x69.jpg"; 34 | $array[$key]['appid'] = $appid; 35 | // 游玩时间计算 - 单位:小时 36 | $min_forever = $game_data[$pagenum]['playtime_forever']; 37 | $hours_forever = ceil($min_forever / 60); 38 | $array[$key]['hours_forever'] = !empty($hours_forever) ? (string)$hours_forever : "0"; 39 | $pagenum++; 40 | } 41 | echo '{"total": ' . $total . ',"total_page": ' . $total_page . ', "limit": ' . $limit . ', "page": ' . $page . ', "data":' . json_encode($array, true) . '}'; 42 | -------------------------------------------------------------------------------- /json/SteamAPI.php: -------------------------------------------------------------------------------- 1 | $url, 20 | CURLOPT_RETURNTRANSFER => true, 21 | CURLOPT_ENCODING => '', 22 | CURLOPT_MAXREDIRS => 10, 23 | CURLOPT_TIMEOUT => 0, 24 | CURLOPT_FOLLOWLOCATION => true, 25 | // CURLOPT_PROXY => "127.0.0.1", // 代理IP 26 | // CURLOPT_PROXYPORT => 7890, // 代理端口 27 | CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, 28 | CURLOPT_CUSTOMREQUEST => 'GET', 29 | CURLOPT_HTTPHEADER => array( 30 | 'User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:89.0) Gecko/20100101 Firefox/89.0', 31 | 'Accept-Language: zh-CN' 32 | ), 33 | )); 34 | $response = curl_exec($curl); 35 | curl_close($curl); 36 | // echo ($response); 37 | return $response; 38 | } 39 | -------------------------------------------------------------------------------- /json/classSteamCard.php: -------------------------------------------------------------------------------- 1 | "; 10 | } else { 11 | echo "
"; 12 | } 13 | echo "
"; 14 | 15 | // 缓存游戏库数据 16 | $api_url = $steamAPI . "?id=" . $id . "&key=" . $key; //拼接api_url 17 | // echo "$api_url"; 18 | if (!file_exists("json/steam.json")) { //缓存Steam API数据24小时,使用我的API请不要改为0 19 | file_put_contents("json/steam.json", file_get_contents($api_url)); 20 | } else if ((time() - filemtime("json/steam.json")) > 86400) { 21 | file_put_contents("json/steam.json", file_get_contents($api_url)); 22 | } 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /json/images/loading.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | -------------------------------------------------------------------------------- /json/loading.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | -------------------------------------------------------------------------------- /page-steam.php: -------------------------------------------------------------------------------- 1 | 9 | 10 | 11 | 194 | 195 | 207 | 208 |
209 |
210 | 214 |
215 | 216 | 219 | 220 | 272 | 273 | 275 |