== MythTVfs ==
Kees Cook 

This is a FUSE ( server that was designed to communicate
with a MythTV backend server.  It creates an overlay filesystem that
encodes TV Program metadata (title, episode, description) into a filename
so that systems that do not natively talk to MythTV can still get information
about a given show.  The initial design goal is to make it compatible
with the in-filename metadata extraction capabilities that will (hopefully)
be in future versions of Galleon (

=== Usage ===
Several steps are required to make this application useful:
* install the FUSE libraries and kernel module
* enable NFS on your MythTV backend (if MythTVfs is run non-local to MythTV).
* mount the MythTV video repository (usually /var/lib/mythtv) somewhere
  locally (e.g. "/mnt/myth-native").
* configure with "./configure"
* compile with "make"
* start MythTVfs with the MythTV backend server name and repository path:
     ./mythtvfs -o /mnt/myth-native /mnt/mythtvfs
      you can mount mythtvfs via fstab, for example:
        mythtvfs#/mnt/mythtvfs /mnt/myth-native fuse noauto, 0 0"
* if mounting the filesystem under Windows, you may want to add:
      -o 'invalid-chars=<>|:?"*\' -o replacement-char=_

=== Filename Structure ===
Filenames in the MythTVfs filesystem are named based on their TV Program's
metadata.  The elements are contained by the brace symbols ("{}") and have
the original filename embedded, and then end with ".mpg".


Where "RECORD_DATE" has the format "07.15 PM Wed Mar 31, 2005", and "AIR_DATE"
has the format "2005-03-31".  "DURATION" is measured in seconds, and "CHANNEL"
is the shortened channel "callsign".  "FILE" is the original MythTV filename
for storage (e.g. "1013_20051207210000_20051207220000.nuv").  The file ends
with ".mpg" because Galleon will only recognize file extensions that it
expects the TiVo to be able to play.

=== Hooking to Galleon ===
You'll need a version of Galleon that understands this file format layout.
A patch against 2.1.0 is available on the MythTVfs homepage.  Just
add a "GoBack" path that matches your MythTVfs mount point, and it will
automatically extract all the metadata from the filename.


Change Log

0.6.1  2009-12-11  Kees Cook  

	* mythtvfs.c: add protocol 50, implement program column width guesser

0.6.0  2009-08-18  Kees Cook  

	* mythtvfs.c: whitespace cleanups.
	* mythtvfs.c: fix FTBFS in host struct clearing.
	* mythtvfs.c: starting to add cutlist via .edl file support.
	* mythtvfs.c: correct programinfo width and mappings.
	* mythtvfs.c: use arbitrary formats via hashtables (based on
                      excellent patch from Morty Abzug).
	* mythtvfs.c: actually make thread-safe.
	* mythtvfs.pod: update documentation.
	* mythtvfs.init: example init script from Morty Abzug.

0.5.2  2008-05-04  Kees Cook   

	* mythtvfs.c: add "-o invalid-chars" and "-o replacement-char",
	  inspired by patch from Joe Pruett.

0.5.1  2008-04-20  Kees Cook   

	* Manpage from Bryce Harrington.
	* mythtvfs.c: add "-o backend-version=N" to force backend versions.
	* mythtvfs.c: add "-o program-width=N" to force new program widths.
	* mythtvfs.c: disallow "/" in filenames.

0.5.0  2007-04-10  Kees Cook   

	* mythtvfs.c: added code based on patches from Mark Sullivan for
	  short filenames, and saner option handling.  Cleaned up whitespace.
	* bumped to version 0.5.0 due to option changes.
	* README: add notes on how to mount via fstab.

2007-03-20  Kees Cook   

	* mythtvfs.c: updated for newer FUSE and added version fallback code.

2007-02-22  Kees Cook   

	* mythtvfs.c: updated for myth 0.20 and fuse 2.6.3, thanks to Fa Yoeu.

2006-05-12  Kees Cook   

	* mythtvfs.c: updated protocol version matcher.
	* mythtvfs.c, compat/*: added option handling

2006-01-16	Kees Cook	

	* mythtvfs.c: adjusted file format to match Galleon 2.1.0 + desc patch.

2005-12-23	Kees Cook	

	* Initial public release