tweepy:如何检查 alt_text
tweepy: how to check for alt_text
我需要检查给定的推文是否包含 alt_text。
我正在尝试使用 API.get_status
操作,根据 its documentation 包含一个参数以包含 alt_text:
include_ext_alt_text – If alt text has been added to any attached media entities, this parameter will return an ext_alt_text
value in the top-level key for the media entity.
然而,我得到的是:
In [47]: status = api.get_status('1373498941732454402', include_ext_alt_text=True)
In [48]: status.entities['media']
Out[48]:
[{'id': 1373498937332629507,
'id_str': '1373498937332629507',
'indices': [69, 92],
'media_url': 'http://pbs.twimg.com/media/Ew-mAaMWgAMGTRF.jpg',
'media_url_https': 'https://pbs.twimg.com/media/Ew-mAaMWgAMGTRF.jpg',
'url': 'https://short_url.com',
'display_url': 'pic.twitter.com/pZjrWYNESI',
'expanded_url': 'https://twitter.com/rowasc/status/1373498941732454402/photo/1',
'type': 'photo',
'sizes': {'thumb': {'w': 150, 'h': 150, 'resize': 'crop'},
'medium': {'w': 718, 'h': 1200, 'resize': 'fit'},
'small': {'w': 407, 'h': 680, 'resize': 'fit'},
'large': {'w': 1226, 'h': 2048, 'resize': 'fit'}}}]
请注意,没有 ext_alt_text
值。我也没有发现它是状态对象的一部分。但是,当将状态转换为字符串时,会出现以下内容:
In [49]: 'alt_text' in str(status)
Out[49]: True
并且当使用 re
获取字符串中 alt_text
之后的内容时,alt_text 的某些部分开始出现:
In [58]: re.search(r'.{10,15}alt_text.{10,30}', str(status)).group()
Out[58]: " 'fit'}}, 'ext_alt_text': 'Bash looks furious, Shell "
如何获得alt_text?
嗯,在用 pycharm 稍微调试后,我发现 alt_text 在 status.extended_entities['media'][0]['ext_alt_text']
中可用,其中 status = api.get_status('1373498941732454402', include_ext_alt_text=True)
.
当不存在 alt_text 并且 extended_entities
可能不可用时,这可以是 None,因此在访问之前检查它是否存在。
更新
除此之外,出于兼容性原因,一些实际包含图像的推文可能不包含此属性,因此为了确保,API 调用需要一个关于模式的额外参数:
api.get_status('1373498941732454402', include_ext_alt_text=True, tweet_mode="extended")
您可以阅读有关此特定点的更多信息 in this tweepy discussion。
注意:
tweet_mode
is applicable to every Twitter API v1.1 method / endpoint that retrieves Tweets, not just specifically to API.get_status
因此,您还应该检查 this docs for extended tweets
我需要检查给定的推文是否包含 alt_text。
我正在尝试使用 API.get_status
操作,根据 its documentation 包含一个参数以包含 alt_text:
include_ext_alt_text – If alt text has been added to any attached media entities, this parameter will return an
ext_alt_text
value in the top-level key for the media entity.
然而,我得到的是:
In [47]: status = api.get_status('1373498941732454402', include_ext_alt_text=True)
In [48]: status.entities['media']
Out[48]:
[{'id': 1373498937332629507,
'id_str': '1373498937332629507',
'indices': [69, 92],
'media_url': 'http://pbs.twimg.com/media/Ew-mAaMWgAMGTRF.jpg',
'media_url_https': 'https://pbs.twimg.com/media/Ew-mAaMWgAMGTRF.jpg',
'url': 'https://short_url.com',
'display_url': 'pic.twitter.com/pZjrWYNESI',
'expanded_url': 'https://twitter.com/rowasc/status/1373498941732454402/photo/1',
'type': 'photo',
'sizes': {'thumb': {'w': 150, 'h': 150, 'resize': 'crop'},
'medium': {'w': 718, 'h': 1200, 'resize': 'fit'},
'small': {'w': 407, 'h': 680, 'resize': 'fit'},
'large': {'w': 1226, 'h': 2048, 'resize': 'fit'}}}]
请注意,没有 ext_alt_text
值。我也没有发现它是状态对象的一部分。但是,当将状态转换为字符串时,会出现以下内容:
In [49]: 'alt_text' in str(status)
Out[49]: True
并且当使用 re
获取字符串中 alt_text
之后的内容时,alt_text 的某些部分开始出现:
In [58]: re.search(r'.{10,15}alt_text.{10,30}', str(status)).group()
Out[58]: " 'fit'}}, 'ext_alt_text': 'Bash looks furious, Shell "
如何获得alt_text?
嗯,在用 pycharm 稍微调试后,我发现 alt_text 在 status.extended_entities['media'][0]['ext_alt_text']
中可用,其中 status = api.get_status('1373498941732454402', include_ext_alt_text=True)
.
当不存在 alt_text 并且 extended_entities
可能不可用时,这可以是 None,因此在访问之前检查它是否存在。
更新 除此之外,出于兼容性原因,一些实际包含图像的推文可能不包含此属性,因此为了确保,API 调用需要一个关于模式的额外参数:
api.get_status('1373498941732454402', include_ext_alt_text=True, tweet_mode="extended")
您可以阅读有关此特定点的更多信息 in this tweepy discussion。
注意:
tweet_mode
is applicable to every Twitter API v1.1 method / endpoint that retrieves Tweets, not just specifically toAPI.get_status
因此,您还应该检查 this docs for extended tweets