自己动手做个iOS14小组件显示哔哩哔哩UP主粉丝数
如果你是一个哔哩哔哩UP主,是否时时刻刻想知道自己有多少个粉丝呢?那就做一个吧。
需要用到“Scriptable”这个APP,免费无内购,请搜索安装。
https://apps.apple.com/cn/app/scriptable/id1405459188
使用bilibili的API,http://api.bilibili.com/x/relation/stat?vmid=280793434
这里使用手工耿的ID测试,返回json格式结果:
{"code":0,"message":"0","ttl":1,"data":{"mid":280793434,"following":32,"whisper":0,"black":0,"follower":4573391}}
这是站长写的javascript代码 bilibili.js
// Variables used by Scriptable. // These must be at the very top of the file. Do not edit. // icon-color: pink; icon-glyph: tv; const MID = args.widgetParameter || '280793434'//UP主MID,即个人空间网址后面那段数字 https://space.bilibili.com/280793434 let apiUrl = "http://api.bilibili.com/x/relation/stat?vmid="+MID let data = await loadData() let widget = await createWidget(data) if (config.runsInApp) { widget.presentSmall(); } Script.setWidget(widget) Script.complete() async function createWidget(data) { let widget = new ListWidget() widget.backgroundColor = Color.white() let header = widget.addStack() let icon = header.addImage(await loadImage('https://www.bilibili.com/favicon.ico')) icon.imageSize = new Size(15, 15) header.addSpacer(10) let title = header.addText("哔哩哔哩粉丝") title.textColor = Color.black() title.textOpacity = 0.9 title.font = Font.lightSystemFont(14) widget.addSpacer(20) let flTxt = widget.addText(toThousands(data.data['follower'])) flTxt.textColor = new Color("#fb7299") flTxt.font = Font.boldRoundedSystemFont(getFontSize(data.data['follower'])) flTxt.centerAlignText() widget.addSpacer(20) let utTxt = widget.addText('更新于:'+nowTime()) utTxt.textColor = Color.black() utTxt.font = Font.systemFont(12) utTxt.textOpacity = 0.5 utTxt.centerAlignText() widget.url = 'bilibili://' return widget } async function loadData() { let req = new Request(apiUrl) req.allowInsecureRequest = true let json = await req.loadJSON() console.log(json) return json } async function loadImage(imgUrl) { console.log(imgUrl) let req = new Request(imgUrl) req.allowInsecureRequest = true let image = await req.loadImage() return image } function toThousands(num) { return (num || 0).toString().replace(/(\d)(?=(?:\d{3})+$)/g, '$1,'); } function nowTime(){ let date = new Date() return date.toLocaleTimeString('chinese', { hour12: false }) } function getFontSize(num){ if(num<99){ return 38 }else if(num<9999 && num>100){ return 30 }else if(num<99999 && num>10000){ return 28 }else if(num<999999 && num>100000){ return 24 }else if(num<9999999 && num>1000000){ return 22 }else{ return 20 } }
修改上面代码的MID和UPNAME参数,改为你需要关注的UP主信息。然后把上面的代码文件通过iCould复制到Scriptable文件夹内,打开APP就能看到代码了。点击可运行查看效果。
另外你也可以点击Scriptable APP右上角的加号,新建一个代码,然后复制代码到编辑框保存即可。
把小组件添加到桌面
1.长按桌面空白的地方,点击左上角的加号。
2.在列表里找到Scriptable,然后点击添加第一个小尺寸的组件。
3.这时桌面就出现一个空白的Scriptable小组件,点击这个组件,在弹窗的界面里面点击“选取”,然后找到你刚刚上传的脚本,Parameter处填入你B站的MID即可。
小组件运行效果
另外要说明一点,iOS的小组件不是实时更新的,应该有个更新机制,但我没有深入了解。
Scriptable这个APP还挺好玩的,我另外还做个小组件显示网站的实时访问数据。有兴趣进一步了解的朋友请看文档。