Exemplo n.º 1
0
        private void btnFindRecordings_Click(object sender, RoutedEventArgs e)
        {
            string tabloIPAddress = txtTabloIPAddress.Text;

            recordings = new ObservableCollection <Recording>();

            DoWorkWithModal(progress =>
            {
                progress.Report(String.Format("Finding recordings on Tablo at IP {0}...", tabloIPAddress));
                List <int> foundRecordings = GetRecordingList(tabloIPAddress);

                progress.Report("Loading metadata for recordings found...");
                foreach (var foundRecording in foundRecordings)
                {
                    RecordingMetadata metadata = GetRecordingMetadata(tabloIPAddress, foundRecording);
                    if (metadata != null)
                    {
                        Recording recording = new Recording();
                        recording.Id        = foundRecording;
                        if (metadata.recEpisode != null)
                        {
                            recording.Type           = RecordingType.Episode;
                            recording.Description    = String.Format("{0} - S{1}E{2} - {3}", metadata.recSeries.jsonForClient.title, metadata.recEpisode.jsonForClient.seasonNumber.ToString("00"), metadata.recEpisode.jsonForClient.episodeNumber.ToString("00"), metadata.recEpisode.jsonForClient.title);
                            recording.RecordedOnDate = DateTime.Parse(metadata.recEpisode.jsonForClient.airDate);

                            if (metadata.recEpisode.jsonForClient.video.state.ToLower() != "finished")
                            {
                                recording.IsNotFinished = true;
                            }
                        }
                        else if (metadata.recMovie != null)
                        {
                            recording.Type           = RecordingType.Movie;
                            recording.Description    = String.Format("{0} ({1})", metadata.recMovie.jsonForClient.title, metadata.recMovie.jsonForClient.releaseYear);
                            recording.RecordedOnDate = DateTime.Parse(metadata.recMovieAiring.jsonForClient.airDate);

                            if (metadata.recMovieAiring.jsonForClient.video.state.ToLower() != "finished")
                            {
                                recording.IsNotFinished = true;
                            }
                        }
                        else if (metadata.recSportEvent != null)
                        {
                            recording.Type           = RecordingType.Manual;
                            recording.Description    = String.Format("{0} - {1}", metadata.recSportOrganization.jsonForClient.title, metadata.recSportEvent.jsonForClient.eventTitle);
                            recording.RecordedOnDate = DateTime.Parse(metadata.recSportEvent.jsonForClient.airDate);

                            if (metadata.recSportEvent.jsonForClient.video.state.ToLower() != "finished")
                            {
                                recording.IsNotFinished = true;
                            }
                        }
                        else if (metadata.recManualProgram != null)
                        {
                            recording.Type           = RecordingType.Manual;
                            recording.Description    = String.Format("{0}", metadata.recManualProgram.jsonForClient.title);
                            recording.RecordedOnDate = DateTime.Parse(metadata.recManualProgramAiring.jsonForClient.airDate);

                            if (metadata.recManualProgramAiring.jsonForClient.video.state.ToLower() != "finished")
                            {
                                recording.IsNotFinished = true;
                            }
                        }
                        else //If this is not a recognized recording type
                        {
                            continue; // Skip the remainder of this iteration.
                        }

                        recordings.Add(recording);

                        if ((recordings.Count % 20) == 0)
                        {
                            progress.Report(String.Format("{0} recordings found...", recordings.Count));
                        }
                    }
                }
            });

            lvRecordingsFound.ItemsSource = recordings;
            CollectionView view = (CollectionView)CollectionViewSource.GetDefaultView(lvRecordingsFound.ItemsSource);

            view.SortDescriptions.Add(new SortDescription("Description", ListSortDirection.Ascending));
        }
