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