leaflet自定标签json_做一个好看的数据展示「小标签」,在个人网站实时展示你的粉丝数

news/2024/5/19 15:31:27/文章来源:https://blog.csdn.net/weixin_39596975/article/details/110454456

dd500a223c0e2cedcf4bd0a12c681bc9.png

如果你浏览过一些 GitHub 的开源项目,你一定见过很多 README 文档中都会出现的五颜六色、各式各样的「小牌子」。

acf71473bc865bd12dea2f2343ecc82d.png

最初,这些「小牌子」的主要作用是为了显示「某个 GitHub 项目」的「某种状态」,比如项目的编译是否成功、文档是否更新至最新、软件的下载数量有多少……不过,从原理的角度来说,这些「小牌子」都是通过我们给「牌子渲染服务器」提供一些数据后,服务器返回给我们一个 SVG 格式的图片来工作的。我们将返回的 SVG 图片嵌入到 GitHub 的 README 文档或其他网页里面,就完成了一个「小牌子」的制作。

因此,我们不仅可以将这些「小牌子」用在 GitHub 里,如果你拥有自己的「个人主页」、「博客」或其他展示个人资料的地方,只要你可以控制网页的 HTML,能自己向其中插入一些自定义代码,你就可以借助于「小牌子服务器」来自制一些好看又能实时更新的「个人资料展示牌」、「订阅地址标识牌」等等。

1b1468d6aba0c2be912122f1dfba0553.png

http://Shields.io 的基本用法

简单定制静态小牌子

Shields.io 就是一个我们开头提到的「牌子渲染服务」。事实上,GitHub 上面大部分「小牌子」都是用 Shields.io 来渲染的。我们可以借助于 Shields.io 服务定制一些个性化的「小牌子」。一个最简单的例子就是:https://img.shields.io/badge/少数派-SpencerWoo-da282a,这一请求可以渲染得到如下效果的小牌子。

7790f30c39444baed65ea65a72e9a183.png

可以发现,简单定制小牌子非常方便,最最基础的语法规则就是:

https://img.shields.io/badge/{左半部分标签}-{右半部分标签}-{右半部分颜色}

另外,在 Shields.io 的官网上面有非常方便的「小牌子生成器」,我们可以直接用它来构造一个「小牌子」,只需要按照下图的样子:填入左半边标签、填入右半边标签,再定义右半边的颜色,点击 Make Badge 即可生成。其中,右半边的颜色我们可以用官方提供的几种预设颜色名称(下方 Colors)或者我们自己提供十六进制颜色代码都可以。

d90a5d6a6e6dd9ac2a88753cae9d36f4.png

我们按照上面的方法构造一个链接,就制作完成我们的小牌子啦!这样得到的链接是一个 SVG 图片链接,我们可以直接用插入图片的语法规则加到我们的 Markdown 文本文件中或 HTML 里面。

动态实时更新的小牌子

事实上,我们前面生成的小牌子都是静态的小牌子:其中的文本内容是固定不变的,仅能用于做一个好看的标识。而事实上,http://Shields.io 生成的小牌子完全支持动态数据显示,比如粉丝、关注者数量、RSS 订阅者数量……

如果我们想要显示一些动态变化的数据,那么我们就需要一个受支持的数据接口,这样我们的「http://Shields.io 小牌子生成服务器」就会先行从这一数据接口请求相应的动态数据,并按照请求的结果将数据渲染成不同的「小牌子」。(具体的语法请继续向下阅读)

01f97102e57bc1defb63b841dc28a54d.png

但是,虽然 http://Shields.io 服务 API 的功能非常完善,能够支持许多第三方 API 节点的数据服务,但是有一些服务:

  • API 接口返回复杂,无法直接用 http://Shields.io 简单处理
  • API 访问缓慢、不稳定,经常出现超时或无法访问的情况
  • 访问一些数据需要进行认证,直接访问会返回 403 无权限
  • 直接不对外公开 API 接口,没有面向开发者的开放平台,无法直接请求数据

