public async Task Execute(CancellationToken cancellationToken, IProgress <double> progress) { try { foreach (var syncProfile in Plugin.Instance.Configuration.SyncList) { var syncToUser = UserManager.GetUserById(syncProfile.SyncToAccount); //Sync To var syncFromUser = UserManager.GetUserById(syncProfile.SyncFromAccount); //Sync From var queryResultIds = LibraryManager.GetInternalItemIds(new InternalItemsQuery() { IncludeItemTypes = new[] { "Movie", "Episode" } }); for (var i = 0; i <= queryResultIds.Count() - 1; i++) { var item = LibraryManager.GetItemById(queryResultIds[i]); Synchronize.SynchronizePlayState(syncToUser, syncFromUser, item); progress.Report(queryResultIds.Count() - (queryResultIds.Count() - i) / 100); } } } catch { } progress.Report(100.0); }
private void SessionManager_PlaybackStopped(object sender, PlaybackStopEventArgs e) { if (!Plugin.Instance.Configuration.SyncList.Exists(user => user.SyncFromAccount == e.Session.UserId)) { return; } var sync = Plugin.Instance.Configuration.SyncList.FirstOrDefault(user => user.SyncFromAccount == e.Session.UserId); var syncToUser = UserManager.GetUserById(sync.SyncToAccount); Synchronize.SynchronizePlayState(syncToUser, e.Item, e.PlaybackPositionTicks.Value); }