Metadata-Version: 2.4
Name: fslint
Version: 0.0.0
Summary: File system lint
Project-URL: Homepage, https://pypi.python.org/pypi/fslint
Author: fslint contributors
License-Expression: BSD-3-Clause
Classifier: Development Status :: 4 - Beta
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.12
Requires-Python: >=3.12
Description-Content-Type: text/markdown

# Sample CLI
Testing out the Python "makeapp" package to create a skeleton application, and then fill it with Thaura Work (a GLM based LLM). Code comments indicate what needs to be finished. The "ma" command is the CLI entry point for a lot of development tasks, similar to running npm or make. The entire project is within a venv.

## fslint - file system lint
A tool to check that files in a folder conform to some file naming standard.

## Usage

     fslint .
     fslint --isfolder --dateprefix .

## Options

 --dateprefix: Starts with a date like 2026, 2026-04, 2026-04-01
 --isfolder: Applies this filter only to folders.
 --isfile: Applies this filter only to files (skips folders).
 --isext: Only checks files with the given extension (e.g., jpg, mp4, md).
 --pattern: Requires filenames to match a glob pattern (e.g., "IMG_*", "[0-9]*")

## Description

The script will look at the filenames and print the name of every file that does not match the patterns described by the options.

## Fixer Scripts

Fixer scripts live in `src/fslint/` and rename files from device-specific formats into a consistent `YYYY-MM-DD originalname.ext` convention. Each script runs in dry-run mode by default; pass `--execute` to apply changes.

| Script | Matches | Example |
|---|---|---|
| `fix_iphone.py` | iPhone photos/videos (`IMG_YYYYMMDDHHMMSS`) | `IMG_20260628143022.HEIC` → `2026-06-28 IMG_20260628143022.HEIC` |
| `fix_android_video.py` | Android camera videos (`VID_YYYYMMDD_HHMMSSmmm` or `YYYY-MM-DD-HHMMSSmmm`) | `VID_20241204_133122319.mp4` → `2024-12-04 VID_20241204_133122319.mp4` |
| `fix_android_photo.py` | Android photos (`IMG_YYYYMMDD_HHMMSSmmm_AE`) | `IMG_20260626_180649578_AE.jpg` → `2026-06-26 IMG_20260626_180649578_AE.jpg` |
| `fix_android_live.py` | Android live/motion photos (`lv_0_YYYYMMDDHHMMSS`) | `lv_0_20260628103849.mp4` → `2026-06-28 lv_0_20260628103849.mp4` |
| `fix_android_screenshot.py` | Android screenshots (`Screenshot_YYYYMMDD-HHMMSS.AppName` or without app suffix) | `Screenshot_20260625-192203.Instagram.png` → `2026-06-25 Screenshot_20260625-192203.Instagram.png` |
| `fix_linux_screenshot.py` | Linux desktop screenshots (`Screenshot from YYYY-MM-DD HH-MM-SS`) | `Screenshot from 2025-11-22 23-59-49.png` → `2025-11-22 Screenshot from 2025-11-22 23-59-49.png` |
| `fix_mobizen.py` | Mobizen screen recordings (`mobizen_YYYYMMDD_HHMMSS`) | `mobizen_20241204_202058.mp4` → `2024-12-04 mobizen_20241204_202058.mp4` |
| `fix_snapchat.py` | Snapchat videos (`Snapchat-NUMBER`) — no date info available | Reports found files; cannot auto-rename without metadata |
| `fix_eu_ddmmyy.py` | DDMMYY six-digit prefix (European style, folders or files) | `100926 Bad` → `2026-09-10 Bad` |
| `fix_taiji_yymmdd.py` | YYMMDD six-digit prefix (folders or files) | `260910 Bad` → `2026-09-10 Bad` |
| `fix_usa_mmddyy.py` | MMDDYY six-digit prefix (US style, folders or files) | `091026 Bad` → `2026-09-10 Bad` |
| `fix_kodak_scans.py` | Kodak scanner folders (`MM D YY`) | `09 5 02` → `2002-09-05` |

All fixers preserve the original filename and prepend an ISO date so files sort chronologically and pass `fslint --dateprefix`.

## Context
Sources are in src/fslint.
Command program is src/fslint/fslint.py
Python is at /media/johnk/TsExWork/Projects/makeapp-cli.thaura/.venv/bin/python3
PYTHONPATH=src

## Notes on Behavior
The script create_testfs.sh created a directory with test directories and files, and is considered not just a test suite fixture, but part of the interactive coding environment. So new examples of good and bad file names should be added there.

As the filters are refined, you may want to put some notes in this section to tighten up the behavior.

The program is very strict that dates fit the format YYYY-MM-DD, regexes should be strict about this. Even human readable dates like 2026-Jan-1 should be rejected.

The script does not recurse into subdirectories.
