ToB企服应用市场:ToB评测及商务社交产业平台
标题:
IOS Scriptable
[打印本页]
作者:
滴水恩情
时间:
2024-7-13 16:21
标题:
IOS Scriptable
Scriptable 是一款强大的 iOS 应用
用户可以用 JavaScript 编写脚本来实现各种功能和主动化任务。JavaScript 是一种广泛使用的编程语言。通过 JavaScript,用户可以访问 Scriptable 提供的丰富 API,与 iOS 系统和设备功能进行交互。
常用的共同工具有Data Jar、Jayson、快捷指令
Data Jar 的主要特点和用途:
数据存储:Data Jar 提供了一个会合式的存储库,用户可以在此中存储各种类型的数据,如文本、数字、数组和字典。这些数据可以在不同的脚本和主动化任务中共享和重复使用。
集成主动化:Data Jar 与 Scriptable 和 Shortcuts 等主动化应用无缝集成,答应用户在这些应用中轻松读取和写入数据。比方,用户可以在 Scriptable 中获取 Data Jar 中存储的数据,大概使用 Shortcuts 来更新 Data Jar 中的数据。
键值对存储:Data Jar 以键值对的形式存储数据,用户可以根据需要定义和管理多个键,每个键下可以存储不同类型和结构的数据。
数据恒久化:Data Jar 中存储的数据是恒久化的,这意味着即使应用被关闭或设备重启,数据也会被保存,不会丢失。
用户界面:Data Jar 提供了一个简单直观的用户界面,用户可以方便地查看和管理存储的数据。用户可以直接在应用内添加、编辑和删除数据。
安全和隐私:Data Jar 支持使用 iCloud 同步数据,确保数据在不同设备之间的一致性。应用还注意用户隐私,确保数据在当地和云端的安全。
Jayson 的主要特点和用途:
JSON 查看和编辑:Jayson 提供了一个直观的界面,让用户可以方便地查看和编辑 JSON 数据。用户可以通过层级视图欣赏嵌套的 JSON 结构。
文件导入和导出:用户可以从各种来源导入 JSON 文件,包罗 iCloud、Dropbox 和其他文件应用。编辑完成后,可以将修改后的 JSON 数据导出或分享。
URL Schemes:Jayson 支持 URL Schemes,使得用户可以从其他应用(如 Safari 或 Shortcuts)直接将 JSON 数据传递给 Jayson 进行查看和编辑。
快捷操作:Jayson 提供了快捷操作,可以快速对 JSON 数据进行常见操作,如排序、添加或删除节点。这些快捷操作提高了数据处理的效率。
格式化和验证:应用可以主动格式化 JSON 数据,使其更易于阅读和理解。此外,Jayson 还可以验证 JSON 数据的结构,确保其有效性和正确性。
复制和粘贴:用户可以方便地复制和粘贴 JSON 数据,支持跨应用操作,这对于快速编辑和处理数据非常有用。
可扩展性:通过与其他应用的集成,Jayson 可以用来查看 API 返回的 JSON 数据,调试 Web 应用,或分析从不同来源获取的 JSON 数据。
快捷指令的主要特点和用途:
任务主动化:快捷指令可以主动化一系列任务。比方,用户可以创建一个快捷指令来同时调治家庭的智能灯光、播放音乐和设定闹钟。
可视化编辑器:快捷指令应用提供了一个直观的拖放界面,用户可以通过简单的拖放操作来创建和编辑快捷指令,而不需要编写代码。
与应用集成:快捷指令可以与众多内置和第三方应用集成,使用户能够通过一个快捷指令操作多个应用。比方,用户可以创建一个快捷指令来在社交媒体上发布照片,同时在照片应用中添加标签。
触发条件:快捷指令可以通过多种方式触发,包罗Siri语音命令、主屏幕小组件、主动化(基于时间、位置、设备状态等)、快捷方式菜单和共享表单。
操作步骤:每个快捷指令由一系列操作步骤构成,这些步骤可以包罗发送消息、获取天气信息、播放音乐、执行网络哀求、处理文件等。
变量和条件:快捷指令支持使用变量和条件逻辑,使得任务序列能够根据不同的环境做出决议。比方,根据当前时间的不同,快捷指令可以执行不同的操作。
共享和社区:用户可以分享他们创建的快捷指令,并且可以从网上的快捷指令社区下载其他用户创建的快捷指令,从而拓展应用的功能。
脚本和扩展:高级用户可以通过与其他工具(如Scriptable和Data Jar)的集成,实现更复杂和高级的主动化功能。比方,使用JavaScript在Scriptable中创建复杂的逻辑,再通过快捷指令触发执行。
使用Scriptable实现爬取、解析、存储、读取、渲染
let url = "目标网址";
let req = new Request(url);
// 发送请求并获取响应
let html = await req.loadString(); // console.log(html);
// 使用 WebView 进行 DOM 解析
let webView = new WebView();
await webView.loadHTML(html)
// console.log(html);
let economyData = await webView.evaluateJavaScript(`
Array.from(document.querySelectorAll('tbody tr')).map(tr => {
// 获取包含在 tr 下的所有 td
let tds = Array.from(tr.querySelectorAll('td'));
// 过滤掉 class 为 "d-none" 的 td
let filteredTds = tds.filter(td => !td.classList.contains('d-none'));
// 返回包含文本内容的数组
return filteredTds.map(td => td.textContent.trim());
});
`);
// 将经济数据转换为 JSON 格式,字段改为英文
let jsonEconomyData = economyData.map(data => {
return data;
});
console.log(jsonEconomyData);
// 创建本地文件管理器
const fileManager = FileManager.iCloud()
if(jsonEconomyData.length>1){
// 指定本地文件路径
const filePath = fileManager.joinPath(fileManager.documentsDirectory(), "/GetJson/房价/Whfj.json")
// 写入数据到文件
const contentToWrite = JSON.stringify(jsonEconomyData, null, 2);
fileManager.writeString(filePath, contentToWrite)
}
Script.complete()
复制代码
== 注意解析时大概要根据内容调解解析代码==
如许就把解析后的数据保存到了手机文件中了
由于在渲染时控件默认根据焦点进行更新、
为了文明爬取则需要本身配置定时任务、
在自带的API可以做、也可以共同快捷指令使用
这里使用了快捷指令
现在已经实现了每天10:30收集一次新的数据
下面是读取文件再进行渲染、先做一个类专门用于调取文件数据
获取io数据类
exports.data = (url) => {
// 创建本地文件管理器
const fileManager = FileManager.iCloud();
let fileAll;
// 指定本地文件路径
const filePath2 = fileManager.joinPath(fileManager.documentsDirectory(),url);
// 读取文件内容
const contentFromFile = fileManager.readString(filePath2);
if (contentFromFile) {
fileAll = contentFromFile;
// console.log("文件内容:" + fileAll);
return JSON.parse(fileAll);
} else {
return "无法读取文件内容。";
}
};
复制代码
调用文件进行渲染
[code]// io.js 模块
let circle = importModule('获取io数据');
let area = circle.data("/GetJson/房价/Whfj.json");
// console.log(area);
// 准备数据
const productData = [];
for(let i=0;i<area.length;i++){
productData.push({ name: area
[1], recentData: area
[2], previousData: area
[3] })
}
// 创建小组件
let widget = new ListWidget();
let logo = widget.addText("
欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/)
Powered by Discuz! X3.4