Example #1
0
        public static TelevisionEpisode GetEpisode(this SortFile _sortFile)
        {
            if (_sortFile != null)
            {
                string patternTV = @"(?<ShowName>.+)[.|\s]+[Ss](?<ShowSeasonNumber>\d?\d)[Ee]?(?<ShowEpisodeNumber>\d?\d)[.|\s]+.*(?<ShowFileExtension>mkv|avi|mp4)";
                Regex  _reg      = new Regex(patternTV);

                var match = Regex.Match(_sortFile.FileName, patternTV);

                TelevisionEpisode _episode = new TelevisionEpisode
                {
                    ShowName      = match.Groups[1].Value.Replace(".", " "),
                    SeasonNumber  = match.Groups[2].Value,
                    EpisodeNumber = match.Groups[3].Value,
                    FileName      = _sortFile.FileName,
                    FilePath      = _sortFile.FilePath,
                    FileSize      = _sortFile.FileSize,
                    PriorityLevel = _sortFile.PriorityLevel
                };

                return(_episode);
            }
            else
            {
                return(null);
            }
        }
Example #2
0
        /// <summary>
        /// Convert finalized Sort Item to Television Episode
        /// </summary>
        /// <param name="sortModel">Model to convert to Television Episode</param>
        /// <returns>TelevisionEpisode converted from SortMediaItem</returns>
        public static TelevisionEpisode ToEpisode(this sortItem sortModel)
        {
            TelevisionEpisode newEpisode = new TelevisionEpisode {
                pk_EpisodeID = sortModel.pk_MediaID, EpisodePath = sortModel.filePath
            };

            return(newEpisode);
        }
        /// <summary>
        /// Get Episode File Size
        /// </summary>
        /// <param name="uEpisode">episode model to query for file size</param>
        /// <returns>size of file in bytes</returns>
        public static long GetFileSize(this TelevisionEpisode uEpisode)
        {
            long finalSize;

            FileInfo info = new FileInfo(uEpisode.EpisodePath);

            finalSize = info.Length;

            return(finalSize);
        }
Example #4
0
        /// <summary>
        /// Return or build source url for streaming content
        /// </summary>
        /// <param name="episode">TelevisionEpisode to build streaming url</param>
        /// <returns>string url to pass to web media streaming</returns>
        public static string BuildStreamingUrl(TelevisionEpisode episode)
        {
            if (string.IsNullOrEmpty(episode.EpisodePlayerPath))
            {
                string baseUrl     = @"http://www.jimmysietsma.com/media/tv";
                char   showDrive   = episode.EpisodePath[0];
                string showName    = episode.EpisodePath.Split('\\')[2];
                string showSeason  = episode.EpisodePath.Split('\\')[3];
                string showEpisode = episode.EpisodePath.Split('\\')[4];

                return($"{ baseUrl }/{ showDrive }/TV Shows/{ showName }/{ showSeason }/{ showEpisode }");
            }
            else
            {
                return(episode.EpisodePlayerPath);
            }
        }
Example #5
0
        /// <summary>
        /// Scan and populate the CompletedDownloads property based on SortPath
        /// </summary>
        private void ScanPopulateQueues()
        {
            if (!string.IsNullOrEmpty(SortPath))
            {
                List <FileInfo> _completedDirectoryFiles   = new List <FileInfo>();
                List <FileInfo> _downloadingDirectoryFiles = new List <FileInfo>();

                //Scan for completed files in queue
                foreach (string _file in Directory.GetFiles(SortPath))
                {
                    _completedDirectoryFiles.Add(new FileInfo(_file));
                }

                //populate CompletedDownloads property if any results
                if (_completedDirectoryFiles.Count > 0)
                {
                    ObservableCollection <IMediaFile> _mediaFiles = new ObservableCollection <IMediaFile>();

                    foreach (FileInfo _info in _completedDirectoryFiles)
                    {
                        SortFile _file = new SortFile(_info.FullName);

                        if (_file.SanitizeTelevisionEpisode(out string SanitizedfileName, out string SanitizedShowName, out string ShowSeasonNumber, out string ShowEpisodeNumber))
                        {
                            var classification = Type.GetType("Entities.Television.TelevisionEpisode");

                            TelevisionEpisode Episode = new TelevisionEpisode
                            {
                                FileName           = _file.FileName,
                                ShowName           = SanitizedShowName,
                                SeasonNumber       = ShowSeasonNumber,
                                EpisodeNumber      = ShowEpisodeNumber,
                                FilePath           = _file.FilePath,
                                FileSize           = _file.FileSize,
                                PriorityLevel      = _file.PriorityLevel,
                                FileClassification = classification,
                                SanitizedFileName  = SanitizedfileName
                            };

                            _mediaFiles.Add(Episode);
                        }
                        else
                        {
                            _mediaFiles.Add(_file);
                        }
                    }

                    CompletedDownloads = _mediaFiles;
                }

                //Scan for files being downloaded
                foreach (string _file in Directory.GetFiles(SortPath + "~downloading"))
                {
                    _downloadingDirectoryFiles.Add(new FileInfo(_file));
                }

                //populate DownloadingFiles property if any results
                if (_downloadingDirectoryFiles.Count > 0)
                {
                    ObservableCollection <IMediaFile> _mediaFiles = new ObservableCollection <IMediaFile>();

                    foreach (FileInfo _info in _downloadingDirectoryFiles)
                    {
                        SortFile _file = new SortFile(_info.FullName);

                        _mediaFiles.Add(_file);
                    }

                    DownloadingFiles = _mediaFiles;
                }
            }
        }