dsh-folia 2.5.8 → 2.5.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -126,6 +126,10 @@ const FOLIA_API_CATEGORY = 'wallpaper';
126
126
  /** 明确**不是**壁纸的分类。没列进来的(含未来新增的)一律放行 —— 宁可多显示,不静默丢。 */
127
127
  const FOLIA_NON_WALLPAPER_CATEGORIES = ['boot-animation', 'skin-pack', 'skin', 'pet', 'pets', 'assistant-skin'];
128
128
  /** 分页上限:防止站点游标异常时无限翻页(每页 12~24,20 页足够几百条)。 */
129
+ /** 每次请求要多少条:接口支持 `?limit=`(实测 limit=5 生效),一次要 100 条能把
130
+ * 几百张图的清单压到个位数请求。 */
131
+ const FOLIA_API_LIMIT = 100;
132
+ /** 条目总数上限(防止站点数据异常时无限翻页)。100 × 20 = 2000 条。 */
129
133
  const FOLIA_API_MAX_PAGES = 20;
130
134
  const FOLIA_CATALOG_PATH = '/data/catalog.json';
131
135
  const FOLIA_MANIFEST_PATH = '/manifest.json';
@@ -208,7 +212,11 @@ function foliaItemFromCatalog(it, base) {
208
212
  const slug = String((it && (it.slug || it.id)) || '');
209
213
  // 站点图片的预览走宿主缩略图代理:卡片只下 ~10 KB,不再下 500 KB 原图。
210
214
  // (视频没有封面,保持 null —— 卡片会显示「无预览」,不会去拉整段视频。)
211
- const thumb = type === 'image' ? '/folia/site-thumb?u=' + encodeURIComponent(media) : null;
215
+ // 预览优先级:**站点自己给的 preview 最高**(省掉宿主这一跳,也最省流量);
216
+ // 站点没给才退回宿主缩略图代理。只有预览走小图,`media` 永远是原图 ——
217
+ // 应用壁纸用的是 `media`,所以画质不受影响。
218
+ const sitePreview = foliaAbs(base, it && (it.preview || it.poster)) || null;
219
+ const thumb = sitePreview ? null : (type === 'image' ? '/folia/site-thumb?u=' + encodeURIComponent(media) : null);
212
220
  const extHit = String(media).match(/\.([a-z0-9]{2,5})(?:[?#]|$)/i);
213
221
  const num = (v) => (Number.isFinite(Number(v)) && Number(v) > 0 ? Number(v) : undefined);
214
222
  return {
@@ -220,7 +228,7 @@ function foliaItemFromCatalog(it, base) {
220
228
  media, // 绝对 URL
221
229
  mediaExt: '.' + (extHit ? extHit[1].toLowerCase() : (type === 'video' ? 'mp4' : 'jpg')),
222
230
  // 站点目录可能带 preview/poster;图片没封面时用自己当预览,视频没有就留空(卡片会是黑块)
223
- preview: thumb || foliaAbs(base, it && (it.preview || it.poster)) || null,
231
+ preview: sitePreview || thumb || null,
224
232
  frameUrl: null,
225
233
  schemeColor: null,
226
234
  sceneLiveSrc: null,
@@ -326,7 +334,7 @@ async function foliaRemote(force = false) {
326
334
  const out = [];
327
335
  let cursor = null;
328
336
  for (let page = 0; page < FOLIA_API_MAX_PAGES; page++) {
329
- const scope = '?category=' + encodeURIComponent(FOLIA_API_CATEGORY);
337
+ const scope = '?category=' + encodeURIComponent(FOLIA_API_CATEGORY) + '&limit=' + FOLIA_API_LIMIT;
330
338
  const qs = cursor ? FOLIA_API_PATH + scope + '&cursor=' + encodeURIComponent(cursor) : FOLIA_API_PATH + scope;
331
339
  const { doc, error } = await fetchJson(qs);
332
340
  if (!doc || !doc.ok || !doc.data) return { items: out, error: error || 'api-shape' };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "dsh-folia",
3
- "version": "2.5.8",
3
+ "version": "2.5.9",
4
4
  "description": "Folia 壁纸引擎:把本机 Wallpaper Engine 壁纸搬进 DSH 界面(场景实时渲染 / 视频 / 网页),内置液态玻璃与 Folia 吉祥物,并可从自建站点拉取壁纸。单包形态(组件已合并)。",
5
5
  "type": "module",
6
6
  "engines": {