当我们想要显示这些平台的关注者数量、粉丝数量时,往往就力不从心了。因此,我使用 Serverless 技术实现了「Substats: Subscriber Statistics」—— 一个专注提供多个服务、平台、网站的粉丝、关注、订阅数量的 API 中转站,用来专门处理这些单靠 http://Shields.io 不方便直接处理的疑难杂症。

  • Substats 项目开源在:GitHub - spencerwooo/Substats
  • Substats 的 API 地址位于:Home - Substats API
  • 另外,关于如何调用 Substats API,我还撰写了比较详细的文档:Substats Documentation

下面我来简单介绍一下如何利用 Substats 配合 http://Shields.io 定制小牌子 ( •̀ ω •́ )✧

用 Substats 配合 http://Shields.io 制作动态小牌子

通过 Substats API 获取我们期望的数据

为了更好的配合 http://Shields.io 服务,我特意将 Substats 的 API 设计成简单拼接 URL 即可进行数据请求。Substats API 的语法非常简单,我们只需要关注并提供如下的两个字段即可进行请求:

  • 目标服务名称 source:你所想要请求的服务、网站和平台名(比如:sspaiweibo……)
  • 请求数据标签 queryKey:在这一服务中查询的关注数据对应的标签或名称(比如我的少数派用户名 spencerwoo

这样,我们就可以用这样的语法来拼接一个 URL(注意第一个字符是 ?,其他用 & 拼接):

https://api.spencerwoo.com/substats/?source={目标服务名称}&queryKey={请求数据标签}

利用这样的语法,我们就可以进行数据请求啦。继续上面图示中的例子,比如我想要制作一个实时显示我自己的少数派关注数量的小牌子,我拼接成的 URL 即为:

https://api.spencerwoo.com/substats/?source=sspai&queryKey=spencerwoo

非常方便!这一 URL 会给我们返回类似下面的 JSON 结果:

{"status": 200,"data": {"totalSubs": 638,"subsInEachSource": {"sspai": 638},"failedSources": {}}
}

我们可以这样理解返回的 JSON 数据:

  • status 是请求是否成功,成功即为 200(表示 HTTP OK)
  • data 就是请求返回的数据(其中 totalSubs 表示总关注数量,subsInEachSource 表示每个服务请求到的粉丝数据,最后 failedSources 表示请求失败的数据源。)

可以看到我们所需要的字段即为 $.data.totalSubs,也就是 638 —— 我的少数派总关注人数。接下来,我们只需要告诉 Shields.io:

  1. 我们请求的 URL 地址
  2. 返回数据中所要的字段

这两个参数,即可成功制作一个动态小牌子。

http://Shields.io 制作最终动态小牌子

我们继续借助 http://Shields.io 官网上面提供的「小牌子生成器」,这次我们稍微向下滚动,找到 Dynamic 版本「小牌子生成器」,并按照这样的规则依次操作:

  1. 数据类型 data type 选择:JSON
  2. 标签 label 填入:小牌子左侧的标签,比如 少数派关注
  3. API 地址 data url 填入:我们刚刚的 API URL:https://api.spencerwoo.com/substats/?source=sspai&queryKey=spencerwoo
  4. 请求字段 query 填入:我们 Substats API 数据中的这一字段:$.data.totalSubs
  5. 标签颜色 color 填入:一个十六进制的颜色代码,比如少数派强调色:da282a
  6. ……(余下的两个参数:前缀 prefix 和后缀 suffix,可以根据自己的需要自行定义)

3e759409d378dc5bb8d0d8b6d3222c0e.png

这样,我们就借助 http://Shields.io 构造出来一个自定义的动态 SVG 小牌子(由于我们的请求中包含有 URL 中非法的字符,因此下面这个是 URL 编码之后的 SVG 小牌子地址):

https://img.shields.io/badge/dynamic/json?color=da282a&label=%E5%B0%91%E6%95%B0%E6%B4%BE%E5%85%B3%E6%B3%A8&query=%24.data.totalSubs&url=https%3A%2F%2Fapi.spencerwoo.com%2Fsubstats%2F%3Fsource%3Dsspai%26queryKey%3Dspencerwoo

4ee7ce664cf9ca961ac29868162630c7.png

这样,我们的动态小牌子就完整的制作完成啦,我们可以用 Markdown 的语法将这一图片链接嵌入一篇文章之中:

![](https://img.shields.io/badge/dynamic/json?color=da282a&label=%E5%B0%91%E6%95%B0%E6%B4%BE%E5%85%B3%E6%B3%A8&query=%24.data.totalSubs&url=https%3A%2F%2Fapi.spencerwoo.com%2Fsubstats%2F%3Fsource%3Dsspai%26queryKey%3Dspencerwoo)

或者用 HTML 定义图片的方法直接将这一 SVG 嵌入一个网页:

<img src="https://img.shields.io/badge/dynamic/json?color=da282a&label=%E5%B0%91%E6%95%B0%E6%B4%BE%E5%85%B3%E6%B3%A8&query=%24.data.totalSubs&url=https%3A%2F%2Fapi.spencerwoo.com%2Fsubstats%2F%3Fsource%3Dsspai%26queryKey%3Dspencerwoo" />

其他 Substats API 的功能和语法规则

另外,Substats API 还可以串联多个不同的数据源和它们对应的请求参数。比如,我同时请求少数派、知乎、GitHub 三个平台上面的关注,即可这样构造请求(多个 sourcequeryKey 组合按照顺序进行请求即可,顺序在请求过程中不会丢失):

https://api.spencerwoo.com/substats/?source=sspai&queryKey=spencerwoo&source=zhihu&queryKey=spencer-woo-64&source=github&queryKey=spencerwooo

可以看到,上面的 URL 里,我直接串联了多个 sourcequeryKey 的请求组合,同时请求。这样我们就可以得到这三个平台上面关注者数量的总和 totalSubs,以及每个平台各自的关注者数量 subsInEachSource

{"status": 200,"data": {"totalSubs": 1312,"subsInEachSource": {"sspai": 638,"zhihu": 361,"github": 313},"failedSources": {}}
}

那么,我们就可以直接用 http://Shields.io 构造一个如下的 SVG 小牌子:

https://img.shields.io/badge/dynamic/json?color=0084ff&label=%E5%B0%91%E6%95%B0%E6%B4%BE%7C%E7%9F%A5%E4%B9%8E%7CGitHub&query=%24.data.totalSubs&url=https%3A%2F%2Fapi.spencerwoo.com%2Fsubstats%2F%3Fsource%3Dsspai%26queryKey%3Dspencerwoo%26source%3Dzhihu%26queryKey%3Dspencer-woo-64%26source%3Dgithub%26queryKey%3Dspencerwooo

这样我们就可以直接得到三个平台总关注数量的一个「小牌子」:

16f14e40f51214ee0fa1fb34e9d36ab6.png

同时,如果你想同时请求多个平台,但是平台中请求的数据标签名称是一样的,比如我们同时请求 Feedly 和 NewsBlur 两个 RSS 订阅服务里我自己的 RSS 链接 https://blog.spencerwoo.com/posts/index.xml 的订阅数量,那么我们可以:

  • 直接用 |feedlynewsblur 直接连接,传递给 source 作为参数
  • 并将 RSS 链接传递给 queryKey 作为参数

从而构造这样的请求:

https://api.spencerwoo.com/substats/?source=feedly|newsblur&queryKey=https://blog.spencerwoo.com/posts/index.xml

这样,我们就可以直接得到两个平台同一个 RSS 源的总订阅数量:

{"status": 200,"data": {"totalSubs": 17,"subsInEachSource": {"feedly": 14,"newsblur": 3},"failedSources": {}}
}

从而制作表示 RSS 链接总订阅人数的「小牌子」:

00fbb1562c8cc618fe6996e9d1c9ddf7.png

简单方便!实在好用!(不瞒大家说,最初开发这一项目,我就是为了显示我自己 RSS 总订阅人数。 )

小结

Substats 是我借助 Serverless 技术构建的一个 Cloudflare Worker,直接部署在 Cloudflare 全球 CDN 节点上,访问速度非常的快。因此,如果你使用 Substats 和 http://Shields.io 来制作「小牌子」,生成 SVG 所消耗的时间的占比较大的部分应该是和原服务 API 沟通的时间(比如 NewsBlur 就特别慢)。

虽然 Substats 仅诞生了不到一周,但是目前在我和其他两位同学的共同努力下,已经支持了包括哔哩哔哩、少数派、知乎、微博、GitHub 等知名网站、社交平台以及 Feedly 和 NewsBlur 两大 RSS 服务提供商。未来我会尽我所能,继续维护,支持更多的平台。

582ea8815671b541d6a8505f872baeef.png

希望这篇文章,以及 Substats API,能帮助你更方便、更轻松的零成本自制动态实时更新、快速加载的小牌子,用来装扮你的个人主页、博客、GitHub 项目 README 或其他网页。如果你觉得 Substats 简直太棒了,那请一定 前往 GitHub 项目页面 给我一个 Star!本文的介绍到这里就结束啦,感谢阅读。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_856551.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

如何将vs2012项目的网站布置到iis上,实现内网访问

1首先获得你本机的ip地址 可以通过命令行输入 ipconfig/all 2配置电脑的iis&#xff08;前提是你已经安装了&#xff09; 右击我的电脑选择管理 右键网站添加网页 会出来上面的对话框 选择直接的项目web路径就ok ip地址和选自己的就行 端口随便选一个合法的。 有时候配置了出不…

php java session共享_PHP 实现多网站共享用户SESSION 数据解决方案

一、问题起源 稍大一些的网站&#xff0c;通常都会有好几个服务器&#xff0c;每个服务器运行着不同功能的模块&#xff0c;使用不同的二级域名&#xff0c;而一个整体性强的网站&#xff0c;用户系统是统一的&#xff0c;即一套用户名、密码在整个网站的各个模块中都是可以登录…

腾讯云服务器会自动备份吗,腾讯云服务器建站教程 – 定时快照备份和镜像备份的功能策略 | 老左笔记...

我们无论在使用哪家云服务器或者主机的时候&#xff0c;都需要做的就是数据备份。如果你技术能力一般的&#xff0c;那就用搬运办法FTP下载到本地&#xff0c;如果你技术能力可以的&#xff0c;那就可以用一键备份脚本到本地或者第三方服务器或者对象存储的方式。当然&#xff…

网站信息统计的简单实现过程

作者&#xff1a; pcskySQL语句如下&#xff1a; SELECT DD.SumHits, AA.CountArt, CC.WeekUpdate, BB.RegUserNumFROM(SELECT COUNT(newsid) AS CountArt FROM article) AA,(SELECT COUNT(id) AS RegUserNum FROM Admin) BB,(SELECT COUNT(newsid) AS WeekUpdate FROM(art…

web安全:通俗易懂,以实例讲述破解网站的原理及如何进行防护!如何让网站变得更安全。...

本篇以我自己的网站为例来通俗易懂的讲述网站的常见漏洞&#xff0c;如何防止网站被入侵&#xff0c;如何让网站更安全。 要想足够安全&#xff0c;首先得知道其中的道理。 本文例子通俗易懂&#xff0c;主要讲述了 各种漏洞 的原理及防护&#xff0c;相比网上其它的web安全入门…

[转]从LiveJournal后台发展看大规模网站性能优化方法

从LiveJournal后台发展看大规模网站性能优化方法 作者&#xff1a;于敦德 2006-3-16来源&#xff1a;http://www.example.net.cn/archives/2006/03/olivejournaloio.html 一、LiveJournal发展历程 LiveJournal是99年始于校园中的项目&#xff0c;几个人出于爱好做了这样一个…

推荐一个网站:programming.reddit.com

如果我们忙得一天只能浏览一家和编程有关的英文网站&#xff0c;还有比programming.reddit.com更好的么&#xff1f;Reddit.com是startup的狂热鼓吹者&#xff0c;Lisp的铁杆儿拥泵&#xff0c;老愤青Paul Graham旗下的天使风投Y! Combinator(看这名字就知道P老大和函数编程千丝…

[转]开发大型高负载类网站应用的几个要点

开发大型高负载类网站应用的几个要点 作者&#xff1a; nightsailer 来源&#xff1a; http://www.phpchina.com/bbs/thread-15484-1-1.html 看了一些人的所谓大型项目的方法,我感觉都是没有说到点子上&#xff0c;有点难受。 我也说说自己的看法.我个人认为,很难衡量所谓项目是…

图解使用VS.NET部署含水晶报表的网站

Crystal Report &#xff0c;中文名称“水晶报表”&#xff0c;因为做报表的功能强大&#xff0c;所以被 Visual Studio.Net 整合进来了。其中 Visual Studio.Net 2002 中的Crystal Decisions 版本为 1.0 &#xff1b;Visual Studio.Net 2002 中的Crystal Decisions 版本为 1.1…

大型网站背后的高性能系统架构设计

1. 性能测试 1.1. 性能指标 网站性能测试的主要指标有&#xff1a; 响应时间 - 响应时间(RT)是指从客户端发一个请求开始计时&#xff0c;到客户端接收到从服务器端返回的响应结果结束所经历的时间&#xff0c;响应时间由请求发送时间、网络传输时间和服务器处理时间三部分组成…

ASP.NET网站怎么发布 Web项目程序怎么发布部署(暂时收藏)

Web程序如何发布部署呢。网站项目做好了&#xff0c;需要发布出来&#xff0c;提交给客户&#xff0c;装上服务器。那怎么在ASP.NET开发环境中将网站程序发布出来呢 ^_^ 工具/原料 Visual Studio 2010 ( 其他 VS 开发环境类似 &#xff09; 完成的项目程序 方法/步骤 在要发布…

网站域名

今天看到有些同学对域名不太清楚怎么回事儿&#xff0c;做了一个图&#xff0c;概况的讲述了顶级域名、一级域名、二级域名含义。

进入网站后台,提示HTTP错误404.0-NOtFound

问题&#xff1a; 进入网站后台&#xff0c;提示HTTP错误404.0-NOtFound&#xff08;类似于下图&#xff09; 解决方法&#xff1a; 参考资料&#xff1a;http://xwtseo.com/zmjz/fwq/2546.html 按照参考资料修改程序池的方法&#xff0c;无法解决此问题时&#xff0c;可以尝…

Joomla制作的网站如何制作ico图标

常浏览网站的你&#xff0c;是否注意到打开一些网站时&#xff0c;IE地址栏会显示一些网站的小图标呢&#xff1f;传统的IE地址栏的图标都是“e”字标&#xff0c;而时下&#xff0c;个性ico图标却成为一些主流大牌网站提高用户体验&#xff08;UE&#xff09;的一个“时髦”玩…

如何检测网站后门

很多时候我们无法保障下载的网站源码是否有后门&#xff0c;因此需要检测一下&#xff0c;参考了很多方法&#xff0c;觉得用360网站安全检测是最快捷的方式了。 网址&#xff1a; http://safe.webscan.360.cn/

运行网站时提示:“错误代码 0x800700b7 配置错误定义了重复的“system.web.extensions/scripting/scriptResourceHandler””。

运行网站时提示&#xff1a;“错误代码 0x800700b7 配置错误定义了重复的“system.web.extensions/scripting/scriptResourceHandler””。 操作环境&#xff1a;Windows 8.1 IIS8.5 VS2013 (WIN7 IIS7同样适用) 解决方法: 把应用程序池的.Net CLR 版本从4.0修改为2.0即可。如下…

asp.net组件检查网站探针

检查服务器必须有个合适的工具&#xff0c;很多网站的探针是非常有用的&#xff0c;可以检查组件是否已被注册等等。 乘风ASP.net 探针 V1.2&#xff0c;开源免费&#xff0c;比较实用。

[转]使用Varnish代替Squid做网站缓存加速器的详细解决方案

使用Varnish代替Squid做网站缓存加速器的详细解决方案 [文章作者&#xff1a;张宴 本文版本&#xff1a;v1.2 最后修改&#xff1a;2008.01.02 转载请注明出处&#xff1a;http://blog.s135.com]  我曾经写过一篇文章──《初步试用Squid的替代产品──Varnish Cache网站加速…

[转]Yupoo! 的网站技术架构

Yupoo! 的网站技术架构 作者: Fenng | 可以转载, 转载时务必以超链接形式标明文章原始出处和作者信息及版权声明网址: http://www.dbanotes.net/arch/yupoo_arch.html 又有机会爆料国内 Web 2.0 网站的架构了。这次是 Yupoo! 。非正式的采访了一下 Yupoo!(又拍网) 的创建人之一…

给网站管理员的建议:创建可利用的、可抓取的网站

转载自 谷歌中文网站管理员博客 发表者 T.V. Raman&#xff0c;研究学者 原文&#xff1a; Webmaster tips for creating accessible, crawlable sites 发表于&#xff1a;2008年4月14日 上午10:47 Hubbell和我正在我们位于加州的家中度假。欢迎您随时 阅读在此之前我为网站…