예제 #1
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;
        }
예제 #2
0
        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;
        }
예제 #3
0
 public PriorityItem(TransmissionAPI.FilePriority value, string name, string icon)
 {
     _value = value;
     _name  = name;
     _icon  = icon;
 }