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); } }
/// <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); }
/// <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); } }
/// <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; } } }