├── LICENSE ├── README.md └── index.php /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2018 abc1763613206 4 | 5 | Copyright (c) 2022 Zhengfourth 6 | 7 | Permission is hereby granted, free of charge, to any person obtaining a copy 8 | of this software and associated documentation files (the "Software"), to deal 9 | in the Software without restriction, including without limitation the rights 10 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 11 | copies of the Software, and to permit persons to whom the Software is 12 | furnished to do so, subject to the following conditions: 13 | 14 | The above copyright notice and this permission notice shall be included in all 15 | copies or substantial portions of the Software. 16 | 17 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 18 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 19 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 20 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 21 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 22 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 23 | SOFTWARE. 24 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # TetrioRatingColor 2 | 利用Shields.io,实现按颜色显示tetr.io的Rating 3 | ## 现成的API 4 | 国际惯例,先丢API:https://rin.kagamine.xyz:16300/tetr.php 5 | 6 | 7 | ## 使用方法 8 | 9 | 10 | 以下是三个示例:**由于启用了longCache,第一次调用时可能较慢** 11 | 12 | https://rin.kagamine.xyz:16300/tetr.php?user=cxyzmm 13 | ![](https://rin.kagamine.xyz:16300/tetr.php?user=cxyzmm) (这个是作者的账号哦qwq) 14 | 15 | https://rin.kagamine.xyz:16300/tetr.php?user=blaarg 16 | ![](https://rin.kagamine.xyz:16300/tetr.php?user=blaarg) 17 | 18 | https://rin.kagamine.xyz:16300/tetr.php?user=icly&style=flat-square 19 | ![](https://rin.kagamine.xyz:16300/tetr.php?user=icly&style=flat-square) 20 | 21 | 没打满十场会显示胜场/总场,因为RD过高没有rank会显示问号rank。 22 | 23 | 参数如您所见: 24 | 25 | 26 | user:您想要获取的用户 **用户名必须使用小写** 27 | style:Shields.io的主题,可以不填,默认是for-the-badge 28 | **更多主题字符串可去[https://shields.io](https://shields.io)查看!** 29 | 30 | **新版更新资瓷了缩写:** 31 | 使用st函数传入,不可与style传入重用。 32 | 目前手工定义: 33 | - f1 -> flat 34 | - f2 -> flat-square 35 | 36 | 37 | 38 | ## 在自己服务器上搭建 39 | 就一个php文件,clone下来用就行。 40 | 41 | ## 原理 42 | 使用ch.tetr.io的API来获取用户的Rating。 43 | 之后判断好颜色,然后302到Shields.io,输出svg图片。 44 | 45 | 46 | **由于本API依赖以上两个服务,因此上述服务中任意一个出现问题,该API将无法使用!** 47 | 48 | ## 最后 49 | 这是我从深夜肝到凌晨的成果,先在此求个**star**先。 50 | 该API的运行离不开ch.tetr.io和Shields.io的API提供,向他们致以诚挚的感谢。 51 | 52 | 53 | **感谢原项目CFRatingColor的作者abc1763613206和Anguei,我这项目基本都是从那边抄来改的。** 54 | 55 | 原项目链接:[https://github.com/hanlin-studio/CFRatingColor](https://github.com/hanlin-studio/CFRatingColor) 56 | 57 | -------------------------------------------------------------------------------- /index.php: -------------------------------------------------------------------------------- 1 | 3 | $user = $_GET["user"]; 4 | $st = $_GET["style"]; 5 | $st1 = $_GET["st"]; 6 | $badgehd = "Location:https://img.shields.io/badge/"; 7 | set_time_limit(600); 8 | $mainUrl = "https://ch.tetr.io/api/users/*"; 9 | $timeo = 0; 10 | $ratingr = getData(str_replace("*", $user, $mainUrl)); //获取json数据并转换为数组 11 | $timeo = $timeo +1; 12 | $styleraw = "?longCache=true&style=*"; 13 | if (isset($_GET["style"])) //是否使用自定义style 14 | { 15 | $style = str_replace("*", $st, $styleraw); //替换 16 | 17 | } else { 18 | $style = "?longCache=true&style=for-the-badge"; //默认是for-the-badge 19 | } 20 | if (isset($_GET["st"])) //自定义style缩写,不可重用 21 | { 22 | switch($st1){ 23 | case "f1" : $style = "?longCache=true&style=flat";break; 24 | case "f2" : $style = "?longCache=true&style=flat-square";break; 25 | default: break; 26 | } 27 | 28 | } 29 | function getData($url) { 30 | $headers = array(); 31 | $ch = curl_init(); 32 | curl_setopt($ch, CURLOPT_HEADER, 0); 33 | curl_setopt($ch, CURLOPT_URL, $url); 34 | curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); 35 | curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); 36 | curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 37 | curl_setopt($ch, CURLOPT_TIMEOUT, 600); 38 | $result = curl_exec($ch); 39 | curl_close($ch); 40 | $result = json_decode($result, true); 41 | return $result; 42 | } 43 | $ratstr = $ratingr["data"]["user"]["league"]["rating"]; //从数组中提取字符串rating 44 | $rating = round($ratstr); //转换为数字 45 | if ($rating == -1) { // 特判没打满10场 46 | $win = $ratingr["data"]["user"]["league"]["gameswon"]; 47 | $play = $ratingr["data"]["user"]["league"]["gamesplayed"]; 48 | $rating = $win . "/" . $play; 49 | } 50 | $name = $ratingr["data"]["user"]["league"]["rank"]; 51 | if ($name == "z") { //开始根据段位判断颜色~ 52 | $color = "-808080.svg"; 53 | $name = "%3F"; 54 | } else if ($name == "d") { 55 | $color = "-9e81a1.svg"; 56 | } else if ($name == "d+") { 57 | $color = "-9a67a0.svg"; 58 | } else if ($name == "c-") { 59 | $color = "-84679b.svg"; 60 | } else if ($name == "c") { 61 | $color = "-7c4e9e.svg"; 62 | } else if ($name == "c+") { 63 | $color = "-5b3399.svg"; 64 | } else if ($name == "b-") { 65 | $color = "-5651c7.svg"; 66 | } else if ($name == "b") { 67 | $color = "-5b73df.svg"; 68 | } else if ($name == "b+") { 69 | $color = "-52a6c8.svg"; 70 | } else if ($name == "a-") { 71 | $color = "-49c38a.svg"; 72 | } else if ($name == "a") { 73 | $color = "-72d156.svg"; 74 | } else if ($name == "a+") { 75 | $color = "-23ab32.svg"; 76 | } else if ($name == "s-") { 77 | $color = "-e3e132.svg"; 78 | } else if ($name == "s") { 79 | $color = "-fbc90b.svg"; 80 | } else if ($name == "s+") { 81 | $color = "-ffe810.svg"; 82 | } else if ($name == "ss") { 83 | $color = "-fffb92.svg"; 84 | } else if ($name == "u") { 85 | $color = "-ff3013.svg"; 86 | } else if ($name == "x") { 87 | $color = "-ff5aff.svg"; 88 | } else { 89 | $color = "-black.svg"; 90 | } 91 | $style = $style. "&logo=data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAQAAAAEABAMAAACuXLVVAAAALVBMVEVHcEwAAAAAAAAFBQUbVXofaJZ9VtCNL37JRJ+lOYQVkZ1+X+PAQKrfTqovUaqjn7QgAAAACnRSTlMAIBEwc7rMdcFvX68ANQAAAeNJREFUeNrt3b1Nw0AYxnErG9i3gHMbWIQJCA0tsAIzUKRGNGwAC7ACPRUDhIKOmhkQBsUBvVzuzmfuwvt/HLnKxy/vk5OiKPJVLyNTjQ0AAAAA7D+gjT7SAGxssgOs+glQARVQQSpAPY84UlZQx6RJOYFYgO4JWCooYQIpAaauu5BT4go65RUcBCb5KogGtOoBVEAF+SbQFVbBtZQb6aXW4l3FV1ksPbLo0yNmn1+Ue1z/BHcS4Nn/bZ7ce2cLMFcPoAIAfAYAAAAAAAAAAAAAAAAAAAAAAABKAlxKP8peXUg5l3Im/TR7HABYPQl5fJDyJuVUGsshAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAE0A+U+t4v9fpwGIeR2uwLB9RaYsgKYEgFU9AUsF6leBpQImQAVUQAVUQAVUQAVUQAVUQAVUQAVU8J8qWHrnaBrA6IvlZgO06gFUQAVUIFZgvjY4uPUHBG+eYHZMYHJAXQrAqp9AYkDncdtseeKowEQAzGbxuNMN9yu7go9ZrfZzFRjnefcE7FhA4zz/tqHSFmBIAGD0xmrZAK4JtLkBVGCpQMUqKGsCs+r7EQD4+VD/w5UAQDVJAAAAAOAPAe84sSSYxpxAFAAAAABJRU5ErkJggg==&link=https://ch.tetr.io/u/" . $user; 92 | $rawc1 = str_replace("_", "__", $user); 93 | $rawc2 = str_replace("-", "--", $rawc1); 94 | $name = str_replace("-", "--", $name); 95 | $rawr = $badgehd . $rawc2 . "-" . $name . " " . $rating . $color . $style; 96 | header($rawr); //拼接并输出(修复下划线转义bug) 97 | 98 | ?> 99 | 100 | --------------------------------------------------------------------------------