id3fsd - FUSE filesystem for browsing id3 tags

id3fsd [-vh] [-f dbfile] [--] SOURCEDIR MOUNTPOINT

id3fsd provides a browsable filesystem of your music files, organised into sub-directories by id3 tags (or flac/ogg comments).

id3fsd allows you to construct boolean queries from a tag folksonomy such as:

goth/AND/decade/1980s/ postrock/AND/NOT/rating/terrible/ thrash/OR/rapmetal/AND/NOT/wears-a-red-hat/ prog/AND/decade/1970s/OR/psychedelia/AND/decade/1960s/ location/sweden/AND/screamo/AND/postrock/

Multiple tags can be stored in the genre tag, separated by commas. An index should first be created with id3fs-index(1), then id3fsd can mount the files in SOURCEDIR on the directory MOUNTPOINT.

If not explicitly specified (with -f), the index is searched for at SOURCEDIR/.id3fs.

The resulting filesystem is read-only. Tags appear as directories, and files appear as symlinks to the actual files in SOURCEDIR.

To mount a view of ~/music on ~/tags:

$ mkdir ~/tags $ id3fs-index ~/music $ id3fsd ~/music ~/tags

You may need to be in the fuse group, or be root.

SOURCEDIR Directory containing actual audio files and database file .id3fs (unless otherwise specified with -f). MOUNTPOINT Directory to mount the id3fs view of the files. -t NUM | --tagdepth=NUM Maximum number of tags in an expression. A query with many ANDs and NOTs can get quite slow. This option allows a cutoff before things get too slow, as well as providing some eventual limit when processes recurse into the filesystem. The default is 6. -f FILE | --database=FILE Use database in FILE. The default is SOURCEDIR/.id3fs. -v Enable verbose operation. Repeat for more verbosity. If verbose is enabled, id3fsd does not detach from the terminal. -h Show a short help message. -- End of options.

A path in the filesystem consists of a tag query expression, followed by directories containing the matching files, arranged by artist and album.

Example paths:

/krautrock/AND/year/1971/ /krautrock/AND/year/1971/Can /krautrock/AND/year/1971/Can/Tago Mago/01-Paperhouse.mp3 /krautrock/AND/year/1971/Can/NOALBUM/Can - Oh Yeah (Live).mp3 /krautrock/AND/year/1971/Can/TRACKS/01-Paperhouse.mp3 /krautrock/AND/year/1971/Can/TRACKS/Can - Oh Yeah (Live).mp3 /krautrock/AND/year/1971/NOARTIST/unknown-track.mp3 /krautrock/AND/year/1971/TRACKS/01-Paperhouse.mp3

id3fs supports OR, AND and NOT. NOT has the highest precedence, followed by AND, so foo/OR/NOT/bar/AND/baz is parsed as (foo OR ((NOT bar) AND baz)).

Tags are extracted from the genre tag of audio files with id3fs-index(1).

Within the genre frame/comment, tags are separated by commas.

Tags can have values, separated by a slash, eg metal/thrash, rating/5. Certain special tags are automatically filled in from other file metadata.

The following tags are automatically derived from other metadata in the audio files:

year Extracted from the year or DATE tag. If not found defaults to year/UNKNOWN. decade Also extracted from the year or DATE tag. If not found defaults to decade/UNKNOWN. v1genre If a mp3 file has an ID3V1.1 genre tag, its value is assigned to v1genre. audiotype Type of audio file (mp3, ogg, flac). Always set.

TRACKS All tracks that match the given tag expression, whether they have an assigned artist and album or not. NOARTIST Tracks matching the given expression that do not have an artist tag. NOALBUM Tracks matching the given expression that do not have an album tag. ALL This is a special directory in the root of the filesystem, that provides access to all the indexed files, regardless of tags assigned.

For others to be able to view your id3fs mount(s), you need to set the option user_allow_other in /etc/fuse.conf.

To mount a filesystem automatically, put an entry in /etc/fstab like:

id3fsd#/source/dir /mount/point defaults 0 0

Because id3fs offers a combinatorial explosion of views of your files, processes recursing into the mount point will take a long time to traverse it.

Ensure your backups, cron jobs, /etc/updatedb.conf, etc. are configured to exclude the mount point.

Please report any found to ianb@erislabs.net

id3fs-index(1), http://fuse.sourceforge.net

Ian Beckwith <ianb@erislabs.net>

Many thanks to Aubrey Stark-Toller for help wrangling SQL.

The latest version can be found at:

http://erislabs.net/ianb/projects/id3fs/

Copyright (C) 2010 Ian Beckwith <ianb@erislabs.net>

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with this program. If not, see <http://www.gnu.org/licenses/>.