public override IEnumerable <Item> Perform(IEnumerable <Item> items, IEnumerable <Item> modItems) { TransmissionAPI api = TransmissionPlugin.getTransmission(); // Operation is common for all files. TransmissionAPI.FileOperation operation = new TransmissionAPI.FileOperation(true, null); // Group selected items by owner torrent. var files_by_torrent = items .Cast <ITorrentEntry>() .GroupBy( item => item.Torrent, (torrent, entries) => new { Torrent = torrent, Files = entries.SelectMany(entry => entry.GetFiles()) } ); // Perform action for each torrent separately. foreach (var group in files_by_torrent) { var operations = group.Files.ToDictionary(f => f.Index, f => operation); api.SetTorrent(group.Torrent.HashString, null, null, null, null, null, operations); } yield break; }
public override IEnumerable <Item> Perform(IEnumerable <Item> items, IEnumerable <Item> modItems) { TransmissionAPI.FilePriority priority = (modItems.First() as PriorityItem).Value; TransmissionAPI.FileOperation operation = new TransmissionAPI.FileOperation(null, priority); // Group torrent entries by torrent. var files_by_torrent = items .Cast <ITorrentEntry>() .GroupBy( item => item.Torrent, (torrent, entries) => new { Torrent = torrent, Files = entries.SelectMany(entry => entry.GetFiles()) } ); TransmissionAPI api = TransmissionPlugin.getTransmission(); // Expand entries for each torrent into set of torrent file entries. // Perform action for each torrent separately. foreach (var group in files_by_torrent) { var operations = group.Files.ToDictionary(f => f.Index, f => operation); api.SetTorrent(group.Torrent.HashString, null, null, null, null, null, operations); } yield break; }