Gefilte Fish GMail过滤器创建器
项目描述
Gefilte Fish自动化创建GMail过滤器。您使用gefilte的领域特定语言(DSL)编写Python程序,运行程序,然后导入它创建的XML。
Python示例
以下是一个创建过滤器的示例
from gefilte import GefilteFish, GFilter
# Specialize GFilter for repo-specific GitHub notifications.
class GitHubFilter(GFilter):
def repo(self, repo_name):
org, repo = repo_name.split("/")
return self.list_(f"{repo}.{org}.github.com")
# Make the filter-maker and use its DSL. All of the methods of GitHubFilter
# are now usable as global functions.
fish = GefilteFish(GitHubFilter)
with fish.dsl():
# Google's spam moderation messages should never get sent to spam.
with replyto("noreply-spamdigest@google.com"):
never_spam()
mark_important()
# If the subject and body have these, label it "liked".
with subject(exact("[Confluence]")).has(exact("liked this page")):
label("liked")
# We get a lot of notifications from GitHub,
# we'll make a number of filters that apply.
with from_("notifications@github.com"):
# Skip the inbox (archive them).
skip_inbox()
# Notifications from some repos are special.
with repo("myproject/tasks") as f:
label("todo")
with f.elif_(repo("otherproject/something")) as f:
label("otherproject")
with f.else_():
# But everything else goes into "Code reviews".
label("Code reviews")
# Delete annoying bot messages.
with from_("renovate[bot]"):
delete()
# GitHub sends to synthetic addresses to provide information.
with to("author@noreply.github.com"):
label("mine").star()
with has('Merged, "into master"'):
label("merged")
# Data-driven filters. I'm mentoring these people
# on these projects so make sure they get my attention.
for who, where in [
("Joe Junior", "myproject/component1"),
("Francine Firstyear", "myproject/thing2"),
]:
with from_(exact(who)).repo(where):
label("mentee").star().mark_important()
# Some inbound addresses come to me. Mark them so
# I understand what I'm looking at in my inbox.
for toaddr, the_label in [
("info@mycompany.com", "info@"),
("security@mycompany.com", "security@"),
("con2020@mycompany.com", "con20"),
("con2021@mycompany.com", "con21"),
]:
with to(toaddr):
label(the_label)
print(fish.xml())
with子句在嵌套上下文中创建所有封装过滤器都适用的上下文。elif_和else_结构有些笨拙,但比手动创建具有相同效果的过滤器更容易。
安装过滤器
当您运行程序时,它将创建XML输出。将输出保存到文件中。在浏览器中,转到GMail - 设置 - 过滤器和阻止地址。然后“导入过滤器”,“选择文件”,“打开文件”,然后“创建过滤器”。
有关GMail过滤器的更多信息,请参阅 您可以在Gmail中使用的搜索运算符。
许可协议
除非另有说明,否则此存储库中的代码根据Apache软件许可协议2.0许可。有关详细信息,请参阅LICENSE.txt。
变更日志
0.5.1 — 2022-02-23
从输出中删除了不必要的遗留XML元素。
0.5.0 — 2021-03-28
第一个版本。
项目详情
下载文件
下载您平台的文件。如果您不确定该选择哪个,请了解更多关于安装包的信息。
源代码分布
gefilte-0.5.1.tar.gz (8.4 kB 查看哈希值)
构建分布
gefilte-0.5.1-py2.py3-none-any.whl (8.7 kB 查看哈希值)
关闭
gefilte-0.5.1.tar.gz的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 974ec6ad0025280d6574a8f20d313b3ad80aa14c3aab0bff53f821c51e050651 |
|
MD5 | 07d96cc9a4ae172d5a4b57414132b0fc |
|
BLAKE2b-256 | 66aaab9a70254ff38127a46b51f5de2df22538f7d70f20a7e375955585057579 |
关闭
gefilte-0.5.1-py2.py3-none-any.whl的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 8c4d0ac961e29a56a065914dce146d500c9ffbf72db3b50cc09f6c072e901d27 |
|
MD5 | 4883fb529aa85476a335333ba6d4d7c3 |
|
BLAKE2b-256 | cf6ee1e8d697210bc583975213ce6c18047d4696c673bbcd8fd31f0a652b5af1 |