mirror of
https://github.com/instaloader/instaloader.git
synced 2024-11-04 09:22:29 +01:00
Support datetime objects in filter strings
Now --only-if="date_utc<datetime(2018,1,1,hour=12)" is possible.
This commit is contained in:
parent
7d2830b8b2
commit
57ce51d4ef
@ -1,6 +1,7 @@
|
||||
"""Download pictures (or videos) along with their captions and other metadata from Instagram."""
|
||||
|
||||
import ast
|
||||
import datetime
|
||||
import os
|
||||
import sys
|
||||
from argparse import ArgumentParser, SUPPRESS
|
||||
@ -35,6 +36,8 @@ def filterstr_to_filterfunc(filter_str: str, item_type: type):
|
||||
# pylint:disable=no-self-use
|
||||
if not isinstance(node.ctx, ast.Load):
|
||||
raise InvalidArgumentException("Invalid filter: Modifying variables ({}) not allowed.".format(node.id))
|
||||
if node.id == "datetime":
|
||||
return node
|
||||
if not hasattr(item_type, node.id):
|
||||
raise InvalidArgumentException("Invalid filter: {} not a {} attribute.".format(node.id,
|
||||
item_type.__name__))
|
||||
@ -48,7 +51,7 @@ def filterstr_to_filterfunc(filter_str: str, item_type: type):
|
||||
|
||||
def filterfunc(item) -> bool:
|
||||
# pylint:disable=eval-used
|
||||
return bool(eval(compiled_filter, {'item': item}))
|
||||
return bool(eval(compiled_filter, {'item': item, 'datetime': datetime.datetime}))
|
||||
|
||||
return filterfunc
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user