Exemplo n.º 2
0
        public async Task <ObservableCollection <Recording> > Find(IProgress <ProgressBarInfo> progressBar, IProgress <string> progressFileCountLabel)
        {
            progressFileCountLabel.Report("Initalizing finding recordings...");
            await Task.Delay(10);

            ObservableCollection <Recording> recordings = new ObservableCollection <Recording>();

            IMediaNamingConvention mediaNamingConvention = ServiceLocator.Current.GetInstance <IMediaNamingConvention>();

            progressFileCountLabel.Report(String.Format("Finding recordings on Tablo at IP {0}...", TabloIPAddress));
            List <int> foundRecordings = await GetRecordingList(TabloIPAddress);

            progressFileCountLabel.Report(String.Format("Found {0} files - getting recording metadata...", foundRecordings.Count()));

            int foundCount = foundRecordings.Count();
            int i          = 0;

            progressBar.Report(new ProgressBarInfo()
            {
                Maximum = foundCount, Value = i
            });
            progressFileCountLabel.Report("Loading metadata for recordings found...");

            foreach (var foundRecording in foundRecordings)
            {
                #region IF DEFs
#if TargetSingleRecording
                if (foundRecording != 611517)
                {
                    continue;
                }
#endif // TargetSingleRecording
#if LimitRecordingsFound
                if (recordings.Count == 10)
                {
                    break;
                }
#endif // LimitRecordingsFound
                #endregion
                RecordingMetadata metadata = GetRecordingMetadata(TabloIPAddress, foundRecording);
                if (metadata != null)
                {
                    if (i % 10 == 0)
                    {
                        progressFileCountLabel.Report(String.Format("Loading metadata for recordings found: {0} of {1}", i, foundCount));
                    }

                    Recording recording = new Recording()
                    {
                        Id = foundRecording, Metadata = metadata
                    };
                    if (recording.Metadata.recEpisode != null)
                    {
                        recording.Type = RecordingType.Episode;
                        if (recording.IsS00E00)
                        {
                            recording.Description = mediaNamingConvention.GetS00E00Description(OutputDirectory, recording, recordings);
                        }
                        else
                        {
                            recording.Description = mediaNamingConvention.GetEpisodeDescription(recording);
                        }
                        recording.Plot           = recording.Metadata.recEpisode.jsonForClient.description;
                        recording.RecordedOnDate = DateTime.Parse(recording.Metadata.recEpisode.jsonForClient.airDate);
                        if (recording.Metadata.recEpisode.jsonForClient.video.state.ToLower() != "finished")
                        {
                            recording.HasFinishedRecording = false;
                        }
                    }
                    else if (recording.Metadata.recMovie != null)
                    {
                        recording.Type           = RecordingType.Movie;
                        recording.Description    = mediaNamingConvention.GetMovieDescription(recording);
                        recording.RecordedOnDate = DateTime.Parse(recording.Metadata.recMovieAiring.jsonForClient.airDate);
                        recording.Plot           = recording.Metadata.recMovie.jsonForClient.plot;

                        if (recording.Metadata.recMovieAiring.jsonForClient.video.state.ToLower() != "finished")
                        {
                            recording.HasFinishedRecording = false;
                        }
                    }
                    else if (recording.Metadata.recSportEvent != null)
                    {
                        recording.Type           = RecordingType.Sports;
                        recording.Description    = mediaNamingConvention.GetSportsDescription(recording);
                        recording.RecordedOnDate = DateTime.Parse(recording.Metadata.recSportEvent.jsonForClient.airDate);
                        recording.Plot           = recording.Metadata.recSportEvent.jsonForClient.description;

                        if (recording.Metadata.recSportEvent.jsonForClient.video.state.ToLower() != "finished")
                        {
                            recording.HasFinishedRecording = false;
                        }
                    }
                    else if (recording.Metadata.recManualProgram != null)
                    {
                        recording.Type           = RecordingType.Manual;
                        recording.Description    = mediaNamingConvention.GetManualDescription(recording);
                        recording.RecordedOnDate = DateTime.Parse(recording.Metadata.recManualProgramAiring.jsonForClient.airDate);

                        if (recording.Metadata.recManualProgramAiring.jsonForClient.video.state.ToLower() != "finished")
                        {
                            recording.HasFinishedRecording = false;
                        }
                    }
                    else //If this is not a recognized recording type
                    {
                        continue; // Skip the remainder of this iteration.
                    }

                    recordings.Add(recording);
                    i++;
                    progressBar.Report(new ProgressBarInfo()
                    {
                        Maximum = null, Value = i
                    });
                    await Task.Delay(10);
                }
            }
            // });
            progressFileCountLabel.Report(String.Format("Loading metadata for recordings found: {0}", foundCount));
            progressBar.Report(new ProgressBarInfo()
            {
                Maximum = null, Value = 0
            });
            await Task.Delay(10);

            return(recordings);
        }