Render curated date-folder photos with title date and place captions
This commit is contained in:
@@ -83,3 +83,32 @@ protected asynchronous device display. Schemas are in `/openapi.json` and `/docs
|
||||
Native Aliyun Drive/Baidu Drive/Google Drive adapters are not implemented.
|
||||
A compatible WebDAV gateway or an independently managed NAS sync folder can be used.
|
||||
Frame Flow does not install a gateway or receive vendor API credentials automatically.
|
||||
|
||||
## Date-folder captions / 整理照片文字
|
||||
|
||||
Enable **Only photos in date-prefixed folders** and **Show folder caption below
|
||||
the photo** when editing a source. Curated sources created by the UI increase the
|
||||
catalog limit to 100,000 photos; other sources default to 10,000. The API exposes
|
||||
`catalog_limit` explicitly. It remains a bounded catalog; reaching the limit is
|
||||
shown in the UI.
|
||||
|
||||
Example folder name: `20261005 家庭出游@示例地点`.
|
||||
The image contains the photo and three separate caption lines:
|
||||
|
||||
```text
|
||||
家庭出游
|
||||
2026-10-05
|
||||
示例地点
|
||||
```
|
||||
|
||||
Without `@`, the location line is omitted. Folder names support `YYYYMMDD`,
|
||||
`YYYY-MM-DD`, `YYYY.MM.DD`, and `YYYY年MM月DD日`, with calendar-valid dates.
|
||||
Subfolders inherit their nearest dated ancestor; image filenames and EXIF do not
|
||||
replace this curated date. Synology `#recycle`, hidden folders, and `@eaDir` are
|
||||
excluded. Extremely long captions shrink and then truncate visually; full values
|
||||
remain available in catalog metadata.
|
||||
|
||||
Output is 1200×1600: a 1200×1280 photo area plus a white caption area. Original
|
||||
files remain unchanged. Contain/cover/smart and color/grayscale profiles still apply.
|
||||
A prepared source definition is in `deploy/organized-photos-source.json`; use it
|
||||
with `PUT /api/v1/photo-sources/organized-photos` after mounting the library.
|
||||
|
||||
@@ -10312,6 +10312,20 @@
|
||||
"name": {
|
||||
"type": "string",
|
||||
"title": "Name"
|
||||
},
|
||||
"caption": {
|
||||
"anyOf": [
|
||||
{
|
||||
"additionalProperties": {
|
||||
"type": "string"
|
||||
},
|
||||
"type": "object"
|
||||
},
|
||||
{
|
||||
"type": "null"
|
||||
}
|
||||
],
|
||||
"title": "Caption"
|
||||
}
|
||||
},
|
||||
"additionalProperties": false,
|
||||
@@ -10395,6 +10409,23 @@
|
||||
"title": "Enabled",
|
||||
"default": true
|
||||
},
|
||||
"catalog_limit": {
|
||||
"type": "integer",
|
||||
"maximum": 100000.0,
|
||||
"minimum": 1.0,
|
||||
"title": "Catalog Limit",
|
||||
"default": 10000
|
||||
},
|
||||
"organized_only": {
|
||||
"type": "boolean",
|
||||
"title": "Organized Only",
|
||||
"default": false
|
||||
},
|
||||
"folder_caption": {
|
||||
"type": "boolean",
|
||||
"title": "Folder Caption",
|
||||
"default": false
|
||||
},
|
||||
"credential_env": {
|
||||
"anyOf": [
|
||||
{
|
||||
@@ -10449,6 +10480,23 @@
|
||||
"title": "Enabled",
|
||||
"default": true
|
||||
},
|
||||
"catalog_limit": {
|
||||
"type": "integer",
|
||||
"maximum": 100000.0,
|
||||
"minimum": 1.0,
|
||||
"title": "Catalog Limit",
|
||||
"default": 10000
|
||||
},
|
||||
"organized_only": {
|
||||
"type": "boolean",
|
||||
"title": "Organized Only",
|
||||
"default": false
|
||||
},
|
||||
"folder_caption": {
|
||||
"type": "boolean",
|
||||
"title": "Folder Caption",
|
||||
"default": false
|
||||
},
|
||||
"credential_env": {
|
||||
"anyOf": [
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user