public ActionResult AddFileInformation(FileInformationModel fileInformation)
        {
            List <string> _errList = new List <string>();
            bool          _success = false;

            if (ModelState.IsValid)
            {
                try
                {
                    var ff = Mapper.Map <FileInformation>(fileInformation);
                    new FileInformationRepository().Add(Mapper.Map <FileInformation>(fileInformation));
                    _success = true;
                }
                catch (DalException e)
                {
                    _errList.Add(e.Message);
                }
                catch (Exception)
                {
                    _errList.Add("DataBase Error");
                }
            }
            else
            {
                _errList = GetModelErrors();
            }

            return(Json(new
            {
                success = _success,
                error = _errList
            }));
        }
        public ActionResult DeleteFileInformationR(int id)
        {
            var fileInformation = new FileInformationModel()
            {
                Id = id
            };

            return(PartialView("DeleteFileInformationView", fileInformation));
        }
        public bool IsVideoFile(FileInformationModel file)
        {
            bool result = false;

            switch (file.Filetype)
            {
            case ".webm":
            case ".mkv":
            case ".flv":
            case ".vob":
            case ".ogv":
            case ".ogg":
            case ".drc":
            case ".gif":
            case ".gifv":
            case ".mng":
            case ".avi":
            case ".mov":
            case ".qt":
            case ".wmv":
            case ".yuv":
            case ".rm":
            case ".rmvb":
            case ".asf":
            case ".amv":
            case ".mp4":
            case ".m4p":
            case ".m4v":
            case ".mpg":
            case ".mp2":
            case ".mpeg":
            case ".mpe":
            case ".mpv":
            case ".m2v":
            case ".svi":
            case ".3gp":
            case ".3g2":
            case ".mxf":
            case ".roq":
            case ".nsv":
            case ".f4v":
            case ".f4p":
            case ".f4a":
            case ".f4b":
                result = true;
                break;

            default:
                result = false;
                break;
            }

            return(result);
        }
        public async Task <DbResult> AddFileInformationAsync(FileInformationModel fileInformation)
        {
            var entity = new SavedFile()
            {
                FileFullPath         = fileInformation.FileInfo.FullName,
                Filename             = fileInformation.Filename,
                SiteRelativeImageUrl = fileInformation.FileImageUrl,
                TvdbSeriesId         = fileInformation.TvdbSeriesId
            };

            var result = await AddSavedFileAsync(entity);

            return(result);
        }
示例#5
0
        public void CopyMediaFiles(List <SeriesFileStructureModel> seriesFileStructures, List <FileInformationModel> files)
        {
            string writeLocation = appSettings.MediaFileOutputLocation;

            if (!Directory.Exists(writeLocation))
            {
                Directory.CreateDirectory(writeLocation);
            }

            var movies = files.Where(x => x.MediaInformation.IsMovie == true);

            files.RemoveAll(x => x.MediaInformation.IsMovie == true);
            var personal = files.Where(x => x.MediaInformation.IsPersonal == true);

            files.RemoveAll(x => x.MediaInformation.IsPersonal == true);

            Console.WriteLine("Building File Structure");
            //Write the files structure
            foreach (var struc in seriesFileStructures)
            {
                Directory.CreateDirectory(writeLocation + struc.SeriesName);
                foreach (var season in struc.Seasons)
                {
                    Directory.CreateDirectory(writeLocation + struc.SeriesName + "//" + "Season" + season);
                }
            }

            if (movies.Count() > 0)
            {
                if (!Directory.Exists(writeLocation + "Movies//"))
                {
                    Directory.CreateDirectory(writeLocation + "Movies//");
                }
            }

            if (personal.Count() > 0)
            {
                if (!Directory.Exists(writeLocation + "Personal//"))
                {
                    Directory.CreateDirectory(writeLocation + "Personal//");
                }
            }

            Console.WriteLine("Copying Movies");

            foreach (var movie in movies)
            {
                File.Copy(movie.FileInfo.FullName, writeLocation + "Movies//" + movie.Filename);
            }

            Console.WriteLine("Copying Personal Files");

            foreach (var pers in personal)
            {
                File.Copy(pers.FileInfo.FullName, writeLocation + "Personal//" + pers.Filename);
            }

            var dirList = Directory.GetDirectories(writeLocation);

            //Write the files
            //List<FileInfo> transferringFiles = new List<FileInfo>();
            List <(Thread thread, FileInfo fileInfo)> runningThreads = new List <(Thread thread, FileInfo fileInfo)>();
            List <int> threads    = new List <int>();
            long       count      = 0;
            var        maxThreads = 10;

            var  totalTransferSize = files.Sum(x => x.FileInfo.Length);
            long totalTransferred  = 0;



            foreach (var file in files)
            {
                string fileCheckPath = string.Concat(writeLocation, file.MediaInformation.Name, "//", "Season", file.MediaInformation.Season, "//", file.Filename);
                //make a temp object
                FileInformationModel tmp = file;
                //spin up a new thread

                var thisThread = new Thread(new ThreadStart(() => FileCopyThread(tmp, writeLocation)));
                try
                {
                    while (runningThreads.Count > maxThreads - 1)
                    {
                        List <int> rmFiles   = new List <int>();
                        var        rmThreads = new List <(Thread thread, FileInfo fileInfo)>();

                        foreach (var x in runningThreads)
                        {
                            if (!x.thread.IsAlive)
                            {
                                rmThreads.Add(x);
                            }
                        }

                        if (rmThreads.Count <= 0)
                        {
                            Thread.Sleep(1000);
                        }

                        foreach (var rm in rmThreads)
                        {
                            runningThreads.RemoveAll(x => x.thread == rm.thread);

                            totalTransferred += rm.fileInfo.Length;
                        }
                    }
                    //File.Copy(file.FileInfo.FullName, , false);
                    thisThread.Start();
                    count++;



                    //transferringFiles.Add(file.FileInfo);
                    (Thread Thread, FileInfo fileInfo)temp = (thisThread, file.FileInfo);
                    runningThreads.Add(temp);
                    //Console.SetCursorPosition(0, Console.CursorTop);
                    //Console.Write("Copying File {0} of {1}" + Environment.NewLine, count, files.Count);
                    //FileSystem.CopyFile(file.FileInfo.FullName, string.Concat(writeLocation, file.MediaInformation.Name, "//", "Season", file.MediaInformation.Season, "//", file.Filename), UIOption.AllDialogs, UICancelOption.ThrowException);
                }
                catch (Exception ex)
                {
                    Console.WriteLine("File {0} could not be copied. Caught Exception {1}", file.Filename, ex);
                }
            }
        }
