Example #1
0
        static void Main(string[] args)
        {
            LogMessageToFile("Program started");

            // Config file
            Configuration config = new Configuration();
            config.LoadConfiguration("Configuration.xml");

            // Classification
            Classifier classifier = new Classifier();
            classifier.ClassifyTvShows(config);
        }
        public void ClassifyTvShows(Configuration _config)
        {
            // Get all the new files
            ArrayList files = GetAllVideoFiles(_config);

            // Iterate through all the files
            foreach (FileInfo file in files)
            {
                TVShow show = FindShowFromFilename(_config, file.Name);
                if (show != null)
                {
                    // Build destination path
                    int season = FindSeasonFromFilename(file.Name);
                    String destinationPath = _config.m_tvShowDirectory + "\\" + show.m_folder;
                    if (season > 0)
                    {
                        destinationPath += "\\Season " + season;
                    }

                    // Create the directory if needed
                    if (!Directory.Exists(destinationPath))
                    {
                        Directory.CreateDirectory(destinationPath);
                        Program.LogMessageToFile("Creating directory [" + destinationPath + "]");
                    }

                    // Copy the file
                    try
                    {
                        String destinationFile = Path.Combine(destinationPath, file.Name);
                        bool deleteOldFile = false;

                        if (File.Exists(destinationFile))
                        {
                            FileInfo existingFile = new FileInfo(destinationFile);
                            if (existingFile.Length == file.Length)
                            {
                                Program.LogMessageToFile("File [" + file.Name + "] already exist in directory [" + destinationPath + "]");
                                deleteOldFile = true;
                            }
                        }
                        else
                        {
                            Program.LogMessageToFile("Copying file [" + file.Name + "] to directory [" + destinationPath + "]");
                            Program.ShowNotificationOnTrayIcon("Copying file [" + file.Name);

                            FileInfo newFile = file.CopyTo(destinationFile);
                            if (newFile.Length == file.Length)
                            {
                                Program.LogMessageToFile("File [" + file.Name + "] successfully copied in directory [" + destinationPath + "]");
                                deleteOldFile = true;
                            }
                        }

                        if (deleteOldFile)
                        {
                            Program.LogMessageToFile("Deleting original file [" + file.Name + "]");
                            file.Delete();
                        }
                    }
                    catch (System.Exception e)
                    {
                        Program.LogMessageToFile(String.Format("Unable copy the file, {0}", e.ToString()));
                        Program.ShowNotificationOnTrayIcon(String.Format("Unable copy the file, {0}", e.ToString()));
                    }
                }
            }
        }
        //--------------------------------------------------------------------------------
        private TVShow FindShowFromFilename(Configuration _config, String _filename)
        {
            foreach (TVShow show in _config.m_tvShows)
            {
                Regex regex = new Regex(show.m_searchSequence, RegexOptions.IgnoreCase);
                if (regex.IsMatch(_filename))
                {
                    return show;
                }
            }

            Program.LogMessageToFile("Can't find a math in the TVShowList for file [" + _filename + "]");
            return null;
        }
        //--------------------------------------------------------------------------------
        private ArrayList GetAllVideoFiles(Configuration _config)
        {
            ArrayList files = new ArrayList();

            if (Directory.Exists(_config.m_torrentSrcDirector))
            {
                try
                {
                    string[] extFilter = _config.m_fileExtensions.Split(new char[] { ',' });
                    DirectoryInfo dirInfo = new DirectoryInfo(_config.m_torrentSrcDirector);

                    //loop through each extension in the filter
                    foreach (string extension in extFilter)
                    {
                        files.AddRange(dirInfo.GetFiles(extension, SearchOption.AllDirectories));
                    }
                }
                catch (System.Exception e)
                {
                    Program.LogMessageToFile(String.Format("Unable retrive the incoming files, {0}", e.ToString()));
                }
            }
            else
            {
                Program.LogMessageToFile("Torrent search path not found (" + _config.m_torrentSrcDirector + ").");
            }

            return files;
        }