InstaPy 如何用 set_dont_like 按标签规则排除帖子?
【免费下载链接】InstaPy📷 Instagram Bot - Tool for automated Instagram interactions项目地址: https://gitcode.com/GitHub_Trending/in/InstaPy
当 InstaPy 按标签(hashtag)批量互动时,经常遇到不想点赞的帖子——文案里挂着竞品、敏感或无关标签。session.set_dont_like就是用来做这种排除的:InstaPy 会检查帖子的描述和发布者(owner)评论中的 hashtag,只要命中你配置的排除规则,该帖子就不会被点赞。整个过程只改一行配置代码,配合like_by_tags等互动动作即可生效。
配置位置:在 session 上调用 set_dont_like
set_dont_like是InstaPysession 对象的方法(实现见 instapy/instapy.py),参数是一个字符串列表,按正常流程创建并登录 session 之后调用即可(安装与登录流程见 docs/home.md)。文档中的标准示例(出自 docs/settings.md “Restricting Likes” 一节):
session.set_dont_like(['#exactmatch', '[startswith', ']endswith', 'broadmatch'])注意参数必须是list类型。源码中对非 list 输入会打印警告Unable to use your set_dont_like configuration!并把 session 置为中止状态,后续配置调用会直接失效。
另外,如果你完全不配置,InstaPy 也有默认排除列表["sex", "nsfw"](见 instapy/instapy.py)。调用set_dont_like时传入的是替换后的完整列表,而不是追加,想保留默认项需要自己一并写上。
四种标签匹配规则
set_dont_like列表中每个字符串的写法决定匹配方式,共 4 种(文档原文示例):
| 写法 | 规则 | 文档示例 |
|---|---|---|
#开头 | 只匹配完全相同的 hashtag | #cat匹配#cat,不匹配#catpic |
[开头 | 匹配以该词开头的所有 hashtag | [cat匹配#catpic、#caturday |
]开头 | 匹配以该词结尾的所有 hashtag | ]cat匹配#mycat、#instacat |
| 无前缀 | 匹配包含该词的任意位置 hashtag | cat匹配#cat、#mycat、#caturday、#rainingcatsanddogs |
四种规则可以混在同一个列表里。比如只想排除完全等于#giveaway的帖子、同时排除一切以#promo开头的标签,可以写成:
session.set_dont_like(['#giveaway', '[promo'])排除规则的检查范围与生效范围
理解排除逻辑的边界,主要来自 docs/settings.md 的说明:
- 检查文本:
.set_dont_like搜索的是帖子描述(description)和发布者评论(owner comments)中的 hashtag,命中其中任意一条规则就跳过该图片的点赞。 - 只影响点赞:源码 docstring 明确写的是 “the image won't be liked but user still might be unfollowed”——帖子不会被赞,但该用户仍可能因其他动作(如取关)被处理。
- 匹配实现:运行时每条规则会被编译成正则表达式再对帖子文本做匹配(instapy/like_util.py),例如
#cat会被处理为必须独占一个 hashtag 的完整词,避免误伤#catpic这类包含关系。
一个实际可用的组合示例,按标签点赞的同时排除敏感与竞品标签:
session.set_dont_like(['[nsfw', 'giveaway', '#compete', 'promo2024']) session.like_by_tags(['natgeo', 'world'], amount=10)like_by_tags的用法与参数见 docs/actions.md。
可选:用 set_ignore_if_contains 反向放行
如果排除规则误伤了某些你想保留的帖子,set_ignore_if_contains可以在描述包含指定词时直接放行、忽略 dont_like 判断(docs/settings.md “Ignoring Restrictions” 一节):
# will ignore the don't like if the description contains # one of the given words session.set_ignore_if_contains(['glutenfree', 'french', 'tasty'])源码中该检查发生在 dont_like 匹配之前(instapy/like_util.py):描述命中任一放行词时,后续 dont_like 规则不会再触发。
运行后如何确认排除生效
运行 session 观察日志即可判断。check_link在检查每张帖子时会打印Image from:、Image link:、Description:三行信息;当描述命中排除规则时,帖子会以Inappropriate! ~ contains "..."的标记被判为不适宜并跳过(消息格式见 instapy/like_util.py)。因此验证方法是:
- 配置好
set_dont_like后运行一个小的like_by_tags任务(如amount=10); - 在日志中找到
Description:行,确认目标帖子的描述里确实含有被排除的标签; - 确认该帖子出现在 “Inappropriate” 类提示中、且没有被点赞,而同类但未命中标签的帖子正常被互动。
两个容易踩的坑:传入的排除列表不是list会直接中止整个 session(见开头的警告日志);排除列表是整体替换,配置后原有的默认排除项["sex", "nsfw"]不再存在,需要保留时自行写入列表。
限制
set_dont_like只解决“帖子含指定标签时不点赞”这一件事;如果目的是完全不与某些用户互动,应使用set_ignore_users(按用户名)等其它设置。- 检查范围限定在帖子描述与发布者评论中的 hashtag,位置(location)文字不参与 dont_like 匹配。
- 该配置不阻止取关动作,命中排除帖子的用户仍可能出现在 unfollow 流程中。
【免费下载链接】InstaPy📷 Instagram Bot - Tool for automated Instagram interactions项目地址: https://gitcode.com/GitHub_Trending/in/InstaPy
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考