Твиты, возвращенные twitteR, укорачиваются.

Я использую пакет twitteR для R для сбора твитов. Однако я заметил, что текст твита, возвращаемый функцией searchTwitter, не является полным текстом твита, а сокращен до ровно 140 символов, а остальная часть текста заменена ссылкой на твит в Интернете.

Используя твит, который я нашел для примера:

require(twitteR)
require(ROAuth)

# authorize twitter with consmuer and access key/secret
setup_twitter_oauth(AAA, BBB, CCC, DDD)   # actual secret codes go here...

# get sample tweet
tweet <- searchTwitter("When I was driving around earlier this afternoon I only saw two Hunters",
                       n=500,
                       since = "2017-11-04",
                       until = "2017-11-05",
                       retryOnRateLimit=5000)

# print tweet
tweet[[1]]
[1] "_TooCrazyFox_: When I was driving around earlier this afternoon I only saw two Hunters but it was during the midday break. I didn'… *SHORTENEDURL*"
# the *SHORTENEDURL* is actually a link that brings you to the tweet; stackoverflow didn't want me to a put shortened urls in here

# convert to data frame
df <- twListToDF(tweet)

# output text and ID
df$text
[1] "When I was driving around earlier this afternoon I only saw two Hunters but it was during the midday break. I didn'… *SHORTENEDURL*"

df$id
[1] "926943636641763328"

Если я открою этот твит через веб-браузер, станет ясно, что twitteR сократил текст до 140 символов и содержал ссылку на твит, содержащий весь текст.

Я не вижу упоминания об этом в документации twitteR. Есть ли способ сохранить весь текст твита во время поиска?

Я предполагаю, что это связано с изменением длины символов в Твиттере, как указано здесь: https://developer.twitter.com/en/docs/tweets/tweet-updates (в режиме «Отображение JSON в режиме совместимости»). Это означает, что мне нужно получить поле full_text, а не поле text. Однако, похоже, это не предоставлено twitteR.


person Sam Zipper    schedule 05.11.2017    source источник
comment
Когда вы нажимаете SHORTEURL, происходит ли перенаправление на твит?   -  person Henry Navarro    schedule 06.11.2017
comment
@HenryNavarro Вы правы, это так.   -  person Sam Zipper    schedule 06.11.2017


Ответы (1)


Пакет устаревает. Вместо этого следует использовать rtweet.

Вы можете загрузить rtweet из CRAN, но в настоящее время я рекомендую скачать версию для разработчиков с Гитхаба. Версия для разработчиков по умолчанию возвращает полный текст твитов. Он также вернет текст полного исходного текста ретвитов или цитируемых статусов.

Чтобы установить самую последнюю версию rtweet с Github, используйте пакет devtools.

## install newest version of rtweet
if (!requireNamespace("devtools", quietly = TRUE)) {
  install.packages("devtools")
}
devtools::install_github("mkearney/rtweet")

После установки загрузите пакет rtweet.

## load rtweet
library(rtweet)

У rtweet есть специальный веб-сайт с документацией по пакетам. Он включает в себя виньетку по получению и использованию маркеров доступа Twitter API. Если вы будете следовать шагам, описанным в виньетке, вам нужно будет пройти процесс авторизации только один раз [для каждой машины].

Для поиска твитов используйте функцию search_tweets().

# get sample tweet
rt <- search_tweets(
  "When I was driving around earlier this afternoon I only saw two Hunters",
  n = 500
)

Вывод на печать (табличный фрейм данных).

> rt
# A tibble: 1 x 42
           status_id          created_at    user_id   screen_name
               <chr>              <dttm>      <chr>         <chr>
1 926943636641763328 2017-11-04 22:45:59 3652909394 _TooCrazyFox_
# ... with 38 more variables: text <chr>, source <chr>,
#   reply_to_status_id <chr>, reply_to_user_id <chr>,
#   reply_to_screen_name <chr>, is_quote <lgl>, is_retweet <lgl>,
#   favorite_count <int>, retweet_count <int>, hashtags <list>, symbols <list>,
#   urls_url <list>, urls_t.co <list>, urls_expanded_url <list>,
#   media_url <list>, media_t.co <list>, media_expanded_url <list>,
#   media_type <list>, ext_media_url <list>, ext_media_t.co <list>,
#   ext_media_expanded_url <list>, ext_media_type <lgl>,
#   mentions_user_id <list>, mentions_screen_name <list>, lang <chr>,
#   quoted_status_id <chr>, quoted_text <chr>, retweet_status_id <chr>,
#   retweet_text <chr>, place_url <chr>, place_name <chr>,
#   place_full_name <chr>, place_type <chr>, country <chr>, country_code <chr>,
#   geo_coords <list>, coords_coords <list>, bbox_coords <list>

Распечатать текст твита (полный текст).

> rt$text
[1] "When I was driving around earlier this afternoon I only saw two Hunters but it was during the midday break. I didn't have my camera otherwise I would have taken some photos of the standing corn fields in the snow. I'll do it later., maybe tomorrow.\n#harvest17"

Для поиска статусов Twitter по идентификатору используйте функцию lookup_statuses().

## lookup tweet
tweet <- lookup_statuses("926943636641763328")

Распечатать текст твита.

> tweet$text
[1] "When I was driving around earlier this afternoon I only saw two Hunters but it was during the midday break. I didn't have my camera otherwise I would have taken some photos of the standing corn fields in the snow. I'll do it later., maybe tomorrow.\n#harvest17"
person mkearney    schedule 06.11.2017
comment
спасибо за новый и улучшенный пакет! Я тестировал его и кажется довольно простым перевести мой существующий код на rtweets. Просто чтобы подтвердить, нет эквивалента since и until, которые позволяют искать определенный диапазон дат? Ничего не видел в документации/виньетках, но решил перепроверить. - person Sam Zipper; 07.11.2017
comment
Вы можете включить эти параметры в фактический запрос. Например, sarch_tweets("driving around earlier since:2017-11-01 until:2017-11-06", n = 100). Недавно я обновил много документации. Я, вероятно, должен привести несколько примеров, подобных этому :). - person mkearney; 07.11.2017