Various filter fixes
This commit is contained in:
parent
8b7c381870
commit
0274bbe186
|
@ -1,7 +1,7 @@
|
||||||
from typing import List
|
from typing import List
|
||||||
|
|
||||||
from mastoposter.types import Status
|
from mastoposter.types import Status
|
||||||
from .base import FilterInstance # NOQA
|
from .base import FilterInstance
|
||||||
from mastoposter.filters.boost import BoostFilter # NOQA
|
from mastoposter.filters.boost import BoostFilter # NOQA
|
||||||
from mastoposter.filters.combined import CombinedFilter # NOQA
|
from mastoposter.filters.combined import CombinedFilter # NOQA
|
||||||
from mastoposter.filters.mention import MentionFilter # NOQA
|
from mastoposter.filters.mention import MentionFilter # NOQA
|
||||||
|
|
|
@ -10,7 +10,7 @@ class BoostFilter(BaseFilter, filter_name="boost"):
|
||||||
self.list = section.get("list", "").split()
|
self.list = section.get("list", "").split()
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def check_account(cls, acct: str, mask: str):
|
def check_account(cls, acct: str, mask: str) -> bool:
|
||||||
return fnmatch(acct, mask)
|
return fnmatch(acct, mask)
|
||||||
|
|
||||||
def __call__(self, status: Status) -> bool:
|
def __call__(self, status: Status) -> bool:
|
||||||
|
@ -20,7 +20,7 @@ class BoostFilter(BaseFilter, filter_name="boost"):
|
||||||
return True
|
return True
|
||||||
return any(
|
return any(
|
||||||
[
|
[
|
||||||
self.check_account(status.reblog.account.acct, mask)
|
self.check_account("@" + status.reblog.account.acct, mask)
|
||||||
for mask in self.list
|
for mask in self.list
|
||||||
]
|
]
|
||||||
)
|
)
|
||||||
|
|
|
@ -14,8 +14,8 @@ class MentionFilter(BaseFilter, filter_name="mention"):
|
||||||
self.list = section.get("list", "").split()
|
self.list = section.get("list", "").split()
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def check_account(cls, acct: str, mask: str):
|
def check_account(cls, acct: str, mask: str) -> bool:
|
||||||
return fnmatch(acct, mask)
|
return fnmatch("@" + acct, mask)
|
||||||
|
|
||||||
def __call__(self, status: Status) -> bool:
|
def __call__(self, status: Status) -> bool:
|
||||||
if not self.list and status.mentions:
|
if not self.list and status.mentions:
|
||||||
|
|
|
@ -7,7 +7,7 @@ from mastoposter.types import Status
|
||||||
class SpoilerFilter(BaseFilter, filter_name="spoiler"):
|
class SpoilerFilter(BaseFilter, filter_name="spoiler"):
|
||||||
def __init__(self, section: SectionProxy):
|
def __init__(self, section: SectionProxy):
|
||||||
super().__init__(section)
|
super().__init__(section)
|
||||||
self.regexp: Pattern = regexp(section["regexp"])
|
self.regexp: Pattern = regexp(section.get("regexp", "^.*$"))
|
||||||
|
|
||||||
def __call__(self, status: Status) -> bool:
|
def __call__(self, status: Status) -> bool:
|
||||||
return self.regexp.match(status.spoiler_text) is not None
|
return self.regexp.match(status.spoiler_text) is not None
|
||||||
|
|
|
@ -16,7 +16,7 @@ class TextFilter(BaseFilter, filter_name="content"):
|
||||||
|
|
||||||
if self.mode == "regexp":
|
if self.mode == "regexp":
|
||||||
self.regexp = regexp(section["regexp"])
|
self.regexp = regexp(section["regexp"])
|
||||||
elif self.mode == "hashtag":
|
elif self.mode in ("hashtag", "tag"):
|
||||||
self.tags = set(section["tags"].split())
|
self.tags = set(section["tags"].split())
|
||||||
else:
|
else:
|
||||||
raise ValueError(f"Invalid filter mode {self.mode}")
|
raise ValueError(f"Invalid filter mode {self.mode}")
|
||||||
|
@ -46,6 +46,7 @@ class TextFilter(BaseFilter, filter_name="content"):
|
||||||
is not None
|
is not None
|
||||||
)
|
)
|
||||||
elif self.tags:
|
elif self.tags:
|
||||||
|
print(f"{self.tags=} {source.tags=}")
|
||||||
return len(self.tags & {t.name for t in source.tags}) > 0
|
return len(self.tags & {t.name for t in source.tags}) > 0
|
||||||
else:
|
else:
|
||||||
raise ValueError("Neither regexp or tags were set. Why?")
|
raise ValueError("Neither regexp or tags were set. Why?")
|
||||||
|
|
Loading…
Reference in New Issue