InstaPy 如何用 set_dont_like 按标签规则排除帖子?
2026/9/14 6:53:55 网站建设 项目流程

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_likeInstaPysession 对象的方法(实现见 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
无前缀匹配包含该词的任意位置 hashtagcat匹配#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)。因此验证方法是:

  1. 配置好set_dont_like后运行一个小的like_by_tags任务(如amount=10);
  2. 在日志中找到Description:行,确认目标帖子的描述里确实含有被排除的标签;
  3. 确认该帖子出现在 “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),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询