void _userDataManager_UserDataSaved(object sender, UserDataSaveEventArgs e) { if (e.SaveReason == UserDataSaveReason.PlaybackProgress) { return; } lock (_syncLock) { if (UpdateTimer == null) { UpdateTimer = new Timer(UpdateTimerCallback, null, UpdateDuration, Timeout.Infinite); } else { UpdateTimer.Change(UpdateDuration, Timeout.Infinite); } List<string> keys; if (!_changedKeys.TryGetValue(e.UserId, out keys)) { keys = new List<string>(); _changedKeys[e.UserId] = keys; } keys.Add(e.Key); } }
void _userDataManager_UserDataSaved(object sender, UserDataSaveEventArgs e) { if (e.SaveReason == UserDataSaveReason.PlaybackFinished || e.SaveReason == UserDataSaveReason.TogglePlayed || e.SaveReason == UserDataSaveReason.UpdateUserRating) { var item = e.Item as BaseItem; if (!string.IsNullOrWhiteSpace(_config.GetNfoConfiguration().UserId)) { SaveMetadataForItem(item, ItemUpdateType.MetadataDownload); } } }
void _userDataManager_UserDataSaved(object sender, UserDataSaveEventArgs e) { if (e.SaveReason == UserDataSaveReason.PlaybackFinished || e.SaveReason == UserDataSaveReason.TogglePlayed) { var item = e.Item as BaseItem; if (item != null) { if (!item.IsFolder && !(item is IItemByName)) { SaveMetadataForItem(item, ItemUpdateType.MetadataEdit); } } } }
void _userDataManager_UserDataSaved(object sender, UserDataSaveEventArgs e) { if (e.SaveReason == UserDataSaveReason.PlaybackProgress) { return; } lock (_syncLock) { if (UpdateTimer == null) { UpdateTimer = new Timer(UpdateTimerCallback, null, UpdateDuration, Timeout.Infinite); } else { UpdateTimer.Change(UpdateDuration, Timeout.Infinite); } List<IHasUserData> keys; if (!_changedItems.TryGetValue(e.UserId, out keys)) { keys = new List<IHasUserData>(); _changedItems[e.UserId] = keys; } keys.Add(e.Item); var baseItem = e.Item as BaseItem; // Go up one level for indicators if (baseItem != null) { var parent = baseItem.Parent; if (parent != null) { keys.Add(parent); } } } }
/// <summary> /// /// </summary> /// <param name="sender"></param> /// <param name="e"></param> void _userDataManager_UserDataSaved(object sender, UserDataSaveEventArgs e) { // ignore change events for any reason other than manually toggling played. if (e.SaveReason != UserDataSaveReason.TogglePlayed) return; var baseItem = e.Item as BaseItem; if (baseItem != null) { // determine if user has trakt credentials var traktUser = UserHelper.GetTraktUser(e.UserId.ToString()); // Can't progress if (traktUser == null || !_traktApi.CanSync(baseItem, traktUser)) return; // We have a user and the item is in a trakt monitored location. _userDataManagerEventsHelper.ProcessUserDataSaveEventArgs(e, traktUser); } }
void _userDataManager_UserDataSaved(object sender, UserDataSaveEventArgs e) { var userId = _config.GetNfoConfiguration().UserId; if (string.IsNullOrWhiteSpace(userId)) { return; } if (e.SaveReason == UserDataSaveReason.PlaybackFinished || e.SaveReason == UserDataSaveReason.TogglePlayed) { var item = e.Item as BaseItem; if (item != null) { if (!item.IsFolder && !(item is IItemByName)) { SaveMetadataForItem(item, ItemUpdateType.MetadataEdit); } } } }
/// <summary> /// /// </summary> /// <param name="sender"></param> /// <param name="e"></param> void _userDataManager_UserDataSaved(object sender, UserDataSaveEventArgs e) { // ignore change events for any reason other than manually toggling played. if (e.SaveReason != UserDataSaveReason.TogglePlayed) return; var baseItem = e.Item as BaseItem; if (baseItem != null) { // determine if user has trakt credentials var traktUser = UserHelper.GetTraktUser(e.UserId.ToString()); // Can't progress if (traktUser == null || baseItem.Path == null || baseItem.LocationType == LocationType.Virtual || (!(baseItem is Movie) && !(baseItem is Episode))) return; foreach (var s in traktUser.TraktLocations.Where(s => baseItem.Path.StartsWith(s + Path.DirectorySeparatorChar))) { // We have a user and the item is in a trakt monitored location. _userDataManagerEventsHelper.ProcessUserDataSaveEventArgs(e, traktUser); } } }
/// <summary> /// /// </summary> /// <param name="userDataSaveEventArgs"></param> /// <param name="traktUser"></param> public void ProcessUserDataSaveEventArgs(UserDataSaveEventArgs userDataSaveEventArgs, TraktUser traktUser) { var userPackage = _userDataPackages.FirstOrDefault(e => e.TraktUser.Equals(traktUser)); if (userPackage == null) { userPackage = new UserDataPackage { TraktUser = traktUser }; _userDataPackages.Add(userPackage); } if (_timer == null) { _timer = new Timer(5000); _timer.Elapsed += TimerElapsed; } if (_timer.Enabled) { _timer.Stop(); _timer.Start(); } else { _timer.Start(); } var movie = userDataSaveEventArgs.Item as Movie; if (movie != null) { if (userDataSaveEventArgs.UserData.Played) { userPackage.SeenMovies.Add(movie); if (userPackage.SeenMovies.Count >= 300) { _traktApi.SendMoviePlaystateUpdates(userPackage.SeenMovies, userPackage.TraktUser, true, CancellationToken.None).ConfigureAwait(false); userPackage.SeenMovies = new List<Movie>(); } } else { userPackage.UnSeenMovies.Add(movie); if (userPackage.UnSeenMovies.Count >= 300) { _traktApi.SendMoviePlaystateUpdates(userPackage.UnSeenMovies, userPackage.TraktUser, false, CancellationToken.None).ConfigureAwait(false); userPackage.UnSeenMovies = new List<Movie>(); } } return; } var episode = userDataSaveEventArgs.Item as Episode; if (episode == null) return; // If it's not the series we're currently storing, upload our episodes and reset the arrays if (!userPackage.CurrentSeriesId.Equals(episode.Series.Id)) { if (userPackage.SeenEpisodes.Any()) { _traktApi.SendEpisodePlaystateUpdates(userPackage.SeenEpisodes, userPackage.TraktUser, true, CancellationToken.None).ConfigureAwait(false); userPackage.SeenEpisodes = new List<Episode>(); } if (userPackage.UnSeenEpisodes.Any()) { _traktApi.SendEpisodePlaystateUpdates(userPackage.UnSeenEpisodes, userPackage.TraktUser, false, CancellationToken.None).ConfigureAwait(false); userPackage.SeenEpisodes = new List<Episode>(); } userPackage.CurrentSeriesId = episode.Series.Id; } if (userDataSaveEventArgs.UserData.Played) { userPackage.SeenEpisodes.Add(episode); } else { userPackage.UnSeenEpisodes.Add(episode); } }
void _userDataManager_UserDataSaved(object sender, UserDataSaveEventArgs e) { if (e.SaveReason == UserDataSaveReason.PlaybackProgress) { return; } //_logger.Debug(String.Format("Emby.Kodi.SyncQueue: Item ID: {0}", e.Item.Id.ToString())); //_logger.Debug(String.Format("Emby.Kodi.SyncQueue: JsonObject: {0}", _jsonSerializer.SerializeToString(e.Item))); //_logger.Debug(String.Format("Emby.Kodi.SyncQueue: User GetClientTypeName: {0}", (e.Item as BaseItem).GetClientTypeName())); var cname = string.Empty; lock (_syncLock) { var type = -1; var testItem = e.Item as BaseItem; if (testItem != null) { if (!FilterItem(testItem, out type)) { return; } if (UpdateTimer == null) { UpdateTimer = new Timer(UpdateTimerCallback, null, UpdateDuration, Timeout.Infinite); } else { UpdateTimer.Change(UpdateDuration, Timeout.Infinite); } List<IHasUserData> keys; if (!_changedItems.TryGetValue(e.UserId, out keys)) { keys = new List<IHasUserData>(); _changedItems[e.UserId] = keys; } keys.Add(e.Item); // Go up one level for indicators _itemRef.Add(new LibItem() { Id = testItem.Id, ItemType = type, }); var parent = testItem.Parent; if (parent != null) { keys.Add(parent); } } } }
/// <summary> /// Let last fm know when a user favourites or unfavourites a track /// </summary> void UserDataSaved(object sender, UserDataSaveEventArgs e) { //We only care about audio if (!(e.Item is Audio)) return; //We also only care about User rating changes if (!e.SaveReason.Equals(UserDataSaveReason.UpdateUserRating)) return; var lastfmUser = Utils.UserHelpers.GetUser(e.UserId); if (lastfmUser == null) { Plugin.Logger.Debug("Could not find user"); return; } if (string.IsNullOrWhiteSpace(lastfmUser.SessionKey)) { Plugin.Logger.Info("No session key present, aborting"); return; } var item = e.Item as Audio; //Dont do if syncing if (Plugin.Syncing) return; _apiClient.LoveTrack(item, lastfmUser, e.UserData.IsFavorite); }