示例#6
0
 public static void FileCopyThread(FileInformationModel file, string writeLocation)
 {
     //FileSystem.CopyFile(file.FileInfo.FullName, string.Concat(writeLocation, file.MediaInformation.Name, "//", "Season", file.MediaInformation.Season, "//", file.Filename), UIOption.AllDialogs, UICancelOption.ThrowException);
     File.Copy(file.FileInfo.FullName, string.Concat(writeLocation, file.MediaInformation.Name, "//", "Season", file.MediaInformation.Season, "//", file.Filename), false);
 }
示例#7
0
        public List <FileInformationModel> GetFolderInformation(string directory, bool recursive = true)
        {
            DirectoryInfo               di     = new DirectoryInfo(directory);
            List <FileInfo>             fi     = new List <FileInfo>();
            List <FileInformationModel> result = new List <FileInformationModel>();

            if (recursive)
            {
                //fi = di.GetFiles("*", SearchOption.AllDirectories).ToList();

                try
                {
                    var dirs = di.GetDirectories();

                    foreach (var dir in dirs)
                    {
                        try
                        {
                            fi.AddRange(dir.GetFiles("*", SearchOption.AllDirectories).ToList());
                        }
                        catch (Exception ex)
                        {
                            Console.WriteLine("Couldn't get file {0}. {1}", dir.FullName, ex.Message);
                        }
                    }
                }
                catch
                {
                    Console.WriteLine("Failed to get directory {0}", di.FullName);
                    return(result);
                }
            }
            else
            {
                try
                {
                    fi.AddRange(di.GetFiles().ToList());
                }
                catch
                {
                    Console.WriteLine("Failed to get directory {0}", di.FullName);
                    return(result);
                }
            }


            foreach (var f in fi)
            {
                var fileInfo = new FileInformationModel();

                try
                {
                    fileInfo = new FileInformationModel()
                    {
                        //FileAttributes = File.GetAttributes(f.FullName),
                        FileInfo      = f,
                        FileSizeBytes = f.Length,
                        Filename      = f.Name,
                        Filetype      = f.Extension,
                        LastUsed      = f.LastAccessTime
                    };
                }
                catch (Exception ex)
                {
                    Console.WriteLine("Caught exception trying to read file", f.Name);
                }


                result.Add(fileInfo);
            }

            return(result);
        }
        public ActionResult AddFileInformation()
        {
            var fileInformation = new FileInformationModel();

            return(PartialView("AddFileInformationView", fileInformation));
        }