Esempio n. 1
0
        private void HandleScrobble(IPlayerSlotController psc, bool starting)
        {
            try
            {
                IPlayerContext pc = PlayerContext.GetPlayerContext(psc);
                if (pc == null)
                {
                    return;
                }

                bool removePsc = HandleTasks(psc, starting);

                AbstractScrobble    scrobbleData;
                TraktScrobbleStates state;
                if (TryCreateScrobbleData(psc, pc, starting, out scrobbleData, out state))
                {
                    ServiceRegistration.Get <ILogger>().Debug("Trakt.tv: [{5}] {0}, Duration {1}, Percent {2}, PSC.Duration {3}, PSC.ResumePosition {4}",
                                                              scrobbleData.Title, scrobbleData.Duration, scrobbleData.Progress, _progressUpdateWorks[psc].Duration, _progressUpdateWorks[psc].ResumePosition, state);

                    TraktMovieScrobble movie = scrobbleData as TraktMovieScrobble;
                    if (movie != null)
                    {
                        TraktAPI.ScrobbleMovieState(movie, state);
                    }

                    TraktEpisodeScrobble episode = scrobbleData as TraktEpisodeScrobble;
                    if (episode != null)
                    {
                        TraktAPI.ScrobbleEpisodeState(episode, state);
                    }
                }

                if (removePsc)
                {
                    lock (_syncObj)
                        _progressUpdateWorks.Remove(psc);
                }
            }
            catch (ThreadAbortException)
            { }
            catch (Exception ex)
            {
                ServiceRegistration.Get <ILogger>().Error("Trakt.tv: Exception while scrobbling", ex);
            }
        }