Download Organizer is a Windows service developed on the .NET 4 framework in C#. Download Organizer monitors your downloads folder for incoming files and moves them to specified locations on your computer or network based on file extension.

Internally, Download Organizer uses an implementation of FileSystemWatcher to monitor inbound files. The source for the project includes a console application for testing. The service was initially written to move nzb (usenet) and torrent files to a watch folder on the network, but it has many organizational uses. Mappings are controlled via the app.config file, below is a sample configuration -

  <!-- This section contains the Download Organizer configuration settings. -->
  <organizer directoryPath="E:\Downloads" useRelativePaths="false" pollingPeriodInMilliseconds="5000" numberOfRetries="2">
    <fileProcessors>
      <add fileExtension="NZB" targetDirectory="E:\SABnzbd\watch" />
      <add fileExtension="TORRENT" targetDirectory="E:\Torrent\watch" />
      <add fileExtension="WMV" targetDirectory="E:\Videos" />
      <add fileExtension="AVI" targetDirectory="E:\Videos" />
      <add fileExtension="EPUB" targetDirectory="E:\Ebooks" />
    </fileProcessors>
  </organizer>

This configuration specifies that the E:\Downloads directory will be monitored for inbound files. If a file with extension NZB is downloaded, it will be automatically moved to "E:\SABnzbd\watch" directory. Similiarly, TORRENT file extension will be moved to "E:\Torrent\watch", WMV and AVI files will be moved to the "E:\Videos" directory and EPUB will be moved to "E:\Ebooks". Note that the file extension is case insensitive, so you may use lower case or upper case in the config. The implementation has a built in retry mechanism in case there are any file locking issues. With the config above, Download Organizer will make two attempts to move any NZB or TORRENT files with a 5 second wait period between attempts, controlled via the pollingPeriodInMilliseconds.

Plans for future versions:
  • Introduce wildcards
  • Create default processing for files that do not match any extension
  • File matching based on file name
  • Support for monitoring of multiple inbound "Download" locations

Last edited Oct 5, 2012 at 8:29 PM by cchamberlain, version 9