コード例 #1
0
        private void HandleMovieScrobbleStart(IPlayerContext pc, IMediaPlaybackControl pmc)
        {
            ValidateAuthorization();

            MediaItem movieMediaItem = GetMediaItem(pc.CurrentMediaItem.MediaItemId, new Guid[] { MediaAspect.ASPECT_ID, ExternalIdentifierAspect.ASPECT_ID, MovieAspect.ASPECT_ID });

            _traktMovie = ConvertMediaItemToTraktMovie(movieMediaItem);
            float progress = GetCurrentProgress(pmc);
            ITraktMovieScrobblePostResponse postMovieResponse = _traktClient.StartScrobbleMovie(_traktMovie, progress);
            string title         = postMovieResponse.Movie.Title + " " + "(" + postMovieResponse.Movie.Year + ")";
            int?   traktProgress = null;

            if (postMovieResponse.Progress != null)
            {
                traktProgress = (int)postMovieResponse.Progress;
            }
            string actionType = postMovieResponse.Action.DisplayName;

            bool startNotificationsEnabled = _mediaPortalServices.GetTraktSettingsWatcher().TraktSettings.ShowScrobbleStartedNotifications;

            if (startNotificationsEnabled)
            {
                ShowNotification(new TraktScrobbleStartedNotification(title, true, traktProgress, actionType), TimeSpan.FromSeconds(5));
            }

            _duration = pmc.Duration;
            _mediaPortalServices.GetLogger().Info("Trakt: started to scrobble: {0}", title);
        }
コード例 #2
0
        public async Task Test_TraktScrobbleModule_StartMovie_Complete()
        {
            ITraktMovieScrobblePost movieStartScrobblePost = new TraktMovieScrobblePost
            {
                Movie      = Movie,
                Progress   = START_PROGRESS,
                AppVersion = APP_VERSION,
                AppDate    = APP_BUILD_DATE.ToTraktDateString()
            };

            string postJson = await TestUtility.SerializeObject(movieStartScrobblePost);

            postJson.Should().NotBeNullOrEmpty();

            TraktClient client = TestUtility.GetOAuthMockClient(SCROBBLE_START_URI, postJson, MOVIE_START_SCROBBLE_POST_RESPONSE_JSON);

            TraktResponse <ITraktMovieScrobblePostResponse> response =
                await client.Scrobble.StartMovieAsync(Movie, START_PROGRESS, APP_VERSION, APP_BUILD_DATE);

            response.Should().NotBeNull();
            response.IsSuccess.Should().BeTrue();
            response.HasValue.Should().BeTrue();
            response.Value.Should().NotBeNull();

            ITraktMovieScrobblePostResponse responseValue = response.Value;

            responseValue.Id.Should().Be(0);
            responseValue.Action.Should().Be(TraktScrobbleActionType.Start);
            responseValue.Progress.Should().Be(START_PROGRESS);
            responseValue.Sharing.Should().NotBeNull();
            responseValue.Sharing.Facebook.Should().BeTrue();
            responseValue.Sharing.Twitter.Should().BeTrue();
            responseValue.Sharing.Tumblr.Should().BeFalse();
            responseValue.Movie.Should().NotBeNull();
            responseValue.Movie.Title.Should().Be("Guardians of the Galaxy");
            responseValue.Movie.Year.Should().Be(2014);
            responseValue.Movie.Ids.Should().NotBeNull();
            responseValue.Movie.Ids.Trakt.Should().Be(28U);
            responseValue.Movie.Ids.Slug.Should().Be("guardians-of-the-galaxy-2014");
            responseValue.Movie.Ids.Imdb.Should().Be("tt2015381");
            responseValue.Movie.Ids.Tmdb.Should().Be(118340U);
        }
        public async Task Test_TraktScrobbleModule_PauseMovie()
        {
            ITraktMovieScrobblePost moviePauseScrobblePost = new TraktMovieScrobblePost
            {
                Movie    = Movie,
                Progress = PAUSE_PROGRESS
            };

            string postJson = await TestUtility.SerializeObject(moviePauseScrobblePost);

            postJson.Should().NotBeNullOrEmpty();

            TraktClient client = TestUtility.GetOAuthMockClient(SCROBBLE_PAUSE_URI, postJson, MOVIE_PAUSE_SCROBBLE_POST_RESPONSE_JSON);
            TraktResponse <ITraktMovieScrobblePostResponse> response = await client.Scrobble.PauseMovieAsync(Movie, PAUSE_PROGRESS);

            response.Should().NotBeNull();
            response.IsSuccess.Should().BeTrue();
            response.HasValue.Should().BeTrue();
            response.Value.Should().NotBeNull();

            ITraktMovieScrobblePostResponse responseValue = response.Value;

            responseValue.Id.Should().Be(0);
            responseValue.Action.Should().Be(TraktScrobbleActionType.Pause);
            responseValue.Progress.Should().Be(PAUSE_PROGRESS);
            responseValue.Sharing.Should().NotBeNull();
            responseValue.Sharing.Twitter.Should().BeFalse();
            responseValue.Sharing.Tumblr.Should().BeFalse();
            responseValue.Movie.Should().NotBeNull();
            responseValue.Movie.Title.Should().Be("Guardians of the Galaxy");
            responseValue.Movie.Year.Should().Be(2014);
            responseValue.Movie.Ids.Should().NotBeNull();
            responseValue.Movie.Ids.Trakt.Should().Be(28U);
            responseValue.Movie.Ids.Slug.Should().Be("guardians-of-the-galaxy-2014");
            responseValue.Movie.Ids.Imdb.Should().Be("tt2015381");
            responseValue.Movie.Ids.Tmdb.Should().Be(118340U);
        }
