@@ -154,7 +154,9 @@ def pre_filter(self):
154
154
"""
155
155
inner = self ._inner .pre_filter ()
156
156
if inner :
157
- if inner .startswith ('"' ):
157
+ if inner .startswith ('"not=$' ) and inner .endswith ('"' ) and '\\ ' not in inner :
158
+ return inner [6 :- 1 ] # double negation, return inner command
159
+ elif inner .startswith ('"' ):
158
160
inner = '"$' + inner [1 :]
159
161
else :
160
162
inner = '$' + inner
@@ -205,6 +207,8 @@ class FieldFilter(Filter):
205
207
custom_tm_completed = "d.custom=tm_completed" ,
206
208
custom_tm_loaded = "d.custom=tm_loaded" ,
207
209
custom_tm_started = "d.custom=tm_started" ,
210
+
211
+ tagged = "d.custom=tags" ,
208
212
)
209
213
210
214
#active last time a peer was connected
@@ -214,7 +218,6 @@ class FieldFilter(Filter):
214
218
#is_private private flag set (no DHT/PEX)?
215
219
#leechtime time taken from start to completion
216
220
#seedtime total seeding time after completion
217
- #tagged has certain tags? (not related to the 'tagged' view)
218
221
#traits automatic classification of this item (audio, video, tv, movie, etc.)
219
222
#views views this item is attached to
220
223
#xfer transfer rate
@@ -323,6 +326,20 @@ class TaggedAsFilter(FieldFilter):
323
326
of tags.
324
327
"""
325
328
329
+ def pre_filter (self ):
330
+ """ Return rTorrent condition to speed up data transfer.
331
+ """
332
+ if self ._name in self .PRE_FILTER_FIELDS :
333
+ if not self ._value :
334
+ return '"not=${}"' .format (self .PRE_FILTER_FIELDS [self ._name ])
335
+ else :
336
+ val = self ._value
337
+ if self ._exact :
338
+ val = val .copy ().pop ()
339
+ return '"string.contains_i=${},{}"' .format (
340
+ self .PRE_FILTER_FIELDS [self ._name ], val )
341
+ return ''
342
+
326
343
def validate (self ):
327
344
""" Validate filter condition (template method).
328
345
"""
0 commit comments