You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Tweepy StreamingClient遇track参数报错,求关键词过滤规则编写帮助

解决Tweepy StreamingClient不支持track参数的关键词过滤问题

你遇到的Unexpected parameter: track报错,核心原因是Tweepy的StreamingClient是为Twitter API v2设计的,而track是旧版API v1.1的参数。API v2改用规则系统实现推文过滤,必须通过add_rules()方法定义过滤条件,不能直接在filter()里传track参数。

修改后的完整代码

import boto3
import json
import os
import tweepy
import uuid

bearer_token = os.environ['BEARER_TOKEN']

kinesis_stream_name = 'kds-twitter'
twitter_filter_tag = 'Amazon'


class StreamingTweets(tweepy.StreamingClient):
    def on_status(self, status):
        data = {
            'tweet_text': status.text,
            'created_at': str(status.created_at),
            'user_id': status.user.id,
            'user_name': status.user.name,
            'user_screen_name': status.user.screen_name,
            'user_description': status.user.description,
            'user_location': status.user.location,
            'user_followers_count': status.user.followers_count,
            'tweet_body': json.dumps(status._json)
        }

        response = kinesis_client.put_record(
            StreamName=kinesis_stream_name,
            Data=json.dumps(data),
            PartitionKey=partition_key)

        print('Status: ' +
              json.dumps(response['ResponseMetadata']['HTTPStatusCode']))

    def on_error(self, status):
        print(status)


session = boto3.Session()
kinesis_client = session.client('kinesis')
partition_key = str(uuid.uuid4())

stream = StreamingTweets(bearer_token)

# 可选:清除已存在的规则,避免重复过滤
existing_rules = stream.get_rules()
if existing_rules.data:
    rule_ids = [rule.id for rule in existing_rules.data]
    stream.delete_rules(rule_ids)

# 添加关键词过滤规则
stream.add_rules(tweepy.StreamRule(twitter_filter_tag))

# 启动流(无需传track参数)
stream.filter()

关键修改说明

  • 规则创建:用tweepy.StreamRule定义过滤规则,这是API v2的标准方式
  • 规则语法:twitter_filter_tag作为规则值,默认匹配包含该关键词的推文(大小写不敏感)。如果需要复杂规则:
    • 精确匹配短语:用双引号包裹,比如'"Amazon Web Services"'
    • 排除特定内容:用-前缀,比如"Amazon -AWS"
    • 匹配话题:用#前缀,比如"#Amazon"
  • 清理旧规则:启动流前删除已有规则,避免重复接收相同条件的推文(可选但推荐)
  • 启动流:直接调用stream.filter()即可,无需额外参数

内容的提问来源于stack exchange,提问作者Niithiyn Vijeaswaran

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.25 17:48:08