private void CopyList(TraktListDetail sourceList, TraktListDetail newList) { var copyList = new CopyList { Username = CurrentUser, Source = sourceList, Destination = newList }; var copyThread = new Thread((obj) => { var copyParams = obj as CopyList; // first create new list TraktLogger.Info("Creating new list online. Privacy = '{0}', Name = '{1}'", copyParams.Destination.Privacy, copyParams.Destination.Name); var response = TraktAPI.TraktAPI.CreateCustomList(copyParams.Destination); if (response != null) { // get items from other list var userListItems = TraktAPI.TraktAPI.GetUserListItems(copyParams.Username, copyParams.Source.Ids.Trakt.ToString(), "min"); // copy items to new list var itemsToAdd = new TraktSyncAll(); foreach (var item in userListItems) { var listItem = new TraktListItem(); listItem.Type = item.Type; switch (item.Type) { case "movie": if (itemsToAdd.Movies == null) itemsToAdd.Movies = new List<TraktMovie>(); itemsToAdd.Movies.Add(new TraktMovie { Ids = item.Movie.Ids }); break; case "show": if (itemsToAdd.Shows == null) itemsToAdd.Shows = new List<TraktShow>(); itemsToAdd.Shows.Add(new TraktShow { Ids = item.Show.Ids }); break; case "season": if (itemsToAdd.Seasons == null) itemsToAdd.Seasons = new List<TraktSeason>(); itemsToAdd.Seasons.Add(new TraktSeason { Ids = item.Season.Ids }); break; case "episode": if (itemsToAdd.Episodes == null) itemsToAdd.Episodes = new List<TraktEpisode>(); itemsToAdd.Episodes.Add(new TraktEpisode { Ids = item.Episode.Ids }); break; case "person": if (itemsToAdd.People == null) itemsToAdd.People = new List<TraktPerson>(); itemsToAdd.People.Add(new TraktPerson { Ids = item.Person.Ids }); break; } } // add items to the list var ItemsAddedResponse = TraktAPI.TraktAPI.AddItemsToList("me", response.Ids.Trakt.ToString(), itemsToAdd); if (ItemsAddedResponse != null) { TraktLists.ClearListCache(TraktSettings.Username); TraktCache.ClearCustomListCache(); // updated MovingPictures categories and filters menu if (TraktHelper.IsMovingPicturesAvailableAndEnabled) { TraktHandlers.MovingPictures.UpdateCategoriesMenu(SyncListType.CustomList); TraktHandlers.MovingPictures.UpdateFiltersMenu(SyncListType.CustomList); } } } }) { Name = "CopyList", IsBackground = true }; copyThread.Start(copyList); }
private TraktSyncAll GetSyncItems(TraktListItem listItem) { var syncItems = new TraktSyncAll(); switch (listItem.Type) { case "movie": var movie = new TraktMovie { Ids = new TraktMovieId { Trakt = listItem.Movie.Ids.Trakt } }; syncItems.Movies = new List<TraktMovie>(); syncItems.Movies.Add(movie); break; case "show": var show = new TraktShow { Ids = new TraktShowId { Trakt = listItem.Show.Ids.Trakt } }; syncItems.Shows = new List<TraktShow>(); syncItems.Shows.Add(show); break; case "season": var season = new TraktSeason { Ids = new TraktSeasonId { Trakt = listItem.Season.Ids.Trakt } }; syncItems.Seasons = new List<TraktSeason>(); syncItems.Seasons.Add(season); break; case "episode": var episode = new TraktEpisode { Ids = new TraktEpisodeId { Trakt = listItem.Episode.Ids.Trakt } }; syncItems.Episodes = new List<TraktEpisode>(); syncItems.Episodes.Add(episode); break; case "person": var person = new TraktPerson { Ids = new TraktPersonId { Trakt = listItem.Person.Ids.Trakt } }; syncItems.People = new List<TraktPerson>(); syncItems.People.Add(person); break; } return syncItems; }
public static TraktSyncResponse AddItemsToList(string username, string id, TraktSyncAll items) { var response = PostToTrakt(string.Format(TraktURIs.UserListItemsAdd, username, id), items.ToJSON()); return response.FromJSON<TraktSyncResponse>(); }
public static void AddRemoveShowInUserList(string username, string title, int? year, int? tvdbid, string imdbid, int? tmdbid, int? traktid, bool remove) { if (!GUICommon.CheckLogin(false)) return; GUIBackgroundTask.Instance.ExecuteInBackgroundAndCallback(() => { return TraktLists.GetListsForUser(username); }, delegate(bool success, object result) { if (success) { var customlists = result as IEnumerable<TraktListDetail>; // get slug of lists selected List<int> slugs = TraktLists.GetUserListSelections(customlists.ToList()); if (slugs == null || slugs.Count == 0) return; // add the movie to add/remove to a new sync list var items = new TraktSyncAll { Shows = new List<TraktShow> { new TraktShow { Ids = new TraktShowId { Trakt = traktid, Imdb = imdbid, Tmdb = tmdbid, Tvdb = tvdbid }, Title = title, Year = year } } }; AddRemoveItemInList(slugs, items, remove); } }, Translation.GettingLists, true); }
internal static void AddRemoveSeasonInUserList(TraktSeason season, bool remove) { if (!GUICommon.CheckLogin(false)) return; GUIBackgroundTask.Instance.ExecuteInBackgroundAndCallback(() => { return TraktLists.GetListsForUser(TraktSettings.Username); }, delegate(bool success, object result) { if (success) { var customlists = result as IEnumerable<TraktListDetail>; // get slug of lists selected List<int> slugs = TraktLists.GetUserListSelections(customlists.ToList()); if (slugs == null || slugs.Count == 0) return; // add the movie to add/remove to a new sync list var items = new TraktSyncAll { Seasons = new List<TraktSeason> { new TraktSeason { Ids = new TraktSeasonId { Trakt = season.Ids.Trakt } } } }; AddRemoveItemInList(slugs, items, remove); } }, Translation.GettingLists, true); }
internal static void AddRemoveItemInList(List<int> listIds, TraktSyncAll items, bool remove) { var listThread = new Thread((o) => { foreach (int listId in listIds) { TraktSyncResponse response = null; if (!remove) { response = TraktAPI.TraktAPI.AddItemsToList("me", listId.ToString(), items); } else { response = TraktAPI.TraktAPI.RemoveItemsFromList("me", listId.ToString(), items); } if (response != null) { // clear current items in any lists // list items will be refreshed online if we try to request them TraktLists.ClearItemsInList(TraktSettings.Username, listId); // update MovingPictures Categories and Filters menu if (items.Movies != null && items.Movies.Count > 0 && IsMovingPicturesAvailableAndEnabled) { // we need the name of the list so get list from slug first var userLists = TraktLists.GetListsForUser(TraktSettings.Username); if (userLists == null) continue; // get the list var userList = userLists.FirstOrDefault(l => l.Ids.Trakt == listId); if (userList == null) continue; if (remove) { MovingPictures.RemoveMovieCriteriaFromCustomlistNode(userList.Name, items.Movies.First().Ids.Imdb); } else { MovingPictures.AddMovieCriteriaToCustomlistNode(userList.Name, items.Movies.First().Ids.Imdb); } } } } }) { Name = remove ? "RemoveList" : "AddList", IsBackground = true }; listThread.Start(); }
internal static void AddRemoveItemInList(int listId, TraktSyncAll items, bool remove) { AddRemoveItemInList(new List<int> { listId }, items, remove); }