77 lines
1.9 KiB
Markdown
77 lines
1.9 KiB
Markdown
# ownCloud Photo Organizer
|
|
|
|
## Overview
|
|
|
|
ownCloud's Android app does not support automatic year/month subfolder creation
|
|
during instant upload (unlike Nextcloud). This script compensates by running
|
|
nightly and sorting all uploaded photos and videos into a `YEAR/YEAR-MM/`
|
|
folder structure.
|
|
|
|
## Script
|
|
|
|
**Location on server:** `/usr/local/bin/organize_photos.sh`
|
|
|
|
**Source folder watched:**
|
|
`/mnt/INTEL-SSD/ownCloud - Joe Gitta@cloud.jgitta.com/Personal/InstantUpload`
|
|
|
|
**Subfolders processed:** `Camera`, `BlueIris`, `Facebook`, `scans`, `EufyVideoDir`
|
|
|
|
**Supported file types:** jpg, jpeg, png, gif, heic, webp, bmp, tiff, mp4, mov, pdf
|
|
|
|
## How It Works
|
|
|
|
The script reads the date from each filename using these patterns (in order):
|
|
|
|
1. `YYYYMMDD` embedded in the filename (e.g. `20231022_082107.jpg`)
|
|
2. `YYYY-MM-DD` or `YYYY_MM_DD` format
|
|
3. 13-digit Unix timestamp in milliseconds (e.g. `FB_IMG_1572815868839.jpg`)
|
|
4. `MM_DD_YYYY` prefix (scans folder format, e.g. `06_11_2026_7_28_16_AM.pdf`)
|
|
|
|
Files that don't match any pattern are moved to `_unsorted/` for manual review.
|
|
|
|
## Output Structure
|
|
|
|
```
|
|
InstantUpload/
|
|
└── Camera/
|
|
├── 2023/
|
|
│ ├── 2023-06/
|
|
│ └── 2023-12/
|
|
├── 2024/
|
|
│ └── 2024-03/
|
|
└── _unsorted/
|
|
```
|
|
|
|
## Cron Job
|
|
|
|
Runs nightly at 2:00 AM as root:
|
|
|
|
```
|
|
0 2 * * * /usr/local/bin/organize_photos.sh
|
|
```
|
|
|
|
To view or edit: `sudo crontab -e`
|
|
|
|
## Log File
|
|
|
|
Each run appends to `/var/log/organize_photos.log`:
|
|
|
|
```
|
|
=== 2026-06-14 02:00:01 Starting ===
|
|
Moved: 12 Unsorted: 0 Skipped: 0 Errors: 0
|
|
=== Done ===
|
|
```
|
|
|
|
Check the log anytime with:
|
|
```bash
|
|
cat /var/log/organize_photos.log
|
|
```
|
|
|
|
## Installation
|
|
|
|
```bash
|
|
sudo cp organize_photos.sh /usr/local/bin/organize_photos.sh
|
|
sudo chmod +x /usr/local/bin/organize_photos.sh
|
|
(sudo crontab -l; echo "0 2 * * * /usr/local/bin/organize_photos.sh") | sudo crontab -
|
|
```
|