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; }
public TorrentFileItem( TorrentItem torrent, int index, TorrentDirectoryItem parent, string name, TransmissionAPI.TorrentFileInfo info ) { _torrent = torrent; _index = index; _parent = parent; _name = name; _size = info.Length; _downloaded = info.BytesCompleted; _wanted = info.Wanted; _priority = info.Priority; }
public PriorityItem(TransmissionAPI.FilePriority value, string name, string icon) { _value = value; _name = name; _icon = icon; }