swift Twitter API文本字段值被截断

kzmpq1sx  于 2023-02-28  发布在  Swift
关注(0)|答案(3)|浏览(125)

为什么文本字段的值被截断,我如何才能得到完整的值。截至目前,我试图得到文本字段的值如下

do {
       if let responseObject = try NSJSONSerialization.JSONObjectWithData(response, options: []) as? [String:AnyObject],
           arrayStatuses = responseObject["statuses"] as? [[String:AnyObject]] {
               let arrTweets:NSMutableArray = NSMutableArray()
               for status in arrayStatuses {
                   let text = status["text"]!
                   print(status["text"]!)
               }
       }
}

输出为

实时@WarfareWW:#俄罗斯/#印度可能会在今年年底举行苏-30MKI与海/地面目标的布拉莫斯巡航导弹发射。
三个点在行尾。我需要打印完整的文本没有截断。
Twitter示例搜索结果JSON数据

{
      "created_at": "Mon Aug 01 08:07:43 +0000 2016",
      "id": 760024194079916032,
      "id_str": "760024194079916032",
      "text": "RT @khalidasopore: #KEXIT #KASHEXIT #KashmirKillings #Inida #Pakistan Just trend it my dear Indians to save #Kashmir from Pak Goons https:/…",
      "truncated": false
}
hc8w905p

hc8w905p1#

Twitter API最近进行了更改,以支持有关280个字符限制的新规则。
1.要获取tweet的全文,请将值为extended的参数tweet_mode添加到请求参数中。

  1. JSON响应中的字段text已替换为full_text
    更多信息:https://dev.twitter.com/overview/api/upcoming-changes-to-tweets
kt06eoxx

kt06eoxx2#

本例中的状态是一个转发,即使包含tweet_mode=extended,转发的文本也会被截断为140个字符,原始tweet的完整文本位于JSON响应的retweeted_status字段中。
let text = status["retweeted_status"]["full_text"].
请记住,您仍应在请求中包含tweet_mode=extended

f0brbegy

f0brbegy3#

这对我很有效!

tweets = api.search_tweets(q=search_term, tweet_mode='extended', count=tweet_amount)

for tweet in tweets:
    # check if the tweet is a retweet
    if tweet.full_text.startswith('RT @'):
    # if the tweet is a retweet, use the retweeted_status attribute
        full_text = tweet.retweeted_status.full_text
    else:
        full_text = tweet.full_text

相关问题