ATVFiles is an AppleTV (ATV) plugin that allows the user to browse the entire ATV filesystem via the Finder and Apple Remote. This allows you to navigate to files that would not normally sync to the ATV, files stored on a network drive or another Mac for instance. Combined with the proper codecs, ATVFiles will allow you to play any of your media.
Version 1.0.2 (379)
February 10, 2008
Screenshot gallery: http://www.tuaw.com/photos/atv-files-beta/
Download (ATV): http://ericiii.net/sa/appletv/ATVFiles-1.0.2.run (489KB)
Download (Leopard): http://ericiii.net/sa/appletv/ATVFiles-1.0.2.pkg (414KB)
(manual: http://ericiii.net/sa/appletv/ATVFiles-1.0.2.tar.gz (410KB)
Discussion forum: http://forum.awkwardtv.org/viewforum.php?f=18
Development site: http://atvfiles.googlecode.com
Copyright (c) 2007-2008 Eric Steil III (ericiii.net)
- 1 Description
- 2 Installation
- 3 Usage
- 4 Preferences
- 5 XML Metadata Format
- 6 Release Notes
- 7 Known Issues
- 8 Plans
- 9 Building
- 10 License
- 11 Notice
- 12 Acknowledgements
- 13 Special Thanks
- 14 Donations
ATVFiles is an Apple TV plugin that allows the user to browse the entire ATV filesystem via the Finder and Apple Remote. This allows you to navigate to files that would not normally sync to the ATV, files stored on a network drive or another Mac for instance. Combined with the proper codecs, ATVFiles will allow you to play any of your media.
Please note that ATVFiles does not provide the codecs. Perian is highly recommended as it provides all the common codecs.
NOTE: As of version 0.5.0, ATVFiles requires the Apple TV 1.1 update to run.
ATVFiles can be installed via ATVLoader, or manually via the
To install manually,
- Copy the file
ATVFiles-1.0.1.runto the Apple TV.
- SSH into the Apple TV, and run the following command:
sudo sh ATVFiles-1.0.1.run
It does not matter what the file is named, if Safari renames it to something like
ATVFiles-1.0.1.run.sh it will still work fine.
Double click on
ATVFiles-1.0.1.pkg, and follow the prompts.
Engadget posted a pretty good tutorial on installing this.
- Copy ATVFiles.frappliance to this folder:
/System/Library/CoreServices/Finder.app/Contents/PlugInson the Apple TV. You may want to create a symlink from there to some more convenient place.
- Restart Finder.
ps awx|grep [F]inderwill list the PID as the first number, then running
kill PIDwill kill it.
If you have the Apple TV drive mounted on your local system, the correct path is on the OSBoot volume.
If you have the drive installed in the Apple TV, you will likely have to mount
the root partition as read-write (using
sudo /sbin/mount -uw /) to copy it.
sudo /sbin/mount -ur / will reverse the above action.
Enter the new "Files" menu on the main menu.
It lists files in /Users/frontrow/Movies, so mount or put your video files in that folder. If there is nothing in the "Movies" folder the Files menu will not show up in the main menu.
NOTE: 0.3 MAY HAVE A DELAY UPON ENTERING A DIRECTORY FOR THE FIRST TIME WHILE IT CACHES METADATA AND FILE DURATIONS. FOR A LARGE DIRECTORY THIS MAY TAKE A FEW MINUTES, DURING WHICH THERE IS NO INDICATION OF ANY ACTIVITY.
ATVFiles looks for cover art in either JPG, TIFF, or PNG formats. It looks for specific filenames of the following formats (the jpg extension is an example, and can be either jpg, tif, tiff, or png):
For folders: Either folder.jpg or cover.jpg in the folder.
For other files: The same as the filename without the extension, and the image extension (jpg, tif, tiff, png). For instance, anchorman-xvid.avi would look for anchorman-xvid.jpg for cover art.
The preferences can be set using the defaults command, such as:
defaults write net.ericiii.ATVFiles RootDirectory /mnt/Server
To change a boolean preference, use:
defaults write net.ericiii.ATVFiles EnableAC3Passthrough -bool YES
Finder needs to be restarted to pick up any changes.
The preferences available are:
RootDirectory: The path it looks at when first entering the plugin.
- Defaults to /Users/frontrow/Movies (or whatever user the ATV interface is running as, i.e. frontrow on Apple TV)
EnableAC3Passthrough: Boolean, enable AC3 passthrough support in A52Codec (see 0.3.0 release notes for details)
- Default: NO
EnableFileDurations: Boolean, disable scanning files for their duration, as it can be slow.
- Default: YES
ShowFileExtensions: Boolean, show filename extensions
- Default: YES
ShowFileSize: Boolean, show file size
- Default: YES
ShowUnplayedDot: Boolean, show the blue unplayed dot
- Default: YES
VideoExtensions: Array of file extensions (without leading ".") that are video files.
- Default: (m4v, 3gp, m3u, pls, divx, xvid, avi, mov, wmv, asx, asf, ogm, mpg, mpeg, mp4, mkv, avc, flv, dv, fli, m2v, ts)
AudioExtensions: Array of file extensions (without leading ".") that are audio files.
- Default: (m4b, m4a, mp3, wma, wav, aif, aiff, flac, alac, m3u, mp2)
ResumeOffset: Integer, number of seconds to add to the bookmark time when resuming. Negative will go back in time.
- Default: 0
EnableStacking: Boolean, enable stacking of files
- Default: YES
StackRegexps: Array of regular expressions to group for stacking These are in PCRE format, if one group to match it is the part number, if multiple groups, the second one is the part number.
( [ _\\.-]+cd[ _\\.-]*([0-9a-d]+), [ _\\.-]+dvd[ _\\.-]*([0-9a-d]+), [ _\\.-]+part[ _\\.-]*([0-9a-d]+), ()([a-d])(\\....)$ )
EnterAutomatically: Boolean, automatically enter ATVFiles at boot.
ShowFileIcons: Boolean, show the playlist/stack icons in the file listings.
MountBlacklist: Array, paths to mount points to never show.
Places: Array, paths for “places”
PlacesMode: String, places mode enabled.
Valid values for
On: Enabled, with volumes and bookmarked folders on the initial list.
Volumes: Show contents of
RootDirectoryalong with any mounted volumes.
Off: Do not show bookmarks or volumes in the initial listing.
Bookmarks/volumes will always be accessible from the context menu.
Note: Files with extensions not listed in either VideoExtensions or AudioExtensions are not displayed. Just because an extension is listed does not mean it will play without appropriate components installed, the list is mostly copied from XBMC.
When updating the VideoExtensions and AudioExtensions pref, you must include all default items (if you want them), the defaults will not be used if you override them. You also must use the array options (-array and -array-add) to defaults to update them. The extensions should also be listed in lowercase.
The list of extensions is also used to determine which player (video or audio) is used for playback.
XML Metadata Format
The xml file is looked for along side the video file (and cover art), with the same name and an "xml" extension. That is, "anchorman-divx.avi" will look for "anchorman-divx.xml".
Not all of the fields are shown in the UI, this just represents the data stored and available internally.
Example file, see the wiki for more complete examples:
<media type="TV Show"> <title>Title</title> <artist>Artist</artist> <summary>Summary of Media</summary> <description>Description of Media</description> <publisher>Publisher</publisher> <composer>Composer</composer> <copyright>Copyright</copyright> <userStarRating>5</userStarRating> <starRating>5</starRating> <rating>TV-PG</rating> <seriesName>Veronica Mars</seriesName> <broadcaster>The CW</broadcaster> <episodeNumber>101</episodeNumber> <season>1</season> <episode>1</episode> <published>2006-01-01</published> <acquired>2006-01-01</acquired> <duration>3600</duration> <genres> <genre primary="true">Mystery</genre> <genre>Drama</genre> </genres> <cast> <name>Kristen Bell</name> </cast> <producers> <name>Rob Thomas</name> </producers> <directors> <name>Rob Thomas</name> </directors> </media>
Random Notes about the data:
- All these are optional
- duration is only to override if the QuickTime scanning gets it wrong, otherwise it should not be used.
- rating will display graphics for the usual ones (R, TV-PG, etc.)
- the type attribute has some control over the values shown in the metadata, possible values are "Song", "Music Video", "Podcast", "Movie", "TV Show", "Audio Book". The default type is Movie
- published is the original air date for TV Shows
- not all values are actually used for display, regardless of the "type", but all are stored
For some examples, see ATVFiles XML Metadata
1.0.2 (379) February 10, 2008
- Fix “blinking” of in-playback menu when choosing “Return to file listing.”
- Swap the positions of “resume” and “return to file listing” options on the in-playback menu, to make it two presses instead of three to return to the menu.
- Fix incorrect duration when first playing back a previously unseen audio file.
- Fix potential crash when returning to browser from video player.
- Add prefix option to .run installer for automated installs (i.e. Patchstick).
sh ATVFiles-1.0.2.run install /path/to/root
1.0.1 (362) January 20, 2008
- Don’t include playlists and other folders when gathering assets for folder art parades.
- Add a preference
EnableFolderParadesto completely disable folder parades (pre-1.0 behavior).
- Add a preference
- Fix display of folder cover art when a cover image is present.
- Fix display of cover art on Apple TV just not working.
1.0.0 (361) January 13, 2008
- Add menu on MENU press during playback.
- Playlist previous/next navigation for video playlists
- Subtitle toggling
- Add option to toggle subtitles.
EnableSubtitlesByDefaultpreference to enable them by default.
- Fix the “unknown” genre problem, now any genre can be displayed with the metadata, and “unknown” will not be displayed when not specified.
- Move file size (still optional) to the metadata display instead of in the file listing.
- Add cover art preview of playlist/folder contents.
- Fix crashes with cover art and unicode file names.
- Delay resolving symlinks until playback, allowing metadata/cover art to be displayed for the symlink instead of that for the target.
- Add option to delete entire folders.
- Fix file deletion not deleting all stack segments and metadata.
EnterAutomaticallypreference to automatically enter ATVFiles at boot.
ShowFileIconspreference to hide the playlist/stack icons in the listing.
- Add Places feature, which are essentially bookmarks for favorite folders.
- Mounted volumes are listed independently (no need for mounting/symlinking under
- Folders can be added/removed from places by pressing RIGHT with the folder highlighted.
- Mounted volumes are listed independently (no need for mounting/symlinking under
- Leopard compatibility, thanks to the Sapphire team!
- Add pkg file for easy Leopard installation.
- The settings menu now takes up the full width of the screen, instead of just the right-hand side.
- Now open-sourced under GPL 3.
0.5.1 (273) October 15, 2007
- Fix memory leak, which was holding files open after playback.
- Actually add the Finnish translations. Sorry about that.
0.5.0 (45) September 29, 2007
- Now requires Apple TV OS 1.1 (full or safe update).
- Fix extensions being stripped from non-filename titles.
- Add file stacking and seamless playback.
- Delay duration scanning until file playback. Files will show duration of 0 until they are played, or it is specified in the XML file. The detected duration will be saved regardless of if it’s in the XML.
- Added playlist support (only m3u files for now).
- Added context menu accessed by pressing right on any file browser item.
- Options for: deleting files, playing entire selected directory contents, viewing detailed info on a file.
- Add support for adjusting most preferences in the app.
- Add German translation from teldec and Finnish translation from ryokale.
- Added icons in file list for playlists and file stacks.
- Added self-extracting shell script to automate manual installation.
0.4.0 (22) July 23, 2007
- Add new icon from Telusman.
- Proper music playback with fancy UI.
- Fixed holding files open, preventing deletion.
- Actually set the A52Codec passthrough preference on startup, for real (AC3 passthrough should work now without setting the com.cod3r.a52codec preference).
- Gracefully handle XML files in a format other than expected.
- No longer stores a bookmark time when a file has been completely played.
- Use mplayer for duration checking, should be somewhat faster overall now, at the expense of a much larger download size.
- Disable sound effects when playing back video with AC3 passthrough enabled
- Reverted directory scanning code, should cope better with non-ASCII filenames.
- Stop music playback when starting video/exiting ATVFiles.
0.3.2 (14) June 20, 2007
- Update for compatibility with the Apple TV 1.1 update.
0.3.1 (13) May 20, 2007
- Add resume feature to 0.3.0 release notes.
- Fix problem with disabling file duration scanning ignoring duration specified in XML file.
- Add ResumeOffset preference to allow offsetting the resume time.
- Fix crash with changing media type in XML.
0.3.0 (12) May 19, 2007
- Remember last playback position and offer to resume resume.
- Show blue dots next to unplayed files
- Read metadata from an XML file alongside the media file (like coverart)
- See above for the format
- Add EXPERIMENTAL AC3 Passthrough support with the EnableAC3Passthrough preference when using optical audio out.
- This requires Perian 1.0.
- Will not work properly for non-48k sample rate AC3 tracks, as it sets the sample rate to 48000 on startup and leaves it there. These, however, are rare.
- Fix stripping extensions from folder names
- Use home directory of current user instead of hardcoding /Users/frontrow/Movies
- Hide the files "Icon\r" (folder icons), "Desktop DB" and "Desktop DF" from listings
- Revert to showing on all sources, not just local
- Can be changed by adjusting the value of FRRemoteAppliance in Info.plist
- Include fix from alan_quatermain to allow the main menu to scroll if there are a bunch of items
0.2.2 (8) April 11, 2007
- Added French and Spanish localizations
- Fix problem with absolute symlinks
- Use natural sorting for files with numbers
- Add preferences to hide filename extensions and file sizes
0.2.1 (6) April 8, 2007
- Added Japanese localizations
- Fixed case-sensitivity when matching valid filename extensions
- Fixed a minor problem with certain symlinks
- Changed EnableFileDurations default to NO until metadata is cached
- Fixed not finding cover art when folder name contains [, ], ? or *.
0.2.0 (5) April 8, 2007
- Don't show the menu item when viewing remote sources
- This can be changed by setting the value of FRRemoteAppliance in Info.plist to <true/>
- Cleaner plugin whitelist handling that doesn't raise an exception
- Add basic metadata preview, including cover art
- Don't show Movies folder title as root ATVFiles menu title (match root menu title)
- Update icon to a non-Apple icon, and show it on all menu titles
- Add basic German and Dutch localizations
- Filter filenames based on extension to predefined list
- Added preferences to deal with root directory
- Distribute as .tar.gz instead of .dmg
- Change directory content scanning method, fixes some AFP problems but not all.
0.1.0 (2) March 30, 2007
- First release
- Files on AFP shares sometimes don’t play even if they show up and are supported. (Seems to be a BackRow problem, try restarting the ATV.)
- There is lag when a directory is first visited since it has to load and scan all metadata, and no indiciation is displayed. This will only happen the first time, future visits should be faster (as it only loads changed metadata)
- Metadata is not read from the media files themselves (ID3, etc.)
- Some stuttering of playing music can occur when browsing files.
- Playlist issues:
- Video playlist playback shows seek bar for every entry after first one.
- No UI for creating/managing playlists.
- No adjustment of root directory from the preferences UI.
- Front Row issues:
- Music playback UI doesn’t update, navigation keys do nothing or cause Front Row to complain.
- Subtitles don’t work, displaying a black image instead (seems to be a bug in either Perian or QT, not ATVFiles).
- The “File Info” option on the context menus is disabled.
- Support running an external editor (i.e. VLC) for specific file extensions
- Minimize delays on opening directories
- Read ID3 and similar tags
- Cover art url tag in XML, and cache cover art
Requires Xcode 3 on Mac OS X 10.5 to build.
Need the ATV 1.1 BackRow.framework headers in /System/Library/PrivateFrameworks/BackRow.framework/PrivateHeaders Symlink the system BackRow.framework into /Developer/SDKs/MacOSX10.4u.sdk/System/Library/PrivateFrameworks Need to follow some postflight from BDK for QCGLTextureImage complaints.
Copyright (C) 2007-2008 Eric Steil III.
ATVFiles is licensed under GPL3. The full license can be found in LICENSE.txt.
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/.
This program is provided at your own risk. The author claims no responsibility for any damage or other outcome that may occur from use of this software.
The author is not affiliated with Apple, Inc.
Contains AGRegex, copyright (c) 2002 Aram Greenman, which in turns contains PCRE, both of which are available under the BSD license.
Leopard compatibility code is based off the work of the Sapphire team, which they made available under the GPL 3 license.
- alan_quatermain (#awkwardtv) for his magic code to bypass the plugin whitelist.
- Telusman (http://telusman.deviantart.com/) for the new icon.
- The Sapphire Team (http://appletv.nanopi.net) for the Leopard compatibility code.
- jsh, Marco Schreijen, tomoto, GoldstarQC, elchubi, Valdemar, Stefan Christiansson, slump, BABAPUS, teldec and ryokale for translations.
If you wish, you may donate to ATVFiles via PayPal here.