为啥twitter API在文本末尾添加url

Posted

技术标签:

【中文标题】为啥twitter API在文本末尾添加url【英文标题】:Why does twitter API add url at the end of the text为什么twitter API在文本末尾添加url 【发布时间】:2020-10-13 23:41:09 【问题描述】:

使用 twitter API 获取推文信息时,返回的 textfull_text 字段会在文本末尾附加一个 URL。例如:

    "full_text": "Just another Extended Tweet with more than 140 characters, generated as a documentation example, showing that [\"truncated\": true] and the presence of an \"extended_tweet\" object with complete text and \"entities\" #documentation #parsingJSON #GeoTagged https://twitter.com/FloodSocial/status/994633657141813248"

https://twitter.com/FloodSocial/status/994633657141813248 附加在末尾(附加的 url 实际上是一个缩短的 url,但 *** 不允许在正文中使用缩短的 url,所以我只是用完整的 URL 替换它)。为什么 API 会添加这个,有没有办法在没有添加 URL 的情况下获取文本?

【问题讨论】:

【参考方案1】:

您使用的是正确的 Twitter gem 吗?使用gem install twitter 并设置客户端according to the docs,您应该能够通过其ID 获取推文/状态。但是,无论您使用什么示例,都无法显示您是如何获得全文的

text = client.status('994633657141813248').text
=>"Just another Extended Tweet with more than 140 characters, generated as a documentation example, showing that https://twitter.com/FloodSocial/status/994633657141813248"

url 被截断为纯字符串,所以不确定你甚至做了什么来得到你制定的字符串。

但是如果你有一些嵌入了 url 的长字符串,你可以这样做

text.split(/\shttp?s/).first

【讨论】:

我使用client.status(id, tweet_mode: "extended")。扩展的有效载荷有 full_text 它。这里有更多信息:developer.twitter.com/en/docs/tweets/tweet-updates【参考方案2】:

这看起来像是包含原始推文 URL 的引用推文?

[编辑 - 我对上述说法有误]

我明白发生了什么。原始推文链接到 Twitter 上的图像(https://twitter.com/FloodSocial/status/994633657141813248/photo/1,通过缩短的 tco 链接)。 Twitter 在呈现的推文中隐藏图像 URL,但在文本正文中返回它。这是这种情况下的预期行为。您还可以在推文数据的extended_entities 段中看到解析出的链接,以及推文同一区域中的图像数据本身。如果您想从文本数据中省略 URL,则需要自己修剪。

【讨论】:

原推文中没有网址。该 URL 被添加到 twitter gem 返回的负载中。

以上是关于为啥twitter API在文本末尾添加url的主要内容,如果未能解决你的问题,请参考以下文章

为啥 twitter 的 API 会返回垃圾(有时)?

为啥 getOAuthAccessToken 方法总是在 twitter4j api 中触发异常?

为啥http post响应在响应末尾添加随机字符

Twitter api 文本字段值被截断

Vim 为啥要在文件末尾添加新行?

为啥我们需要在 C 中的字符数组末尾添加一个'\0'(null)?