Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
enoyee
Scriptable
提交
e8a96fb8
S
Scriptable
项目概览
enoyee
/
Scriptable
通知
9
Star
0
Fork
3
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
S
Scriptable
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
提交
e8a96fb8
编写于
2月 02, 2023
作者:
AndroidLeaves
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
update
上级
2d519b84
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
341 addition
and
326 deletion
+341
-326
写真随机.js
写真随机.js
+92
-77
桌面启动.js
桌面启动.js
+1
-1
模板.js
模板.js
+248
-248
未找到文件。
写真随机.js
浏览文件 @
e8a96fb8
...
...
@@ -3,14 +3,18 @@
// icon-color: red; icon-glyph: user-astronaut;
/**
* Author:LSP
* Date:202
2-12-1
2
* Date:202
3-02-0
2
*/
// -------------------------------------------------------
// 是否是开发环境,配合手机端调试使用,正式发布设置为false
const
isDev
=
false
;
console
.
log
(
`开发环境 👉👉👉👉👉
${
isDev
?
'
DEV
'
:
'
RELEASE
'
}
`
);
const
dependencyLSP
=
'
20230202
'
;
console
.
log
(
`当前环境 👉👉👉👉👉
${
isDev
?
'
DEV
'
:
'
RELEASE
'
}
`
);
console
.
log
(
`----------------------------------------`
);
const
remoteRoot
=
'
https://gitcode.net/enoyee/scriptable/-/raw/master/
'
;
// 分支
const
branch
=
'
dev
'
;
// 仓库根目录
const
remoteRoot
=
`https://gitcode.net/enoyee/scriptable/-/raw/
${
branch
}
`
;
// 依赖包目录
const
fm
=
FileManager
.
local
();
const
rootDir
=
fm
.
documentsDirectory
();
...
...
@@ -27,7 +31,6 @@ const { BaseWidget } = require(dependencyFileName);
class
Widget
extends
BaseWidget
{
defaultPreference
=
{
photoHalving
:
'
1
'
,
sourceIndex
:
'
0
'
,
sourceArr
:
[
{
name
:
'
dopaminegirl
'
},
...
...
@@ -36,16 +39,15 @@ class Widget extends BaseWidget {
};
getValueByKey
=
(
key
)
=>
this
.
readWidgetSetting
()[
key
]
??
this
.
defaultPreference
[
key
];
photoHalving
=
()
=>
this
.
getValueByKey
(
'
photoHalving
'
);
sourceIndex
=
()
=>
Number
(
this
.
getValueByKey
(
'
sourceIndex
'
));
sourceDesc
=
(
sourceIndex
)
=>
this
.
defaultPreference
.
sourceArr
[
sourceIndex
].
name
;
constructor
(
scriptName
)
{
super
(
scriptName
);
this
.
backgroundColor
=
'
#03071e,#03071e
'
;
}
async
getAppViewOptions
()
{
return
{
showWidgetBg
:
false
,
widgetProvider
:
{
small
:
true
,
// 是否提供小号组件
medium
:
true
,
// 是否提供中号组件
...
...
@@ -55,61 +57,39 @@ class Widget extends BaseWidget {
settingItems
:
[
{
name
:
'
photoHalving
'
,
label
:
'
图片等分
'
,
type
:
'
cell
'
,
icon
:
{
name
:
'
photo.artframe
'
,
color
:
'
#ffca3a
'
},
alert
:
{
title
:
'
图片等分设置
'
,
message
:
"
小组件显示多少张图片,最大值为4
"
,
options
:
[
{
key
:
'
photoHalving
'
,
hint
:
'
请输入数字进行等分
'
,
}
]
},
needLoading
:
false
,
default
:
this
.
photoHalving
(),
label
:
'
图片张数
'
,
type
:
'
select
'
,
icon
:
{
name
:
'
photo.artframe
'
,
color
:
'
#ef233c
'
},
options
:
[
{
label
:
'
占满组件
'
,
value
:
'
1
'
},
{
label
:
'
左右互搏
'
,
value
:
'
2
'
},
{
label
:
'
三分天下
'
,
value
:
'
3
'
},
{
label
:
'
四平八稳
'
,
value
:
'
4
'
},
],
default
:
"
1
"
},
{
name
:
'
source
'
,
label
:
'
图源选择
'
,
type
:
'
cell
'
,
icon
:
{
name
:
'
tray
'
,
color
:
'
#7743DB
'
,
},
needLoading
:
false
,
default
:
this
.
sourceDesc
(
this
.
sourceIndex
()),
type
:
'
select
'
,
icon
:
{
name
:
'
tray
'
,
color
:
'
#a663cc
'
,
},
options
:
[
{
label
:
'
dopaminegirl
'
,
value
:
'
1
'
},
{
label
:
'
dounimei
'
,
value
:
'
2
'
},
],
default
:
"
2
"
},
],
// cell类型的item点击回调
onItemClick
:
async
(
item
)
=>
{
let
widgetSetting
=
this
.
readWidgetSetting
();
let
insertDesc
;
switch
(
item
.
name
)
{
case
'
source
'
:
const
ufm
=
this
.
useFileManager
();
const
index
=
await
this
.
presentSheet
({
title
:
'
图源设置
'
,
message
:
'
⊱配置图片获取来源⊰
'
,
options
:
this
.
defaultPreference
.
sourceArr
,
});
widgetSetting
.
sourceIndex
=
`
${
index
}
`
insertDesc
=
this
.
sourceDesc
(
index
);
break
;
}
// 写入更新配置
this
.
writeWidgetSetting
(
widgetSetting
);
return
{
desc
:
{
value
:
insertDesc
},
};
},
};
}
async
render
({
widgetSetting
,
family
})
{
return
await
this
.
provideWidget
(
family
,
this
.
photoHalving
()
);
return
await
this
.
provideWidget
(
family
,
widgetSetting
);
}
async
provideWidget
(
widgetFamily
,
photoHalving
)
{
async
provideWidget
(
widgetFamily
,
widgetSetting
)
{
const
photoHalving
=
widgetSetting
.
photoHalving
??
1
;
const
sourceIndex
=
Number
(
widgetSetting
.
source
??
'
2
'
);
let
name
=
'
大号
'
;
switch
(
widgetFamily
)
{
case
'
small
'
:
...
...
@@ -125,37 +105,45 @@ class Widget extends BaseWidget {
widget
.
setPadding
(
0
,
0
,
0
,
0
);
//=================================
let
stack
=
widget
.
addStack
();
const
imgRes
=
await
this
.
loadMirrorPhotoRes
(
this
.
sourceIndex
());
widget
.
backgroundColor
=
new
Color
(
'
#03071e
'
);
const
imgRes
=
await
this
.
loadMirrorPhotoRes
(
sourceIndex
);
const
widgetSize
=
this
.
getWidgetSize
(
name
);
const
widgetWidth
=
widgetSize
.
width
+
8
*
Device
.
screenScale
();
const
widgetHeight
=
widgetSize
.
height
+
8
*
Device
.
screenScale
();
// 图片等分
const
picHalvingCache
=
Number
(
photoHalving
);
let
imgStack
;
const
divider
=
3
;
switch
(
picHalvingCache
)
{
case
2
:
stack
.
layoutHorizontally
();
imgStack
=
stack
.
addStack
();
imgStack
.
size
=
new
Size
(
widgetWidth
/
2
,
widget
Width
);
imgStack
.
size
=
new
Size
(
widgetWidth
/
2
,
widget
Height
);
await
this
.
addStackImg
(
imgRes
,
imgStack
);
//
stack
.
addSpacer
(
divider
);
imgStack
=
stack
.
addStack
();
imgStack
.
size
=
new
Size
(
widgetWidth
/
2
,
widget
Width
);
imgStack
.
size
=
new
Size
(
widgetWidth
/
2
,
widget
Height
);
await
this
.
addStackImg
(
imgRes
,
imgStack
);
break
;
case
3
:
stack
.
layout
Vertic
ally
();
stack
.
layout
Horizont
ally
();
imgStack
=
stack
.
addStack
();
imgStack
.
size
=
new
Size
(
widgetWidth
,
widgetWidth
/
2
);
imgStack
.
size
=
new
Size
(
widgetWidth
/
2
,
widgetHeight
);
await
this
.
addStackImg
(
imgRes
,
imgStack
);
//
stack
.
addSpacer
(
divider
);
//
imgStack
=
stack
.
addStack
();
imgStack
.
layout
Horizont
ally
();
imgStack
.
layout
Vertic
ally
();
let
stack_3_1
=
imgStack
.
addStack
();
stack_3_1
.
size
=
new
Size
(
widgetWidth
/
2
,
widget
Width
/
2
);
stack_3_1
.
size
=
new
Size
(
widgetWidth
/
2
,
widget
Height
/
2
);
await
this
.
addStackImg
(
imgRes
,
stack_3_1
);
//
imgStack
.
addSpacer
(
divider
);
let
stack_3_2
=
imgStack
.
addStack
();
stack_3_2
.
size
=
new
Size
(
widgetWidth
/
2
,
widget
Width
/
2
);
stack_3_2
.
size
=
new
Size
(
widgetWidth
/
2
,
widget
Height
/
2
);
await
this
.
addStackImg
(
imgRes
,
stack_3_2
);
break
;
...
...
@@ -164,26 +152,31 @@ class Widget extends BaseWidget {
imgStack
=
stack
.
addStack
();
imgStack
.
layoutHorizontally
();
let
stack_4_1
=
imgStack
.
addStack
();
stack_4_1
.
size
=
new
Size
(
widgetWidth
/
2
,
widget
Width
/
2
);
stack_4_1
.
size
=
new
Size
(
widgetWidth
/
2
,
widget
Height
/
2
);
await
this
.
addStackImg
(
imgRes
,
stack_4_1
);
//
imgStack
.
addSpacer
(
divider
);
let
stack_4_2
=
imgStack
.
addStack
();
stack_4_2
.
size
=
new
Size
(
widgetWidth
/
2
,
widget
Width
/
2
);
stack_4_2
.
size
=
new
Size
(
widgetWidth
/
2
,
widget
Height
/
2
);
await
this
.
addStackImg
(
imgRes
,
stack_4_2
);
//
stack
.
addSpacer
(
divider
);
imgStack
=
stack
.
addStack
();
imgStack
.
layoutHorizontally
();
let
stack_4_3
=
imgStack
.
addStack
();
stack_4_3
.
size
=
new
Size
(
widgetWidth
/
2
,
widget
Width
/
2
);
stack_4_3
.
size
=
new
Size
(
widgetWidth
/
2
,
widget
Height
/
2
);
await
this
.
addStackImg
(
imgRes
,
stack_4_3
);
//
imgStack
.
addSpacer
(
divider
);
let
stack_4_4
=
imgStack
.
addStack
();
stack_4_4
.
size
=
new
Size
(
widgetWidth
/
2
,
widget
Width
/
2
);
stack_4_4
.
size
=
new
Size
(
widgetWidth
/
2
,
widget
Height
/
2
);
await
this
.
addStackImg
(
imgRes
,
stack_4_4
);
break
;
default
:
stack
.
layout
Horizont
ally
();
stack
.
layout
Vertic
ally
();
imgStack
=
stack
.
addStack
();
imgStack
.
size
=
new
Size
(
widgetWidth
,
widget
Width
);
imgStack
.
size
=
new
Size
(
widgetWidth
,
widget
Height
);
await
this
.
addStackImg
(
imgRes
,
imgStack
);
break
;
}
...
...
@@ -205,28 +198,27 @@ class Widget extends BaseWidget {
// --------------------------NET START--------------------------
loadMirrorPhotoRes
=
async
(
source
=
0
)
=>
{
loadMirrorPhotoRes
=
async
(
source
=
2
)
=>
{
const
imgResArr
=
[];
switch
(
source
)
{
case
0
:
const
imgRes
=
await
this
.
httpGet
(
`https://dopaminegirl.com/api/posts/ranking?offset=
${
parseInt
(
Math
.
random
()
*
1000
)
+
100
}
`
);
case
1
:
const
imgRes
=
await
this
.
httpGet
(
'
https://dopaminegirl.com/api/art
'
);
imgRes
.
forEach
(
element
=>
{
imgResArr
.
push
({
url
:
element
.
url
});
});
break
;
case
1
:
// 抖你妹数据
case
2
:
const
url
=
`https://www.dounimei.co/page/
${
parseInt
(
Math
.
random
()
*
80
)
+
1
}
?orderby=hot`
;
const
headers
=
{
"
user-agent
"
:
"
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.67 Safari/537.36
"
};
const
webview
=
new
WebView
();
const
html
=
await
this
.
httpGet
(
url
,
{
jsonFormat
:
false
,
headers
});
await
webview
.
loadHTML
(
html
);
await
webview
.
loadHTML
(
html
);
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
const
getData
=
`
function getData() {
let imgArr = [];
let imgArr = [];
try {
let imgData = document.getElementsByTagName('img');
for (let index = 0; index < imgData.length; index++) {
...
...
@@ -264,15 +256,17 @@ await new Widget(Script.name()).run();
// =================================================================================
async
function
downloadLSPDependency
()
{
let
fm
=
FileManager
.
local
();
const
dependencyURL
=
`
${
remoteRoot
}
_LSP.js`
;
const
dependencyURL
=
`
${
remoteRoot
}
/_LSP.js`
;
const
update
=
needUpdateDependency
();
if
(
isDev
)
{
const
iCloudPath
=
FileManager
.
iCloud
().
documentsDirectory
();
const
localIcloudDependencyExit
=
fm
.
isFileStoredIniCloud
(
`
${
iCloudPath
}
/_LSP.js`
);
const
localDependencyExit
=
fm
.
fileExists
(
`
${
rootDir
}
/_LSP.js`
);
const
fileExist
=
localIcloudDependencyExit
||
localDependencyExit
;
console
.
log
(
`🚀 DEV开发依赖文件
${
fileExist
?
'
已存在 ✅
'
:
'
不存在 🚫
'
}
`
);
if
(
!
fileExist
)
{
console
.
log
(
`🤖 DEV 开始下载依赖~`
);
if
(
!
fileExist
||
update
)
{
console
.
log
(
`🤖 DEV 开始
${
update
?
'
更新
'
+
dependencyLSP
:
'
下载
'
}
依赖~`
);
keySave
(
'
VERSION
'
,
dependencyLSP
);
await
downloadFile2Scriptable
(
'
_LSP
'
,
dependencyURL
);
}
return
...
...
@@ -282,20 +276,20 @@ async function downloadLSPDependency() {
console
.
log
(
`----------------------------------------`
);
const
remoteDependencyExit
=
fm
.
fileExists
(
`
${
cacheDir
}
/_LSP.js`
);
console
.
log
(
`🚀 RELEASE依赖文件
${
remoteDependencyExit
?
'
已存在 ✅
'
:
'
不存在 🚫
'
}
`
);
console
.
log
(
`----------------------------------------`
);
// ------------------------------
if
(
!
remoteDependencyExit
)
{
// 下载依赖
if
(
!
remoteDependencyExit
||
update
)
{
// 下载依赖
// 创建根目录
if
(
!
fm
.
fileExists
(
cacheDir
))
{
fm
.
createDirectory
(
cacheDir
,
true
);
}
// 下载
console
.
log
(
'
🤖 RELEASE开始下载依赖~
'
);
console
.
log
(
`🤖 RELEASE开始
${
update
?
'
更新
'
:
'
下载
'
}
依赖~`
);
console
.
log
(
`----------------------------------------`
);
const
req
=
new
Request
(
dependencyURL
);
const
moduleJs
=
await
req
.
load
();
if
(
moduleJs
)
{
fm
.
write
(
fm
.
joinPath
(
cacheDir
,
'
/_LSP.js
'
),
moduleJs
);
keySave
(
'
VERSION
'
,
dependencyLSP
);
console
.
log
(
'
✅ LSP远程依赖环境下载成功!
'
);
console
.
log
(
`----------------------------------------`
);
}
else
{
...
...
@@ -345,5 +339,25 @@ async function downloadFile2Scriptable(moduleName, url) {
return
saveFile2Scriptable
(
`
${
moduleName
}
`
,
content
);
};
/**
* 是否需要更新依赖版本
*/
function
needUpdateDependency
()
{
return
dependencyLSP
!=
keyGet
(
'
VERSION
'
);
};
function
keySave
(
cacheKey
,
cache
)
{
if
(
cache
)
{
Keychain
.
set
(
Script
.
name
()
+
cacheKey
,
cache
);
}
}
function
keyGet
(
cacheKey
,
defaultValue
=
''
)
{
if
(
Keychain
.
contains
(
Script
.
name
()
+
cacheKey
))
{
return
Keychain
.
get
(
Script
.
name
()
+
cacheKey
);
}
else
{
return
defaultValue
;
}
}
// =================================================================================
// =================================================================================
\ No newline at end of file
桌面启动.js
浏览文件 @
e8a96fb8
...
...
@@ -140,7 +140,7 @@ class Widget extends BaseWidget {
{
label
:
'
第12套图标
'
,
value
:
'
12
'
},
{
label
:
'
第13套图标
'
,
value
:
'
13
'
},
],
default
:
"
0
"
default
:
"
1
"
},
{
name
:
'
quickStart
'
,
...
...
模板.js
浏览文件 @
e8a96fb8
...
...
@@ -22,16 +22,16 @@ await downloadLSPDependency();
if
(
typeof
require
===
'
undefined
'
)
require
=
importModule
// 引入相关方法
const
{
writeWidgetSetting
,
generateAlert
,
generateInputAlert
,
presentSheet
,
readWidgetSetting
,
drawTextWithCustomFont
,
httpGet
,
getDateStr
,
getImageByUrl
,
presentViewInApp
,
writeWidgetSetting
,
generateAlert
,
generateInputAlert
,
presentSheet
,
readWidgetSetting
,
drawTextWithCustomFont
,
httpGet
,
getDateStr
,
getImageByUrl
,
presentViewInApp
,
}
=
require
(
dependencyFileName
);
...
...
@@ -40,7 +40,7 @@ const {
// ↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓START↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
//=========================组件默认配置=========================
const
defaultPreference
=
{
caiyun
:
'
UR8ASaplvIwavDfR
'
,
caiyun
:
'
UR8ASaplvIwavDfR
'
,
};
const
getValueByKey
=
(
key
)
=>
readWidgetSetting
()[
key
]
??
defaultPreference
[
key
];
...
...
@@ -52,203 +52,203 @@ const caiyun = () => getValueByKey('caiyun');
// Widget创建
const
createWidget
=
async
(
widgetSetting
,
family
)
=>
{
//=================================
const
widget
=
new
ListWidget
();
widget
.
setPadding
(
0
,
0
,
0
,
0
);
//=================================
let
stack
=
widget
.
addStack
();
stack
.
layoutHorizontally
();
//---------------------------------
const
localQuickConfigs
=
widgetSetting
.
quickStart
;
const
quickConfigJSON
=
localQuickConfigs
?
localQuickConfigs
:
JSON
.
stringify
(
defaultPreference
.
quickConfigs
);
const
quickConfigArr
=
JSON
.
parse
(
quickConfigJSON
);
await
quickStack
(
stack
,
quickConfigArr
);
//---------------------------------
let
rightStack
=
stack
.
addStack
();
rightStack
.
layoutVertically
();
rightStack
.
addSpacer
();
await
loadWeatherStack
(
rightStack
);
rightStack
.
addSpacer
();
//=================================
stack
.
addSpacer
();
return
widget
;
//=================================
const
widget
=
new
ListWidget
();
widget
.
setPadding
(
0
,
0
,
0
,
0
);
//=================================
let
stack
=
widget
.
addStack
();
stack
.
layoutHorizontally
();
//---------------------------------
const
localQuickConfigs
=
widgetSetting
.
quickStart
;
const
quickConfigJSON
=
localQuickConfigs
?
localQuickConfigs
:
JSON
.
stringify
(
defaultPreference
.
quickConfigs
);
const
quickConfigArr
=
JSON
.
parse
(
quickConfigJSON
);
await
quickStack
(
stack
,
quickConfigArr
);
//---------------------------------
let
rightStack
=
stack
.
addStack
();
rightStack
.
layoutVertically
();
rightStack
.
addSpacer
();
await
loadWeatherStack
(
rightStack
);
rightStack
.
addSpacer
();
//=================================
stack
.
addSpacer
();
return
widget
;
}
//=========================配置界面=========================
await
presentViewInApp
({
widgetProvider
:
{
small
:
false
,
// 是否提供小号组件
medium
:
true
,
// 是否提供中号组件
large
:
false
,
// 是否提供大号组件
},
// 预览界面的组件设置item
settingItems
:
[
widgetProvider
:
{
small
:
false
,
// 是否提供小号组件
medium
:
true
,
// 是否提供中号组件
large
:
false
,
// 是否提供大号组件
},
// 预览界面的组件设置item
settingItems
:
[
{
name
:
'
otherSetting
'
,
label
:
'
其他设置
'
,
type
:
'
cell
'
,
icon
:
'
https://gitcode.net/4qiao/framework/raw/master/img/icon/setting.gif
'
,
needLoading
:
true
,
childItems
:
[
{
name
:
'
quickFontSize
'
,
label
:
'
启动文字大小
'
,
type
:
'
cell
'
,
icon
:
{
name
:
'
pencil.and.outline
'
,
color
:
'
#7743DB
'
,
},
needLoading
:
false
,
alert
:
{
title
:
'
启动文字大小
'
,
options
:
[
{
key
:
'
quickFontSize
'
,
hint
:
'
请输入字号
'
,
}
]
},
default
:
quickFontSize
(),
},
{
name
:
'
otherSetting
'
,
label
:
'
其他设置
'
,
type
:
'
cell
'
,
icon
:
'
https://gitcode.net/4qiao/framework/raw/master/img/icon/setting.gif
'
,
needLoading
:
true
,
childItems
:
[
{
name
:
'
quickFontSize
'
,
label
:
'
启动文字大小
'
,
type
:
'
cell
'
,
icon
:
{
name
:
'
pencil.and.outline
'
,
color
:
'
#7743DB
'
,
},
needLoading
:
false
,
alert
:
{
title
:
'
启动文字大小
'
,
options
:
[
{
key
:
'
quickFontSize
'
,
hint
:
'
请输入字号
'
,
}
]
},
default
:
quickFontSize
(),
},
{
name
:
'
quickFontColor
'
,
label
:
'
启动文字颜色
'
,
type
:
'
color
'
,
icon
:
{
name
:
'
pencil.and.outline
'
,
color
:
'
#7743DB
'
,
},
needLoading
:
false
,
default
:
quickFontColor
(),
},
{
name
:
'
temperatureFontSize
'
,
label
:
'
温度文字大小
'
,
type
:
'
cell
'
,
icon
:
{
name
:
'
thermometer.medium
'
,
color
:
'
#E0144C
'
,
},
needLoading
:
false
,
alert
:
{
title
:
'
温度文字大小
'
,
options
:
[
{
key
:
'
temperatureFontSize
'
,
hint
:
'
请输入字号
'
,
}
]
},
default
:
temperatureFontSize
(),
},
{
name
:
'
temperatureFontColor
'
,
label
:
'
温度文字颜色
'
,
type
:
'
color
'
,
icon
:
{
name
:
'
thermometer.medium
'
,
color
:
'
#E0144C
'
,
},
needLoading
:
false
,
default
:
temperatureFontColor
(),
},
{
name
:
'
dateFontSize
'
,
label
:
'
日期文字大小
'
,
type
:
'
cell
'
,
icon
:
'
https://s3.uuu.ovh/imgs/2022/12/05/ac2c5b8843ff2719.gif
'
,
needLoading
:
false
,
alert
:
{
title
:
'
日期文字大小
'
,
options
:
[
{
key
:
'
dateFontSize
'
,
hint
:
'
请输入字号
'
,
}
]
},
default
:
dateFontSize
(),
},
{
name
:
'
dateFontColor
'
,
label
:
'
日期文字颜色
'
,
type
:
'
color
'
,
icon
:
'
https://s3.uuu.ovh/imgs/2022/12/05/ac2c5b8843ff2719.gif
'
,
needLoading
:
false
,
default
:
dateFontColor
(),
},
{
name
:
'
weatherFontSize
'
,
label
:
'
天气文字大小
'
,
type
:
'
cell
'
,
icon
:
'
https://s3.uuu.ovh/imgs/2022/12/05/a95f9edce36891d9.gif
'
,
needLoading
:
false
,
alert
:
{
title
:
'
天气文字大小
'
,
options
:
[
{
key
:
'
weatherFontSize
'
,
hint
:
'
请输入字号
'
,
}
]
},
default
:
weatherFontSize
(),
},
{
name
:
'
weatherFontColor
'
,
label
:
'
天气文字颜色
'
,
type
:
'
color
'
,
icon
:
'
https://s3.uuu.ovh/imgs/2022/12/05/a95f9edce36891d9.gif
'
,
needLoading
:
false
,
default
:
weatherFontColor
(),
},
{
name
:
'
covFontSize
'
,
label
:
'
疫情文字大小
'
,
type
:
'
cell
'
,
icon
:
'
https://s3.uuu.ovh/imgs/2022/12/05/2cd3dee47cd0824f.png
'
,
needLoading
:
false
,
alert
:
{
title
:
'
疫情文字大小
'
,
options
:
[
{
key
:
'
covFontSize
'
,
hint
:
'
请输入字号
'
,
}
]
},
default
:
covFontSize
(),
},
{
name
:
'
covFontColor
'
,
label
:
'
疫情文字颜色
'
,
type
:
'
color
'
,
icon
:
'
https://s3.uuu.ovh/imgs/2022/12/05/2cd3dee47cd0824f.png
'
,
needLoading
:
false
,
default
:
covFontColor
(),
},
name
:
'
quickFontColor
'
,
label
:
'
启动文字颜色
'
,
type
:
'
color
'
,
icon
:
{
name
:
'
pencil.and.outline
'
,
color
:
'
#7743DB
'
,
},
needLoading
:
false
,
default
:
quickFontColor
(),
},
{
name
:
'
temperatureFontSize
'
,
label
:
'
温度文字大小
'
,
type
:
'
cell
'
,
icon
:
{
name
:
'
thermometer.medium
'
,
color
:
'
#E0144C
'
,
},
needLoading
:
false
,
alert
:
{
title
:
'
温度文字大小
'
,
options
:
[
{
key
:
'
temperatureFontSize
'
,
hint
:
'
请输入字号
'
,
}
]
},
default
:
temperatureFontSize
(),
},
{
name
:
'
temperatureFontColor
'
,
label
:
'
温度文字颜色
'
,
type
:
'
color
'
,
icon
:
{
name
:
'
thermometer.medium
'
,
color
:
'
#E0144C
'
,
},
needLoading
:
false
,
default
:
temperatureFontColor
(),
},
],
// cell类型的item点击回调
onItemClick
:
async
(
item
)
=>
{
let
widgetSetting
=
readWidgetSetting
();
let
insertDesc
;
switch
(
item
.
name
)
{
case
''
:
break
}
// 写入更新配置
writeWidgetSetting
(
widgetSetting
);
return
{
desc
:
{
value
:
insertDesc
},
};
{
name
:
'
dateFontSize
'
,
label
:
'
日期文字大小
'
,
type
:
'
cell
'
,
icon
:
'
https://s3.uuu.ovh/imgs/2022/12/05/ac2c5b8843ff2719.gif
'
,
needLoading
:
false
,
alert
:
{
title
:
'
日期文字大小
'
,
options
:
[
{
key
:
'
dateFontSize
'
,
hint
:
'
请输入字号
'
,
}
]
},
default
:
dateFontSize
(),
},
{
name
:
'
dateFontColor
'
,
label
:
'
日期文字颜色
'
,
type
:
'
color
'
,
icon
:
'
https://s3.uuu.ovh/imgs/2022/12/05/ac2c5b8843ff2719.gif
'
,
needLoading
:
false
,
default
:
dateFontColor
(),
},
{
name
:
'
weatherFontSize
'
,
label
:
'
天气文字大小
'
,
type
:
'
cell
'
,
icon
:
'
https://s3.uuu.ovh/imgs/2022/12/05/a95f9edce36891d9.gif
'
,
needLoading
:
false
,
alert
:
{
title
:
'
天气文字大小
'
,
options
:
[
{
key
:
'
weatherFontSize
'
,
hint
:
'
请输入字号
'
,
}
]
},
default
:
weatherFontSize
(),
},
{
name
:
'
weatherFontColor
'
,
label
:
'
天气文字颜色
'
,
type
:
'
color
'
,
icon
:
'
https://s3.uuu.ovh/imgs/2022/12/05/a95f9edce36891d9.gif
'
,
needLoading
:
false
,
default
:
weatherFontColor
(),
},
{
name
:
'
covFontSize
'
,
label
:
'
疫情文字大小
'
,
type
:
'
cell
'
,
icon
:
'
https://s3.uuu.ovh/imgs/2022/12/05/2cd3dee47cd0824f.png
'
,
needLoading
:
false
,
alert
:
{
title
:
'
疫情文字大小
'
,
options
:
[
{
key
:
'
covFontSize
'
,
hint
:
'
请输入字号
'
,
}
]
},
default
:
covFontSize
(),
},
{
name
:
'
covFontColor
'
,
label
:
'
疫情文字颜色
'
,
type
:
'
color
'
,
icon
:
'
https://s3.uuu.ovh/imgs/2022/12/05/2cd3dee47cd0824f.png
'
,
needLoading
:
false
,
default
:
covFontColor
(),
},
]
},
// UI渲染
render
:
async
({
widgetSetting
,
family
})
=>
{
Object
.
assign
(
defaultPreference
,
widgetSetting
);
try
{
return
await
createWidget
(
defaultPreference
,
family
);
}
catch
(
e
)
{
if
(
config
.
runsInApp
)
{
await
generateAlert
({
title
:
'
❌运行错误
'
,
message
:
`
${
e
}
`
,
options
:
[
'
确定
'
]
});
}
console
.
error
(
e
);
}
],
// cell类型的item点击回调
onItemClick
:
async
(
item
)
=>
{
let
widgetSetting
=
readWidgetSetting
();
let
insertDesc
;
switch
(
item
.
name
)
{
case
''
:
break
}
// 写入更新配置
writeWidgetSetting
(
widgetSetting
);
return
{
desc
:
{
value
:
insertDesc
},
};
},
// UI渲染
render
:
async
({
widgetSetting
,
family
})
=>
{
Object
.
assign
(
defaultPreference
,
widgetSetting
);
try
{
return
await
createWidget
(
defaultPreference
,
family
);
}
catch
(
e
)
{
if
(
config
.
runsInApp
)
{
await
generateAlert
({
title
:
'
❌运行错误
'
,
message
:
`
${
e
}
`
,
options
:
[
'
确定
'
]
});
}
console
.
error
(
e
);
}
}
});
// ↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑END↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑
...
...
@@ -258,46 +258,46 @@ await presentViewInApp({
// =================================================================================
// =================================================================================
async
function
downloadLSPDependency
()
{
let
fm
=
FileManager
.
local
();
const
dependencyURL
=
"
https://gitee.com/enjoyee/scriptable/raw/develop/_LSP.js
"
;
if
(
isDev
)
{
const
iCloudPath
=
FileManager
.
iCloud
().
documentsDirectory
();
const
localIcloudDependencyExit
=
fm
.
isFileStoredIniCloud
(
`
${
iCloudPath
}
/_LSP.js`
);
const
localDependencyExit
=
fm
.
fileExists
(
`
${
rootDir
}
/_LSP.js`
);
const
fileExist
=
localIcloudDependencyExit
||
localDependencyExit
;
console
.
log
(
`🚀 DEV开发依赖文件
${
fileExist
?
'
已存在 ✅
'
:
'
不存在 🚫
'
}
`
);
if
(
!
fileExist
)
{
console
.
log
(
`🤖 DEV 开始下载依赖~`
);
await
downloadFile2Scriptable
(
'
_LSP
'
,
dependencyURL
);
}
return
let
fm
=
FileManager
.
local
();
const
dependencyURL
=
"
https://gitee.com/enjoyee/scriptable/raw/develop/_LSP.js
"
;
if
(
isDev
)
{
const
iCloudPath
=
FileManager
.
iCloud
().
documentsDirectory
();
const
localIcloudDependencyExit
=
fm
.
isFileStoredIniCloud
(
`
${
iCloudPath
}
/_LSP.js`
);
const
localDependencyExit
=
fm
.
fileExists
(
`
${
rootDir
}
/_LSP.js`
);
const
fileExist
=
localIcloudDependencyExit
||
localDependencyExit
;
console
.
log
(
`🚀 DEV开发依赖文件
${
fileExist
?
'
已存在 ✅
'
:
'
不存在 🚫
'
}
`
);
if
(
!
fileExist
)
{
console
.
log
(
`🤖 DEV 开始下载依赖~`
);
await
downloadFile2Scriptable
(
'
_LSP
'
,
dependencyURL
);
}
return
}
//////////////////////////////////////////////////////////
console
.
log
(
`----------------------------------------`
);
const
remoteDependencyExit
=
fm
.
fileExists
(
`
${
cacheDir
}
/_LSP.js`
);
console
.
log
(
`🚀 RELEASE依赖文件
${
remoteDependencyExit
?
'
已存在 ✅
'
:
'
不存在 🚫
'
}
`
);
//////////////////////////////////////////////////////////
console
.
log
(
`----------------------------------------`
);
const
remoteDependencyExit
=
fm
.
fileExists
(
`
${
cacheDir
}
/_LSP.js`
);
console
.
log
(
`🚀 RELEASE依赖文件
${
remoteDependencyExit
?
'
已存在 ✅
'
:
'
不存在 🚫
'
}
`
);
console
.
log
(
`----------------------------------------`
);
// ------------------------------
if
(
!
remoteDependencyExit
)
{
// 下载依赖
// 创建根目录
if
(
!
fm
.
fileExists
(
cacheDir
))
{
fm
.
createDirectory
(
cacheDir
,
true
);
}
// 下载
console
.
log
(
'
🤖 RELEASE开始下载依赖~
'
);
console
.
log
(
`----------------------------------------`
);
// ------------------------------
if
(
!
remoteDependencyExit
)
{
// 下载依赖
// 创建根目录
if
(
!
fm
.
fileExists
(
cacheDir
))
{
fm
.
createDirectory
(
cacheDir
,
true
);
}
// 下载
console
.
log
(
'
🤖 RELEASE开始下载依赖~
'
);
console
.
log
(
`----------------------------------------`
);
const
req
=
new
Request
(
dependencyURL
);
const
moduleJs
=
await
req
.
load
();
if
(
moduleJs
)
{
fm
.
write
(
fm
.
joinPath
(
cacheDir
,
'
/_LSP.js
'
),
moduleJs
);
console
.
log
(
'
✅ LSP远程依赖环境下载成功!
'
);
console
.
log
(
`----------------------------------------`
);
}
else
{
console
.
error
(
'
🚫 获取依赖环境脚本失败,请重试!
'
);
console
.
log
(
`----------------------------------------`
);
}
const
req
=
new
Request
(
dependencyURL
);
const
moduleJs
=
await
req
.
load
();
if
(
moduleJs
)
{
fm
.
write
(
fm
.
joinPath
(
cacheDir
,
'
/_LSP.js
'
),
moduleJs
);
console
.
log
(
'
✅ LSP远程依赖环境下载成功!
'
);
console
.
log
(
`----------------------------------------`
);
}
else
{
console
.
error
(
'
🚫 获取依赖环境脚本失败,请重试!
'
);
console
.
log
(
`----------------------------------------`
);
}
}
}
/**
...
...
@@ -306,8 +306,8 @@ async function downloadLSPDependency() {
* @returns
*/
function
getSaveFileName
(
fileName
)
{
const
hasSuffix
=
fileName
.
lastIndexOf
(
"
.
"
)
+
1
;
return
!
hasSuffix
?
`
${
fileName
}
.js`
:
fileName
;
const
hasSuffix
=
fileName
.
lastIndexOf
(
"
.
"
)
+
1
;
return
!
hasSuffix
?
`
${
fileName
}
.js`
:
fileName
;
};
/**
...
...
@@ -317,15 +317,15 @@ function getSaveFileName(fileName) {
* @returns
*/
function
saveFile2Scriptable
(
fileName
,
content
)
{
try
{
const
fm
=
FileManager
.
iCloud
();
let
fileSimpleName
=
getSaveFileName
(
fileName
);
const
filePath
=
fm
.
joinPath
(
fm
.
documentsDirectory
(),
fileSimpleName
);
fm
.
writeString
(
filePath
,
content
);
return
true
;
}
catch
(
error
)
{
return
false
;
}
try
{
const
fm
=
FileManager
.
iCloud
();
let
fileSimpleName
=
getSaveFileName
(
fileName
);
const
filePath
=
fm
.
joinPath
(
fm
.
documentsDirectory
(),
fileSimpleName
);
fm
.
writeString
(
filePath
,
content
);
return
true
;
}
catch
(
error
)
{
return
false
;
}
};
/**
...
...
@@ -335,9 +335,9 @@ function saveFile2Scriptable(fileName, content) {
* @returns
*/
async
function
downloadFile2Scriptable
(
moduleName
,
url
)
{
const
req
=
new
Request
(
url
);
const
content
=
await
req
.
loadString
();
return
saveFile2Scriptable
(
`
${
moduleName
}
`
,
content
);
const
req
=
new
Request
(
url
);
const
content
=
await
req
.
loadString
();
return
saveFile2Scriptable
(
`
${
moduleName
}
`
,
content
);
};
// =================================================================================
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录