Сокращенные твиты сообщений - PullRequest
1 голос
/ 19 апреля 2020

Пожалуйста!

Я получаю твиты от LinqToTwitter, и некоторые твиты, кажется, имеют усеченный текст, а часть текста сопровождается многоточием. В некоторых случаях критерии поиска не возвращаются в тексте, как это представляется в незаработанной части сообщения. Вот так? Есть ли способ получить эту недостающую часть сообщения? Я уже посмотрел другие посты, но не мог понять, какой параметр позволяет получить полный текст. Я использую linqToTwitter версии 4.1.0.

Спасибо

 Dim twitterCtx As TwitterContext = New TwitterContext(twAuth)

 Dim Response As Search = Await (From search In twitterCtx.Search()
                                    Where search.Type = SearchType.Search _
                                    AndAlso search.SearchLanguage = "pt" _
                                    AndAlso search.Query = "Coronavirus").SingleOrDefaultAsync()

 Dim tweets As List(Of Status) = Response.Statuses()

 If Response IsNot Nothing AndAlso Response.Statuses IsNot Nothing Then
    For Each str As Status In tweets
        Console.WriteLine(str.StatusID.ToString() + " " + str.Text)
    Next
 End If

1 Ответ

1 голос
/ 19 апреля 2020

Когда Твиттер расширил твиты с 140 до 280 символов, им нужно было добавить поддержку в API. Это называется Extended Mode, и вам нужно добавить новый фильтр к вашему запросу LINQ, например:

Dim Response As Search = Await (From search In twitterCtx.Search()
                                Where search.Type = SearchType.Search _
                                AndAlso search.SearchLanguage = "pt" _
                                AndAlso search.TweetMode = TweetMode.Extended _
                                AndAlso search.Query = "Coronavirus").SingleOrDefaultAsync()

Обратите внимание на свойство search.TweetMode. Я присвоил ему перечисление TweetMode.Extended, что означает, что теперь вы получаете полные 280 символов.

Сделав это, вы можете просмотреть свойство Text и удивиться, увидев Nothing. Это потому, что теперь текст твита находится в свойстве FullText, и вы можете прочитать его так:

Dim tweets As List(Of Status) = Response.Statuses()

If Response IsNot Nothing AndAlso Response.Statuses IsNot Nothing Then
    For Each str As Status In tweets
        Console.WriteLine(str.StatusID.ToString() + " " + str.FullText)
    Next
End If
...