コード例 #4
0
        private void StopScrobble()
        {
            try
            {
                if (_traktEpisode != null && _traktShow != null)
                {
                    ValidateAuthorization();

                    float progress = GetSavedProgress();
                    ITraktEpisodeScrobblePostResponse postEpisodeResponse = _traktClient.StopScrobbleEpisode(_traktEpisode, _traktShow, progress);
                    string title         = postEpisodeResponse.Show.Title + " " + postEpisodeResponse.Episode.SeasonNumber + "x" + postEpisodeResponse.Episode.Number;
                    int?   traktProgress = null;
                    if (postEpisodeResponse.Progress != null)
                    {
                        traktProgress = (int)postEpisodeResponse.Progress;
                    }
                    string actionType = postEpisodeResponse.Action.DisplayName;

                    bool stopNotificationsEnabled = _mediaPortalServices.GetTraktSettingsWatcher().TraktSettings.ShowScrobbleStoppedNotifications;
                    if (stopNotificationsEnabled)
                    {
                        ShowNotification(new TraktScrobbleStoppedNotification(title, true, traktProgress, actionType), TimeSpan.FromSeconds(5));
                    }

                    _traktEpisode = null;
                    _traktShow    = null;
                    _mediaPortalServices.GetLogger().Info("Trakt: stopped to scrobble: {0}", title);
                }
                else if (_traktMovie != null)
                {
                    ValidateAuthorization();

                    float progress = GetSavedProgress();
                    ITraktMovieScrobblePostResponse postMovieResponse = _traktClient.StopScrobbleMovie(_traktMovie, progress);
                    string title         = postMovieResponse.Movie.Title + " " + "(" + postMovieResponse.Movie.Year + ")";
                    int?   traktProgress = null;
                    if (postMovieResponse.Progress != null)
                    {
                        traktProgress = (int)postMovieResponse.Progress;
                    }
                    string actionType = postMovieResponse.Action.DisplayName;

                    bool stopNotificationsEnabled = _mediaPortalServices.GetTraktSettingsWatcher().TraktSettings.ShowScrobbleStoppedNotifications;
                    if (stopNotificationsEnabled)
                    {
                        ShowNotification(new TraktScrobbleStoppedNotification(title, true, traktProgress, actionType), TimeSpan.FromSeconds(5));
                    }

                    _traktMovie = null;
                    _mediaPortalServices.GetLogger().Info("Trakt: stopped scrobble: {0}", title);
                }
            }
            catch (Exception ex)
            {
                bool stopNotificationsEnabled          = _mediaPortalServices.GetTraktSettingsWatcher().TraktSettings.ShowScrobbleStoppedNotifications;
                bool stopNotificationsOnFailureEnabled = _mediaPortalServices.GetTraktSettingsWatcher().TraktSettings.ShowScrobbleStoppedNotificationsOnFailure;
                if (stopNotificationsEnabled || stopNotificationsOnFailureEnabled)
                {
                    ShowNotification(new TraktScrobbleStoppedNotification(ex.Message, false, null, "Unspecified"), TimeSpan.FromSeconds(4));
                }
                _mediaPortalServices.GetLogger().Error("Trakt: exception while stopping scrobble: " + ex);
            }
        }