simdjson_parse <- function(x, json_pointer = "",
int64 = c("auto", "integer64", "string", "double"),
error_on_bad_parse = TRUE) {
int64 <- match.arg(int64, c("auto", "integer64", "string", "double"))
if (int64 %in% c("auto", "integer64")) {
bit64_available <- requireNamespace("bit64", quietly = TRUE)
if (int64 == "integer64" && !bit64_available) {
stop('`int64` set to `"integer64"`, but {bit64} is not installed.')
}
if (bit64_available) { # int64_t as bit64::integer64
out <- .parse_json_impl(
json = x, json_pointer,
bit64_integer64 = TRUE, int_64_strings = FALSE,
error_on_bad_parse = error_on_bad_parse
)
} else {
int64 = "string"
}
}
if (int64 == "string") { # int64_t as character
out <- .parse_json_impl(
json = x, json_pointer,
bit64_integer64 = FALSE, int_64_strings = TRUE,
error_on_bad_parse = error_on_bad_parse
)
} else { # int64_t as double
out <- .parse_json_impl(
json = x, json_pointer,
bit64_integer64 = FALSE, int_64_strings = FALSE,
error_on_bad_parse = error_on_bad_parse
)
}
if (length(out) > 1L) out else out[[1L]]
}
## list()
## named list()
simdjson_parse('{"simd":["j","s","o","n"]}')
## $simd
## $simd[[1]]
## [1] "j"
##
## $simd[[2]]
## [1] "s"
##
## $simd[[3]]
## [1] "o"
##
## $simd[[4]]
## [1] "n"
simdjson_parse(c("bad_json", '{"good_json":true}'))
## Error in .parse_json_impl(json = x, json_pointer, bit64_integer64 = TRUE, : parse error
simdjson_parse(c("bad_json", '{"good_json":true}'), error_on_bad_parse = FALSE)
## Warning in .parse_json_impl(json = x, json_pointer, bit64_integer64 = TRUE, :
## parse error
## [[1]]
## NULL
##
## [[2]]
## [[2]]$good_json
## [1] TRUE
simdjson_parse('{"ints":[1,2,3]}')
## $ints
## $ints[[1]]
## [1] 1
##
## $ints[[2]]
## [1] 2
##
## $ints[[3]]
## [1] 3
is.integer(unlist(simdjson_parse('{"ints":[1,2,3]}')))
## [1] TRUE
simdjson_parse('{"big_int":1178007955838509057}')
## $big_int
## integer64
## [1] 1178007955838509057
simdjson_parse('{"big_int":2356015911677018114}', int64 = "string")
## $big_int
## [1] "2356015911677018114"
simdjson_parse('{"big_int":3534023867515527171}', int64 = "double")
## $big_int
## [1] 3.534024e+18
simdjson_parse(
'{"big_ints":[{"a":1178007955838509057,"b":2356015911677018114,"c":[2356015911677018114,4712031823354036228]}]}',
json_pointer = "big_ints/0/c/1"
)
## integer64
## [1] 4712031823354036228
tweet_json <- readr::read_lines("../tweetio/inst/example-data/ufc-tweet-stream.json")
test_json <- tweet_json[vapply(tweet_json, jsonlite::validate, logical(1L))]
length(test_json)
## [1] 100000
library(jsonlite)
# library(jsonify, warn.conflicts = FALSE)
bench::mark(
simdjson = simdjson <- simdjson_parse(test_json),
fairer_simdjson = fairer_simdjson <- lapply(test_json, simdjson_parse)
# jsonify = jsonify <- lapply(test_json, from_json, simplify = FALSE) # sefgaults when knitting...?
,
jsonlite = jsonlite <- lapply(test_json, parse_json)
,
check = FALSE
)
## Warning: Some expressions had a GC in every iteration; so filtering is disabled.
## # A tibble: 3 x 6
## expression min median `itr/sec` mem_alloc `gc/sec`
## <bch:expr> <bch:tm> <bch:tm> <dbl> <bch:byt> <dbl>
## 1 simdjson 6.85s 6.85s 0.146 243MB 0.146
## 2 fairer_simdjson 11.02s 11.02s 0.0907 474MB 0.0907
## 3 jsonlite 41.89s 41.89s 0.0239 234MB 0.0239
simdjson[[200]]$entities$user_mentions[[1]][c("id", "id_str", "indices")]
## $id
## integer64
## [1] 3230043854
##
## $id_str
## [1] "3230043854"
##
## $indices
## $indices[[1]]
## [1] 3
##
## $indices[[2]]
## [1] 14
# jsonify[[200]]$entities$user_mentions[[1]][c("id", "id_str", "indices")]
jsonlite[[200]]$entities$user_mentions[[1]][c("id", "id_str", "indices")]
## $id
## [1] 3230043854
##
## $id_str
## [1] "3230043854"
##
## $indices
## $indices[[1]]
## [1] 3
##
## $indices[[2]]
## [1] 14
json_example <- test_json[[200]]
simdjson_parse(json_example, json_pointer = "entities/user_mentions/0/id")
## integer64
## [1] 3230043854
simdjson_parse(json_example, json_pointer = "entities/user_mentions/0/id", int64 = "string")
## [1] "3230043854"
simdjson_parse(json_example, json_pointer = "entities/user_mentions/0/id_str")
## [1] "3230043854"
simdjson_parse(json_example)
## $created_at
## [1] "Sun Nov 03 04:36:42 +0000 2019"
##
## $id
## integer64
## [1] 1190850263894151168
##
## $id_str
## [1] "1190850263894151168"
##
## $text
## [1] "RT @LordBalvin: How to open a fight lmfao #UFC244 https://t.co/kL2gLu6yGl"
##
## $source
## [1] "<a href=\"http://twitter.com/download/iphone\" rel=\"nofollow\">Twitter for iPhone</a>"
##
## $truncated
## [1] FALSE
##
## $in_reply_to_status_id
## NULL
##
## $in_reply_to_status_id_str
## NULL
##
## $in_reply_to_user_id
## NULL
##
## $in_reply_to_user_id_str
## NULL
##
## $in_reply_to_screen_name
## NULL
##
## $user
## $user$id
## [1] 265121424
##
## $user$id_str
## [1] "265121424"
##
## $user$name
## [1] "AJ The Juiceman"
##
## $user$screen_name
## [1] "xPhenomenal1"
##
## $user$location
## [1] "Grove Street "
##
## $user$url
## [1] "http://www.youtube.com/user/402Phenomenal402?feature=mhee"
##
## $user$description
## [1] "Sneakerhead,fan of @CMPunk and often confused with Tim Duncan and Drake, Straight edge Nigga #PMA daily, Lovable Asshole, sarcastic prick to some"
##
## $user$translator_type
## [1] "none"
##
## $user$protected
## [1] FALSE
##
## $user$verified
## [1] FALSE
##
## $user$followers_count
## [1] 1258
##
## $user$friends_count
## [1] 483
##
## $user$listed_count
## [1] 36
##
## $user$favourites_count
## [1] 4588
##
## $user$statuses_count
## [1] 101319
##
## $user$created_at
## [1] "Sun Mar 13 02:01:24 +0000 2011"
##
## $user$utc_offset
## NULL
##
## $user$time_zone
## NULL
##
## $user$geo_enabled
## [1] TRUE
##
## $user$lang
## NULL
##
## $user$contributors_enabled
## [1] FALSE
##
## $user$is_translator
## [1] FALSE
##
## $user$profile_background_color
## [1] "E627E6"
##
## $user$profile_background_image_url
## [1] "http://abs.twimg.com/images/themes/theme1/bg.png"
##
## $user$profile_background_image_url_https
## [1] "https://abs.twimg.com/images/themes/theme1/bg.png"
##
## $user$profile_background_tile
## [1] FALSE
##
## $user$profile_link_color
## [1] "3B94D9"
##
## $user$profile_sidebar_border_color
## [1] "000000"
##
## $user$profile_sidebar_fill_color
## [1] "0A5C16"
##
## $user$profile_text_color
## [1] "030303"
##
## $user$profile_use_background_image
## [1] TRUE
##
## $user$profile_image_url
## [1] "http://pbs.twimg.com/profile_images/1021894061131751424/CPyJZEcT_normal.jpg"
##
## $user$profile_image_url_https
## [1] "https://pbs.twimg.com/profile_images/1021894061131751424/CPyJZEcT_normal.jpg"
##
## $user$profile_banner_url
## [1] "https://pbs.twimg.com/profile_banners/265121424/1535413595"
##
## $user$default_profile
## [1] FALSE
##
## $user$default_profile_image
## [1] FALSE
##
## $user$following
## NULL
##
## $user$follow_request_sent
## NULL
##
## $user$notifications
## NULL
##
##
## $geo
## NULL
##
## $coordinates
## NULL
##
## $place
## NULL
##
## $contributors
## NULL
##
## $retweeted_status
## $retweeted_status$created_at
## [1] "Sun Nov 03 04:33:09 +0000 2019"
##
## $retweeted_status$id
## integer64
## [1] 1190849368494092288
##
## $retweeted_status$id_str
## [1] "1190849368494092288"
##
## $retweeted_status$text
## [1] "How to open a fight lmfao #UFC244 https://t.co/kL2gLu6yGl"
##
## $retweeted_status$display_text_range
## $retweeted_status$display_text_range[[1]]
## [1] 0
##
## $retweeted_status$display_text_range[[2]]
## [1] 33
##
##
## $retweeted_status$source
## [1] "<a href=\"https://about.twitter.com/products/tweetdeck\" rel=\"nofollow\">TweetDeck</a>"
##
## $retweeted_status$truncated
## [1] FALSE
##
## $retweeted_status$in_reply_to_status_id
## NULL
##
## $retweeted_status$in_reply_to_status_id_str
## NULL
##
## $retweeted_status$in_reply_to_user_id
## NULL
##
## $retweeted_status$in_reply_to_user_id_str
## NULL
##
## $retweeted_status$in_reply_to_screen_name
## NULL
##
## $retweeted_status$user
## $retweeted_status$user$id
## integer64
## [1] 3230043854
##
## $retweeted_status$user$id_str
## [1] "3230043854"
##
## $retweeted_status$user$name
## [1] "Big Boss"
##
## $retweeted_status$user$screen_name
## [1] "LordBalvin"
##
## $retweeted_status$user$location
## [1] "Outer Heaven"
##
## $retweeted_status$user$url
## [1] "http://twitch.tv/lordbalvin"
##
## $retweeted_status$user$description
## [1] "Business contact: balvinsanity@gmail.com"
##
## $retweeted_status$user$translator_type
## [1] "none"
##
## $retweeted_status$user$protected
## [1] FALSE
##
## $retweeted_status$user$verified
## [1] FALSE
##
## $retweeted_status$user$followers_count
## [1] 11165
##
## $retweeted_status$user$friends_count
## [1] 284
##
## $retweeted_status$user$listed_count
## [1] 418
##
## $retweeted_status$user$favourites_count
## [1] 271
##
## $retweeted_status$user$statuses_count
## [1] 45110
##
## $retweeted_status$user$created_at
## [1] "Fri May 29 19:21:29 +0000 2015"
##
## $retweeted_status$user$utc_offset
## NULL
##
## $retweeted_status$user$time_zone
## NULL
##
## $retweeted_status$user$geo_enabled
## [1] TRUE
##
## $retweeted_status$user$lang
## NULL
##
## $retweeted_status$user$contributors_enabled
## [1] FALSE
##
## $retweeted_status$user$is_translator
## [1] FALSE
##
## $retweeted_status$user$profile_background_color
## [1] "000000"
##
## $retweeted_status$user$profile_background_image_url
## [1] "http://abs.twimg.com/images/themes/theme1/bg.png"
##
## $retweeted_status$user$profile_background_image_url_https
## [1] "https://abs.twimg.com/images/themes/theme1/bg.png"
##
## $retweeted_status$user$profile_background_tile
## [1] FALSE
##
## $retweeted_status$user$profile_link_color
## [1] "E81C4F"
##
## $retweeted_status$user$profile_sidebar_border_color
## [1] "000000"
##
## $retweeted_status$user$profile_sidebar_fill_color
## [1] "000000"
##
## $retweeted_status$user$profile_text_color
## [1] "000000"
##
## $retweeted_status$user$profile_use_background_image
## [1] FALSE
##
## $retweeted_status$user$profile_image_url
## [1] "http://pbs.twimg.com/profile_images/1188286607310381057/rtZxtwGQ_normal.jpg"
##
## $retweeted_status$user$profile_image_url_https
## [1] "https://pbs.twimg.com/profile_images/1188286607310381057/rtZxtwGQ_normal.jpg"
##
## $retweeted_status$user$profile_banner_url
## [1] "https://pbs.twimg.com/profile_banners/3230043854/1571053396"
##
## $retweeted_status$user$default_profile
## [1] FALSE
##
## $retweeted_status$user$default_profile_image
## [1] FALSE
##
## $retweeted_status$user$following
## NULL
##
## $retweeted_status$user$follow_request_sent
## NULL
##
## $retweeted_status$user$notifications
## NULL
##
##
## $retweeted_status$geo
## NULL
##
## $retweeted_status$coordinates
## NULL
##
## $retweeted_status$place
## NULL
##
## $retweeted_status$contributors
## NULL
##
## $retweeted_status$is_quote_status
## [1] FALSE
##
## $retweeted_status$quote_count
## [1] 4
##
## $retweeted_status$reply_count
## [1] 2
##
## $retweeted_status$retweet_count
## [1] 42
##
## $retweeted_status$favorite_count
## [1] 88
##
## $retweeted_status$entities
## $retweeted_status$entities$hashtags
## $retweeted_status$entities$hashtags[[1]]
## $retweeted_status$entities$hashtags[[1]]$text
## [1] "UFC244"
##
## $retweeted_status$entities$hashtags[[1]]$indices
## $retweeted_status$entities$hashtags[[1]]$indices[[1]]
## [1] 26
##
## $retweeted_status$entities$hashtags[[1]]$indices[[2]]
## [1] 33
##
##
##
##
## $retweeted_status$entities$urls
## list()
##
## $retweeted_status$entities$user_mentions
## list()
##
## $retweeted_status$entities$symbols
## list()
##
## $retweeted_status$entities$media
## $retweeted_status$entities$media[[1]]
## $retweeted_status$entities$media[[1]]$id
## integer64
## [1] 1190849300806455298
##
## $retweeted_status$entities$media[[1]]$id_str
## [1] "1190849300806455298"
##
## $retweeted_status$entities$media[[1]]$indices
## $retweeted_status$entities$media[[1]]$indices[[1]]
## [1] 34
##
## $retweeted_status$entities$media[[1]]$indices[[2]]
## [1] 57
##
##
## $retweeted_status$entities$media[[1]]$media_url
## [1] "http://pbs.twimg.com/tweet_video_thumb/EIa_ITOXUAIqVsL.jpg"
##
## $retweeted_status$entities$media[[1]]$media_url_https
## [1] "https://pbs.twimg.com/tweet_video_thumb/EIa_ITOXUAIqVsL.jpg"
##
## $retweeted_status$entities$media[[1]]$url
## [1] "https://t.co/kL2gLu6yGl"
##
## $retweeted_status$entities$media[[1]]$display_url
## [1] "pic.twitter.com/kL2gLu6yGl"
##
## $retweeted_status$entities$media[[1]]$expanded_url
## [1] "https://twitter.com/LordBalvin/status/1190849368494092288/photo/1"
##
## $retweeted_status$entities$media[[1]]$type
## [1] "photo"
##
## $retweeted_status$entities$media[[1]]$sizes
## $retweeted_status$entities$media[[1]]$sizes$thumb
## $retweeted_status$entities$media[[1]]$sizes$thumb$w
## [1] 150
##
## $retweeted_status$entities$media[[1]]$sizes$thumb$h
## [1] 150
##
## $retweeted_status$entities$media[[1]]$sizes$thumb$resize
## [1] "crop"
##
##
## $retweeted_status$entities$media[[1]]$sizes$small
## $retweeted_status$entities$media[[1]]$sizes$small$w
## [1] 660
##
## $retweeted_status$entities$media[[1]]$sizes$small$h
## [1] 362
##
## $retweeted_status$entities$media[[1]]$sizes$small$resize
## [1] "fit"
##
##
## $retweeted_status$entities$media[[1]]$sizes$large
## $retweeted_status$entities$media[[1]]$sizes$large$w
## [1] 660
##
## $retweeted_status$entities$media[[1]]$sizes$large$h
## [1] 362
##
## $retweeted_status$entities$media[[1]]$sizes$large$resize
## [1] "fit"
##
##
## $retweeted_status$entities$media[[1]]$sizes$medium
## $retweeted_status$entities$media[[1]]$sizes$medium$w
## [1] 660
##
## $retweeted_status$entities$media[[1]]$sizes$medium$h
## [1] 362
##
## $retweeted_status$entities$media[[1]]$sizes$medium$resize
## [1] "fit"
##
##
##
##
##
##
## $retweeted_status$extended_entities
## $retweeted_status$extended_entities$media
## $retweeted_status$extended_entities$media[[1]]
## $retweeted_status$extended_entities$media[[1]]$id
## integer64
## [1] 1190849300806455298
##
## $retweeted_status$extended_entities$media[[1]]$id_str
## [1] "1190849300806455298"
##
## $retweeted_status$extended_entities$media[[1]]$indices
## $retweeted_status$extended_entities$media[[1]]$indices[[1]]
## [1] 34
##
## $retweeted_status$extended_entities$media[[1]]$indices[[2]]
## [1] 57
##
##
## $retweeted_status$extended_entities$media[[1]]$media_url
## [1] "http://pbs.twimg.com/tweet_video_thumb/EIa_ITOXUAIqVsL.jpg"
##
## $retweeted_status$extended_entities$media[[1]]$media_url_https
## [1] "https://pbs.twimg.com/tweet_video_thumb/EIa_ITOXUAIqVsL.jpg"
##
## $retweeted_status$extended_entities$media[[1]]$url
## [1] "https://t.co/kL2gLu6yGl"
##
## $retweeted_status$extended_entities$media[[1]]$display_url
## [1] "pic.twitter.com/kL2gLu6yGl"
##
## $retweeted_status$extended_entities$media[[1]]$expanded_url
## [1] "https://twitter.com/LordBalvin/status/1190849368494092288/photo/1"
##
## $retweeted_status$extended_entities$media[[1]]$type
## [1] "animated_gif"
##
## $retweeted_status$extended_entities$media[[1]]$video_info
## $retweeted_status$extended_entities$media[[1]]$video_info$aspect_ratio
## $retweeted_status$extended_entities$media[[1]]$video_info$aspect_ratio[[1]]
## [1] 330
##
## $retweeted_status$extended_entities$media[[1]]$video_info$aspect_ratio[[2]]
## [1] 181
##
##
## $retweeted_status$extended_entities$media[[1]]$video_info$variants
## $retweeted_status$extended_entities$media[[1]]$video_info$variants[[1]]
## $retweeted_status$extended_entities$media[[1]]$video_info$variants[[1]]$bitrate
## [1] 0
##
## $retweeted_status$extended_entities$media[[1]]$video_info$variants[[1]]$content_type
## [1] "video/mp4"
##
## $retweeted_status$extended_entities$media[[1]]$video_info$variants[[1]]$url
## [1] "https://video.twimg.com/tweet_video/EIa_ITOXUAIqVsL.mp4"
##
##
##
##
## $retweeted_status$extended_entities$media[[1]]$sizes
## $retweeted_status$extended_entities$media[[1]]$sizes$thumb
## $retweeted_status$extended_entities$media[[1]]$sizes$thumb$w
## [1] 150
##
## $retweeted_status$extended_entities$media[[1]]$sizes$thumb$h
## [1] 150
##
## $retweeted_status$extended_entities$media[[1]]$sizes$thumb$resize
## [1] "crop"
##
##
## $retweeted_status$extended_entities$media[[1]]$sizes$small
## $retweeted_status$extended_entities$media[[1]]$sizes$small$w
## [1] 660
##
## $retweeted_status$extended_entities$media[[1]]$sizes$small$h
## [1] 362
##
## $retweeted_status$extended_entities$media[[1]]$sizes$small$resize
## [1] "fit"
##
##
## $retweeted_status$extended_entities$media[[1]]$sizes$large
## $retweeted_status$extended_entities$media[[1]]$sizes$large$w
## [1] 660
##
## $retweeted_status$extended_entities$media[[1]]$sizes$large$h
## [1] 362
##
## $retweeted_status$extended_entities$media[[1]]$sizes$large$resize
## [1] "fit"
##
##
## $retweeted_status$extended_entities$media[[1]]$sizes$medium
## $retweeted_status$extended_entities$media[[1]]$sizes$medium$w
## [1] 660
##
## $retweeted_status$extended_entities$media[[1]]$sizes$medium$h
## [1] 362
##
## $retweeted_status$extended_entities$media[[1]]$sizes$medium$resize
## [1] "fit"
##
##
##
##
##
##
## $retweeted_status$favorited
## [1] FALSE
##
## $retweeted_status$retweeted
## [1] FALSE
##
## $retweeted_status$possibly_sensitive
## [1] FALSE
##
## $retweeted_status$filter_level
## [1] "low"
##
## $retweeted_status$lang
## [1] "en"
##
##
## $is_quote_status
## [1] FALSE
##
## $quote_count
## [1] 0
##
## $reply_count
## [1] 0
##
## $retweet_count
## [1] 0
##
## $favorite_count
## [1] 0
##
## $entities
## $entities$hashtags
## $entities$hashtags[[1]]
## $entities$hashtags[[1]]$text
## [1] "UFC244"
##
## $entities$hashtags[[1]]$indices
## $entities$hashtags[[1]]$indices[[1]]
## [1] 42
##
## $entities$hashtags[[1]]$indices[[2]]
## [1] 49
##
##
##
##
## $entities$urls
## list()
##
## $entities$user_mentions
## $entities$user_mentions[[1]]
## $entities$user_mentions[[1]]$screen_name
## [1] "LordBalvin"
##
## $entities$user_mentions[[1]]$name
## [1] "Big Boss"
##
## $entities$user_mentions[[1]]$id
## integer64
## [1] 3230043854
##
## $entities$user_mentions[[1]]$id_str
## [1] "3230043854"
##
## $entities$user_mentions[[1]]$indices
## $entities$user_mentions[[1]]$indices[[1]]
## [1] 3
##
## $entities$user_mentions[[1]]$indices[[2]]
## [1] 14
##
##
##
##
## $entities$symbols
## list()
##
## $entities$media
## $entities$media[[1]]
## $entities$media[[1]]$id
## integer64
## [1] 1190849300806455298
##
## $entities$media[[1]]$id_str
## [1] "1190849300806455298"
##
## $entities$media[[1]]$indices
## $entities$media[[1]]$indices[[1]]
## [1] 50
##
## $entities$media[[1]]$indices[[2]]
## [1] 73
##
##
## $entities$media[[1]]$media_url
## [1] "http://pbs.twimg.com/tweet_video_thumb/EIa_ITOXUAIqVsL.jpg"
##
## $entities$media[[1]]$media_url_https
## [1] "https://pbs.twimg.com/tweet_video_thumb/EIa_ITOXUAIqVsL.jpg"
##
## $entities$media[[1]]$url
## [1] "https://t.co/kL2gLu6yGl"
##
## $entities$media[[1]]$display_url
## [1] "pic.twitter.com/kL2gLu6yGl"
##
## $entities$media[[1]]$expanded_url
## [1] "https://twitter.com/LordBalvin/status/1190849368494092288/photo/1"
##
## $entities$media[[1]]$type
## [1] "photo"
##
## $entities$media[[1]]$sizes
## $entities$media[[1]]$sizes$thumb
## $entities$media[[1]]$sizes$thumb$w
## [1] 150
##
## $entities$media[[1]]$sizes$thumb$h
## [1] 150
##
## $entities$media[[1]]$sizes$thumb$resize
## [1] "crop"
##
##
## $entities$media[[1]]$sizes$small
## $entities$media[[1]]$sizes$small$w
## [1] 660
##
## $entities$media[[1]]$sizes$small$h
## [1] 362
##
## $entities$media[[1]]$sizes$small$resize
## [1] "fit"
##
##
## $entities$media[[1]]$sizes$large
## $entities$media[[1]]$sizes$large$w
## [1] 660
##
## $entities$media[[1]]$sizes$large$h
## [1] 362
##
## $entities$media[[1]]$sizes$large$resize
## [1] "fit"
##
##
## $entities$media[[1]]$sizes$medium
## $entities$media[[1]]$sizes$medium$w
## [1] 660
##
## $entities$media[[1]]$sizes$medium$h
## [1] 362
##
## $entities$media[[1]]$sizes$medium$resize
## [1] "fit"
##
##
##
## $entities$media[[1]]$source_status_id
## integer64
## [1] 1190849368494092288
##
## $entities$media[[1]]$source_status_id_str
## [1] "1190849368494092288"
##
## $entities$media[[1]]$source_user_id
## integer64
## [1] 3230043854
##
## $entities$media[[1]]$source_user_id_str
## [1] "3230043854"
##
##
##
##
## $extended_entities
## $extended_entities$media
## $extended_entities$media[[1]]
## $extended_entities$media[[1]]$id
## integer64
## [1] 1190849300806455298
##
## $extended_entities$media[[1]]$id_str
## [1] "1190849300806455298"
##
## $extended_entities$media[[1]]$indices
## $extended_entities$media[[1]]$indices[[1]]
## [1] 50
##
## $extended_entities$media[[1]]$indices[[2]]
## [1] 73
##
##
## $extended_entities$media[[1]]$media_url
## [1] "http://pbs.twimg.com/tweet_video_thumb/EIa_ITOXUAIqVsL.jpg"
##
## $extended_entities$media[[1]]$media_url_https
## [1] "https://pbs.twimg.com/tweet_video_thumb/EIa_ITOXUAIqVsL.jpg"
##
## $extended_entities$media[[1]]$url
## [1] "https://t.co/kL2gLu6yGl"
##
## $extended_entities$media[[1]]$display_url
## [1] "pic.twitter.com/kL2gLu6yGl"
##
## $extended_entities$media[[1]]$expanded_url
## [1] "https://twitter.com/LordBalvin/status/1190849368494092288/photo/1"
##
## $extended_entities$media[[1]]$type
## [1] "animated_gif"
##
## $extended_entities$media[[1]]$video_info
## $extended_entities$media[[1]]$video_info$aspect_ratio
## $extended_entities$media[[1]]$video_info$aspect_ratio[[1]]
## [1] 330
##
## $extended_entities$media[[1]]$video_info$aspect_ratio[[2]]
## [1] 181
##
##
## $extended_entities$media[[1]]$video_info$variants
## $extended_entities$media[[1]]$video_info$variants[[1]]
## $extended_entities$media[[1]]$video_info$variants[[1]]$bitrate
## [1] 0
##
## $extended_entities$media[[1]]$video_info$variants[[1]]$content_type
## [1] "video/mp4"
##
## $extended_entities$media[[1]]$video_info$variants[[1]]$url
## [1] "https://video.twimg.com/tweet_video/EIa_ITOXUAIqVsL.mp4"
##
##
##
##
## $extended_entities$media[[1]]$sizes
## $extended_entities$media[[1]]$sizes$thumb
## $extended_entities$media[[1]]$sizes$thumb$w
## [1] 150
##
## $extended_entities$media[[1]]$sizes$thumb$h
## [1] 150
##
## $extended_entities$media[[1]]$sizes$thumb$resize
## [1] "crop"
##
##
## $extended_entities$media[[1]]$sizes$small
## $extended_entities$media[[1]]$sizes$small$w
## [1] 660
##
## $extended_entities$media[[1]]$sizes$small$h
## [1] 362
##
## $extended_entities$media[[1]]$sizes$small$resize
## [1] "fit"
##
##
## $extended_entities$media[[1]]$sizes$large
## $extended_entities$media[[1]]$sizes$large$w
## [1] 660
##
## $extended_entities$media[[1]]$sizes$large$h
## [1] 362
##
## $extended_entities$media[[1]]$sizes$large$resize
## [1] "fit"
##
##
## $extended_entities$media[[1]]$sizes$medium
## $extended_entities$media[[1]]$sizes$medium$w
## [1] 660
##
## $extended_entities$media[[1]]$sizes$medium$h
## [1] 362
##
## $extended_entities$media[[1]]$sizes$medium$resize
## [1] "fit"
##
##
##
## $extended_entities$media[[1]]$source_status_id
## integer64
## [1] 1190849368494092288
##
## $extended_entities$media[[1]]$source_status_id_str
## [1] "1190849368494092288"
##
## $extended_entities$media[[1]]$source_user_id
## integer64
## [1] 3230043854
##
## $extended_entities$media[[1]]$source_user_id_str
## [1] "3230043854"
##
##
##
##
## $favorited
## [1] FALSE
##
## $retweeted
## [1] FALSE
##
## $possibly_sensitive
## [1] TRUE
##
## $filter_level
## [1] "low"
##
## $lang
## [1] "en"
##
## $timestamp_ms
## [1] "1572755802497"