From 3d9499ed8c7c58819c19fa581069e4cca464049b Mon Sep 17 00:00:00 2001 From: Dermot Duffy Date: Fri, 6 Jun 2025 14:23:18 -0700 Subject: [PATCH] docs: Add another worked example of a folder configuration (#2089) --- docs/configuration/folders.md | 88 +++++++++++++++++- docs/examples.md | 4 + .../a1.png} | Bin .../a2.png} | Bin .../a3.png} | Bin .../a4.png} | Bin docs/images/folders/b1.png | Bin 0 -> 5720 bytes docs/images/folders/b2.png | Bin 0 -> 8937 bytes .../{folders.png => folders/ha-root.png} | Bin docs/screenshots.md | 2 +- 10 files changed, 88 insertions(+), 6 deletions(-) rename docs/images/{folder-hierarchy-1.png => folders/a1.png} (100%) rename docs/images/{folder-hierarchy-2.png => folders/a2.png} (100%) rename docs/images/{folder-hierarchy-3.png => folders/a3.png} (100%) rename docs/images/{folder-hierarchy-4.png => folders/a4.png} (100%) create mode 100644 docs/images/folders/b1.png create mode 100644 docs/images/folders/b2.png rename docs/images/{folders.png => folders/ha-root.png} (100%) diff --git a/docs/configuration/folders.md b/docs/configuration/folders.md index 826ba7e8..499b99bb 100644 --- a/docs/configuration/folders.md +++ b/docs/configuration/folders.md @@ -205,7 +205,9 @@ source "folders" do not have an intrinsic parent as with filesystem folders, rather a trail is built as the user navigates "downwards" -- but anything could theoretically be the parent of anything. -## Worked Example +## Worked Examples + +### Worked Example 1 Imagine a media folder hierarchy that starts with a choice of resolution (Low or High). Lets start by specifying a basic folder referring to the URL of the Home @@ -222,7 +224,7 @@ folders: The result: -![](../images/folder-hierarchy-1.png 'Folder Hierarchy 1 :size=400') +![](../images/folders/a1.png 'Folder Hierarchy 1 :size=400') Now lets include selecting the High resolution folder: @@ -241,7 +243,7 @@ folders: The result: -![](../images/folder-hierarchy-2.png 'Folder Hierarchy 2 :size=400') +![](../images/folders/a2.png 'Folder Hierarchy 2 :size=400') The next step is to navigate down to the date folder, parsing the date as we go (auto-detecting the format): @@ -263,7 +265,7 @@ folders: The result: -![](../images/folder-hierarchy-3.png 'Folder Hierarchy 3 :size=400') +![](../images/folders/a3.png 'Folder Hierarchy 3 :size=400') The final step is to navigate down to the media item themselves, automatically parsing the time out of them: @@ -286,7 +288,83 @@ folders: The final result: -![](../images/folder-hierarchy-4.png 'Folder Hierarchy 2 :size=400') +![](../images/folders/a4.png 'Folder Hierarchy 2 :size=400') + +### Worked Example 2 + +Imagine a media folder hierarchy that contains directories named after rooms +(e.g. `Office`) and where the filenames in those directories contain both the +date and the time in a complex format (e.g. `Foscam +C1-20250507-171758-1746631078004-3.mp4`, where the date is the first numeric 8 +digits after a `-` and the time is following 6 numeric digits after an +additional `-`). + +The first step is to match all sub-directories. No parsing needs to be done at +this level, since all the details that need to be parsed are contained within +the filename in the next level. + +```yaml +folders: + - type: ha + id: my-folder + ha: + url: >- + https://ha.ondu.org/media-browser/browser/app%2Cmedia-source%3A%2F%2Fmedia_source + path: + # Match everything, parse nothing. + - {} +``` + +The result: + +![](../images/folders/b1.png 'Folder Hierarchy 1 :size=400') + +The last step is to match all filenames, parsing the date and time out of them. + +```yaml +folders: + - type: ha + id: my-folder + ha: + url: >- + https://ha.ondu.org/media-browser/browser/app%2Cmedia-source%3A%2F%2Fmedia_source + path: + - {} + # At the final level, match everything, parse the date and time. + - parsers: + # Use a regexp to extract date and time and parse them using a particular format. + - type: date + regexp: \d{8}-\d{6} + format: yyyyMMdd-HHmmss +``` + +Alternative, the date and time could be parsed separately, which will produce the same result: + +```yaml +folders: + - type: ha + id: my-folder + ha: + url: >- + https://ha.ondu.org/media-browser/browser/app%2Cmedia-source%3A%2F%2Fmedia_source + path: + - {} + # At the final level, match everything, parse the date and time. + - parsers: + # Parse the date from the first 8 numeric characters. The format need + # not be specified as the 8 digits will be correctly parsed automatically. + - type: date + regexp: \d{8} + - type: date + # Parse the time from the first hypen-surrounded 6 numeric characters. + # The format *does* need to be specified as 6 numeric digits is ambiguous. + regexp: -(?\d{6})- + format: HHmmss +``` + +The final result: + +![](../images/folders/b2.png 'Folder Hierarchy 2 :size=400') ### Other Examples diff --git a/docs/examples.md b/docs/examples.md index 6f193c65..432356b0 100644 --- a/docs/examples.md +++ b/docs/examples.md @@ -341,6 +341,10 @@ cameras: These examples create folders that can be viewed in the [`media_gallery`](./configuration/media-gallery.md). +?> Having difficulty configuring your folders? Consult the [Worked +Examples](./configuration/folders.md?id=worked-examples) in the [`folders` +documentation](./configuration/folders.md?id=worked-examples). + ### Home Assistant default root This example creates a folder at the Home Assistant media root. diff --git a/docs/images/folder-hierarchy-1.png b/docs/images/folders/a1.png similarity index 100% rename from docs/images/folder-hierarchy-1.png rename to docs/images/folders/a1.png diff --git a/docs/images/folder-hierarchy-2.png b/docs/images/folders/a2.png similarity index 100% rename from docs/images/folder-hierarchy-2.png rename to docs/images/folders/a2.png diff --git a/docs/images/folder-hierarchy-3.png b/docs/images/folders/a3.png similarity index 100% rename from docs/images/folder-hierarchy-3.png rename to docs/images/folders/a3.png diff --git a/docs/images/folder-hierarchy-4.png b/docs/images/folders/a4.png similarity index 100% rename from docs/images/folder-hierarchy-4.png rename to docs/images/folders/a4.png diff --git a/docs/images/folders/b1.png b/docs/images/folders/b1.png new file mode 100644 index 0000000000000000000000000000000000000000..f5f0e12b04e340bd5118ac71198b8f2ce47554eb GIT binary patch literal 5720 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 bz@4x2=r_R=yO*JBQozX2*q~U?;je!Jnx@#I literal 0 HcmV?d00001 diff --git a/docs/images/folders/b2.png b/docs/images/folders/b2.png new file mode 100644 index 0000000000000000000000000000000000000000..9bf9275d2b297213fde30e8b3a1a7a4224868a72 GIT binary patch literal 8937 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 literal 0 HcmV?d00001 diff --git a/docs/images/folders.png b/docs/images/folders/ha-root.png similarity index 100% rename from docs/images/folders.png rename to docs/images/folders/ha-root.png diff --git a/docs/screenshots.md b/docs/screenshots.md index 28041fee..a4aeeb71 100644 --- a/docs/screenshots.md +++ b/docs/screenshots.md @@ -46,7 +46,7 @@ Bidirectional control of camera selection via an entity. ## Folders -![](images/folders.png 'Media Folders :size=400') +![](images/folders/ha-root.png 'Media Folders :size=400') ## Grid