Ejemplo n.º 1
0
        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;
        }
Ejemplo n.º 2
0
        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;
        }