我们在手机上经常碰到一些度盘链接,其中有的有提取码。当复制链接和提取码时,要来回切换APP,提取码要记下来一个个输,操作太烦了。。。
所以我搞了一个工具,只要选中文本,点两下就可以打开链接,并且自动输入提取码。
相关截图如下
scriptable app 界面
点击run-script
点击共享
点击脚本名
代码粘贴
代码在下方,安装和使用请看代码内有说明。注意:只有苹果手机能用这个代码。
// Variables used by Scriptable.
// These must be at the very top of the file. Do not edit.
// icon-color: brown; icon-glyph: code; share-sheet-inputs: plain-text;
// 如何安装
// 1. 安装scriptable app,https://apps.apple.com/cn/app/scriptable/id1405459188?uo=4
// 2. 打开scriptable app,点击右上角加号新建文件,将代码全部粘贴进去
// 3. 点击代码框左下角的设置,接着点击"share sheet inputs",选择"Text"
// 4. 保存代码后进入scriptable的设置界面,点击"quick action",再点击脚本名字前的加号。
// 如何使用:
// 1. 在任意app选中含有度盘链接和提取码的文本
// 2. 进入分享菜单,选中"run script",再选中本脚本
// 3. 稍等数秒,本脚本会生成一个自动输入密码的度盘链接,弹出提示窗口
// 4. 在弹窗内,用户点击"打开链接"或"复制链接"按钮
let text = args.plainTexts[0]
if (text != null) {
await parseAndPrompt(text)
} else {
let alert = new Alert()
alert.title = "没有找到文字"
alert.message = "请重新选择文本"
alert.addCancelAction("OK")
await alert.present()
}
function genLinks(text) {
let urls=[];
const matches = text.matchAll(/(http(s?):\/\/pan.baidu.com\/s\/[A-Za-z0-9_-]*)/g);
for (const match of matches) {
urls.push({url:match[1], start: match.index, next:text.length, code:''});
if(urls.length>1) {
urls[urls.length-2].next = urls[urls.length-1].start;
}
}
let links=[];
for(let i=0;i<urls.length;i++){
let match = text.substring(urls[i].start, urls[i].next).match(/提取码\W*(\w{4})/m);
urls[i].code = match ? match[1] : "";
links.push(urls[i].url)
if(urls[i].code) links[links.length-1] +="?pwd="+urls[i].code;
}
return links;
}
async function parseAndPrompt(text) {
let links= genLinks(text)
if (links.length>0) {
await prompt(links)
} else {
let alert = new Alert()
alert.title = "没找到度盘链接"
alert.message = ""
await alert.present()
}
}
async function prompt(links) {
let alert = new Alert()
alert.title="links"
alert.message=links.join("\n");
alert.addAction("打开链接")
alert.addAction("复制链接")
alert.addCancelAction("Cancel")
let idx = await alert.presentSheet()
if (idx == 0) {
links.forEach(function(link){
Safari.open(link);
});
} else if (idx == 1) {
Pasteboard.copyString(links.join("\n"));
}
}
|