Implement music file scanning in shanty-index
#3
Notifications
Total Time Spent: 24 minutes
connor
24 minutes
No due date set.
Dependencies
No dependencies set.
Reference: Shanty/Main#3
Reference in New Issue
Block a user
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
The
shanty-indexcrate is responsible for scanning a directory tree of music files and extracting metadata from them. This is the foundation of Shanty — before anything else can happen, the app needs to know what music the user currently has.This issue covers:
.mp3,.flac,.ogg,.opus,.m4a,.wav,.wma,.aac,.alacat minimum). Use a crate likewalkdirfor efficient traversal.loftyorsymphoniathat handles multiple formats uniformly. Extract at minimum: title, artist, album, album artist, track number, disc number, year/date, genre, duration, codec, bitrate.shanty-dbdatabase. Handle the case where a file has already been indexed (update if file mtime changed, skip if unchanged). Create artist and album records as needed based on the metadata found.shanty-indexbinary should accept:--dry-runflag that reports what would be indexed without writing to DBrayonortokiotasks to process multiple files concurrently. This is important because large libraries can have tens of thousands of files.Design Considerations
Acceptance Criteria
shanty-indexscans recursively and finds all supported formatsshanty-dbshanty-index /path/to/music--dry-runmode works and outputs what would be indexedDependencies