V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
爱意满满的作品展示区。
im3x
V2EX  ›  分享创造

5 分钟,给你的 iPhone 添加丰富精美实用的组件(原创开源)

  im3x · 2020-10-12 08:01:24 +08:00 · 20136 次点击
这是一个创建于 1505 天前的主题,其中的信息可能已经有所发展或是发生改变。

预览视频:

https://v.qq.com/txp/iframe/player.html?chid=17&vid=c31599njg4i&autoplay=true&full=true&show1080p=true

✨ 程序介绍

最近,一款 iOS App 引起了我的兴趣:Scriptable
它可以通过编写 Javascript 脚本,来给 iPhone 桌面添加自定义界面和功能的组件
这对于熟练 JS 的开发者朋友们来说,简直是难得的神器!

但很可惜,目前还没有找到合适的功能和界面都合心意的插件分享 :(

于是,爱造轮子且致力造好的我,在经过仔细阅读文档、手机上敲了千上万行代码、一边开发一边连载教程文章的认真投入之后,终于完成了这个项目:
Scriptables

这是一个经过踩了很多的坑,界面改版无数的经验之后完成的项目。
它可以让你使用非常简单的办法,给自己的 iPhone 设置各种精美丰富实用的桌面组件!

👉 快速上手

  1. 安装 Scriptable App 后打开
  2. Safari 浏览器中点击下载 加载器 Loader.Gitee,然后用 Scriptable 应用打开,完成插件代码安装
  3. 长按 iPhone 桌面,添加组件,选择 Scriptable 应用,添加组件后点击进入配置界面,最下方 Parameter 参数中,输入你想要的插件代码,完成即可!

插件参数格式:插件名称 @功能版本号:传递的参数
比如,你想要显示 V2EX 站点的热门文章列表,则输入 v2ex@api:hot
要显示 V2EX 站点指定节点的列表,输入: v2ex@go:create
以此类推,灵活配置!

目前我写了几个桌面组件,并在不断更新增加中:

  1. one 韩寒 ONE·一个图文
  2. v2ex V2EX 最新、最热文章
  3. bing Bing 每日必应壁纸
  4. weibo 微博热搜榜
  5. 一言 随机更新一句话
  6. 毒鸡汤 随机更新一条毒鸡汤
  7. 彩云天气 显示当前位置的天气预报情况
  8. 知乎日报 显示知乎日报文章信息
  9. 网易云音乐 网易云音乐热评等

每一个组件代码,都可以单独下载使用,也可以直接通过加载器输入配置,完成加载显示

❤️ 项目地址

https://github.com/im3x/Scriptables
创作不易,感谢你的支持!

第 1 条附言  ·  2020-10-13 11:30:13 +08:00

最近更新的内容:

  1. 新增两个组件
  2. 增加了加载器和插件的断网执行方案
  3. 研究了新的桌面组件交互方式,并准备用在组件上

最近更新的教程:

  1. 本地存储 Keychain 用法
  2. 桌面组件交互黑科技

感谢老铁们送来的 🌟Star🌟,一天时间从 0 - 250,非常有成就感,本项目和教程将继续更新,一起开发的老铁们欢迎关注公众号,第一时间获取资讯:

第 2 条附言  ·  2020-10-13 17:07:17 +08:00

新增了组件支持点击后进行交互操作(比如复制文本、打开URL、下载图片、弹框选择输入操作等)

新增了加载器支持加载第三方开发者仓库组件。

作为开发者,你只需要:

  1. fork 这个项目到自己的仓库
  2. 修改你仓库中的代码
  3. 加载器参数中输入: git-username/widget@version:params 即可加载你仓库的代码组件 (你也可以同时分享给你的朋友们使用)
136 条回复    2022-01-26 00:15:15 +08:00
1  2  
psterman
    101
psterman  
   2020-10-13 13:58:48 +08:00 via iPhone
@psterman 显示插件不存在
im3x
    102
im3x  
OP
   2020-10-13 14:06:38 +08:00
@psterman #101
v2ex 组件插件目前支持的版本和参数参考:
1. api 版本,参数: v2ex@api 、v2ex@api:hot
2. 首页列表,参数: v2ex@tab 、v2ex@tab:tech
3. 节点版本,参数: v2ex@go 、v2ex@go:create

插件不存在说明参数配置不正确(可能你只输入了`v2ex` 参数,之前的目录是没有默认`latest`版本的,后边我把 api 版本设置成了 latest 默认版本,可以直接输入 `v2ex` 加载了
psterman
    103
psterman  
   2020-10-13 14:14:02 +08:00 via iPhone
@psterman 好了 是 v2ex@api
psterman
    104
psterman  
   2020-10-13 14:22:24 +08:00
@im3x #102 谢谢楼主,找到了 V2EX 创意节点!没细读文档!我的锅!
我也搜了一些脚本,供参考 https://github.com/psterman/Scriptables
如果能实现 rss 监控就太棒了,rsshub 是每天必用的
dengjscn
    105
dengjscn  
   2020-10-13 16:28:42 +08:00
可以支持叠放吗,就是一个组件内部可以左右或者上下滑动切换
dengjscn
    106
dengjscn  
   2020-10-13 16:33:05 +08:00
还发现一个问题,就是每次点击,都要进去 scriptable 再跳转,有点难受
dengjscn
    107
dengjscn  
   2020-10-13 16:39:13 +08:00
第一点我找到了,直接拖过去就可以叠放了,嘿嘿😝
im3x
    108
im3x  
OP
   2020-10-13 16:40:47 +08:00
@dengjscn #105
支持叠放
点击后进入 Scriptable 再跳转,这是不得已的操作。 因为脚本依赖这款应用运行,你点击桌面的其他组件 也是跳转到组件对应的应用的。
我们目前正在研发优化点击后在 Scriptable 内操作的新功能(这样就不需要跳转链接,给用户提供更优秀体验的交互)
dengjscn
    109
dengjscn  
   2020-10-13 17:01:24 +08:00
@im3x
x2ex
    110
x2ex  
   2020-10-16 10:31:34 +08:00
网络上 Scriptable 相关的太少了,感谢分享
TashinV
    111
TashinV  
   2020-10-17 18:15:15 +08:00 via iPhone
楼主赞一个……
话说 widgets 的背景色能否不用纯黑的啊?
im3x
    112
im3x  
OP
   2020-10-17 21:09:29 +08:00   ❤️ 1
@TashinV #111
默认背景色是根据系统的模式(夜间)来显示的
如果想自定义背景颜色(图片)
可以使用:

``` js
widget.backgroundColor = Color.red()

let req = new Request("https://xx.com/xx.jpg")
let img = await req.loadImage()

widget.backgroundImage = img
```
TashinV
    113
TashinV  
   2020-10-22 01:11:44 +08:00
@im3x

楼主,研究了半天没有找对方法。
能否伸手党一回,求一个您写好的自定义背景颜色或者图片的代码?
im3x
    114
im3x  
OP
   2020-10-23 00:26:38 +08:00   ❤️ 1
@TashinV
现写:
自定义背景颜色:

``` js
let widget = new ListWidget()
widget.backgroundColor = Color.red() // new Color('#000000', 1)
widget.addText("hello")
Script.setWidget(widget)
Script.complete()
```

自定义图片:
``` js
let widget = new ListWidget()
let _req = new Request("https://dss2.bdstatic.com/70cFvnSh_Q1YnxGkpoWK1HF6hhy/it/u=1930662946,3376692344&fm=26&gp=0.jpg")
let image = await _req.loadImage()
widget.backgroundImage = image
widget.addText("hello")
Script.setWidget(widget)
Script.complete()
```
TashinV
    115
TashinV  
   2020-10-23 15:10:04 +08:00 via iPhone
@im3x

显示这个:

2020-10-23 15:09:34: Error on line 1:3: TypeError: "" is not a function (near '...``...')
TashinV
    116
TashinV  
   2020-10-23 15:14:26 +08:00 via iPhone
@im3x

好像找到方式了。另外问一下楼主,这段自定义背景的代码可以插入到您的 loader.gitee 加载器代码里面使用嘛?
im3x
    117
im3x  
OP
   2020-10-23 15:26:14 +08:00
@TashinV 不能,这是独立运行的脚本,自己新建个插件用
wayilive
    118
wayilive  
   2020-10-28 18:44:17 +08:00
v2ex 点击后跳到 scriptable 会先出来菜单,要点多一个取消才能去掉,有什么办法?
im3x
    119
im3x  
OP
   2020-10-28 18:59:21 +08:00
@wayilive #118
没遇到你说的这个问题,一般的情况是点击了桌面组件对应帖子,会跳转到 Scriptable 然后进入到相应的网页

如果是「小件件」小程序里的独立插件版本,那么就是自带的操作菜单,不需要去掉(点帖子会跳转到帖子,点其他的会跳转到操作菜单)
wayilive
    120
wayilive  
   2020-10-28 23:15:31 +08:00
@im3x 我的配置是 loader.github,参数是 v2ex@api:hot,组件显示没问题,点击帖子,跳转到 Scriptable,然后弹出菜单(选项 /welcome/管理已下载组件 /取消),点击取消后,在 Scriptable 打开 safari,但是 weibo 就不会弹出菜单,safari 也不是在 Scriptable 内打开
im3x
    121
im3x  
OP
   2020-10-29 00:09:21 +08:00
@wayilive #120
好的,感谢反馈问题。
解决方式你可以先用 Gitee 版本(和 github 仓库同步)
TashinV
    122
TashinV  
   2020-10-29 14:36:35 +08:00 via iPhone
楼主,想反馈一个情况:

![]( )


您看加载器里面设置的微博热搜,他是个自适应页面的,但是感觉不是很美观。能否调整成跟其他 widgets 一样,自动向左对齐的样式?
TashinV
    123
TashinV  
   2020-10-29 14:37:28 +08:00 via iPhone
而热搜后面的数字则向右对齐,这样会否美观一点?
im3x
    124
im3x  
OP
   2020-10-29 15:39:00 +08:00
@TashinV #123
好的,因为之前没太了解文本对齐方式,后续这些细节是要改进优化的
TashinV
    125
TashinV  
   2020-10-29 16:15:08 +08:00 via iPhone
@im3x
感谢楼主 🙏🏻
TashinV
    126
TashinV  
   2020-11-08 22:32:12 +08:00 via iPhone
加载器好像失效了。
显示
object is not a constructor.
wwmmkk
    127
wwmmkk  
   2020-11-09 12:05:24 +08:00
同楼上,貌似失效了。。
im3x
    128
im3x  
OP
   2020-11-09 12:56:56 +08:00
@TashinV
@wwmmkk
#126 #127

由于 `Gitee` 源的问题(请求过多,链接被 403 了,导致远程加载代码失败)
已经发起了紧急修复更新,稍后小组件应该会自动更新
im3x
    129
im3x  
OP
   2020-11-09 13:07:17 +08:00
@TashinV
@wwmmkk
补充一下,自更新的链接也被 gitee 屏蔽了😂 所以,请手动复制新的加载起代码替换 loader.xx
https://github.com/im3x/Scriptables/blob/main/loader.gitee.js
wwmmkk
    130
wwmmkk  
   2020-11-09 14:44:54 +08:00
@im3x 可以了,感谢!!
TashinV
    131
TashinV  
   2020-11-10 00:52:20 +08:00 via iPhone
@im3x
可以了,谢谢楼主!
TashinV
    132
TashinV  
   2020-11-10 01:51:15 +08:00 via iPhone
希望能否不用纯黑色做 widgets 的底色?看着有点刺眼……很多 apps 的 widgets 用的是#1E1E1E 这个偏灰的底色,个人觉得挺舒服的。
im3x
    133
im3x  
OP
   2020-11-10 20:53:19 +08:00
@TashinV Scriptable 应用是默认跟随系统(夜间模式纯黑,白天模式纯白)如果没有设置自定义背景图片或者自定义背景颜色则会采用默认设置
TashinV
    134
TashinV  
   2020-11-11 02:15:36 +08:00 via iPhone
@im3x
能否在加载器里添加一个代码可以让用户自己选择设置背景图片或者颜色呢?
yangloft
    135
yangloft  
   2021-01-07 14:46:18 +08:00
首先感谢楼主,
另外有个问题请教,
小组件的位置权限是仅在用户主动查看时才能获取,并会在关闭(比如锁屏或切换至同一叠放的其他小组件)后 15 分钟内停止获取位置。
有没有什么方案缓存 15 分钟之前获取的位置信息?
Divingbear
    136
Divingbear  
   2022-01-26 00:15:15 +08:00 via iPhone
请教一下,我软件版本 14.6 ,安装了 Scriptable 后,长按桌面添加小组件的时候,无法找到这个小组件是什么原因啊?
1  2  
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1141 人在线   最高记录 6679   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 26ms · UTC 18:55 · PVG 02:55 · LAX 10:55 · JFK 13:55
Developed with CodeLauncher
♥ Do have faith in what you're doing.