Tweetview
🔀 Tools to Organize and Visualize Tweets Including Tweet Threads (WIP)
Install / Use
/learn @hrbrmstr/TweetviewREADME
WIP WIP WIP WIP WIP WIP
tweetview
Tools to Organize and Visualize Tweets Including Tweet Threads
Description
What’s Inside The Tin
The following functions are implemented:
as_tweet_thread: Turn a data frame of ‘rtweet’ tweets into a tweet threadget_thread: Retrieve an authors tweet thread/rant from a starting status idhtmlify_tweet: Make a Tweet into an HTML objectprint.tweet_thread: Print method for a tweet threadstyle_tweet: Style a tweet with HTML
Installation
devtools::install_github("hrbrmstr/tweetview")
Usage
library(tweetview)
library(tidyverse)
# current verison
packageVersion("tweetview")
## [1] '0.1.0'
thrd <- get_thread("988895496381984770")
thrd
## Malware trend observation: Attackers rely on knowing which industries and individuals are likely to not be following best practices, as many ‘newsworthy’ events in the past couple weeks were malware or techniques that even well maintained basic antivirus would stop.
##
## Whether it’s miner malware targeting individuals that pirate software/movies and are likely to have AV turned off, or ‘brand new’ APT reports that are using techniques easily detected by AV, many things recently are simply attackers relying on basics not being in place.
##
## If you have served any time as an IT person you will know certain industries think they ‘can’t’ do certain security measures such as patch/segment/least privilege-attackers know that too and are clearly using it as an easy mode entry point.
##
## Some regions stay on old versions of productivity software due to linguistic reasons (IMEs/plugins) and that is 100% something targeted attacks know-many cases we research quite simply wouldn’t work with up to date AV and software.
##
## There’s no mystical superpowers in most attacks, and we need to make that clear when we talk about how to harden environments. Observing trends that are used by attackers, discussing them honestly, and providing creative mitigations goes a long way to protecting actual people.
##
## I’ve also investigated many cases involving actual mystical attacker superpowers in my time, and basic understanding and protections still go a long way to securing the humans in those instances too.
str(thrd, 1)
## List of 3
## $ tweet_thread:Classes 'tbl_df', 'tbl' and 'data.frame': 6 obs. of 87 variables:
## $ thread_text : chr "Malware trend observation: Attackers rely on knowing which industries and individuals are likely to not be foll"| __truncated__
## $ thread_html : chr [1:6] "<div class=\"tweet-div\"><div class=\"tweet-intro\" style=\"display:block\"><span class=\"tweet-source\">@jepay"| __truncated__ "<div class=\"tweet-div\"><div class=\"tweet-intro\" style=\"display:block\"><span class=\"tweet-source\">@jepay"| __truncated__ "<div class=\"tweet-div\"><div class=\"tweet-intro\" style=\"display:block\"><span class=\"tweet-source\">@jepay"| __truncated__ "<div class=\"tweet-div\"><div class=\"tweet-intro\" style=\"display:block\"><span class=\"tweet-source\">@jepay"| __truncated__ ...
## - attr(*, "class")= chr "tweet_thread"
glimpse(thrd$tweet_thread)
## Observations: 6
## Variables: 87
## $ user_id <chr> "3937965861", "3937965861", "3937965861", "3937965861", "3937965861", "3937965861"
## $ status_id <fct> 988901012114042880, 988897418845405184, 988896682543759360, 988896363864707072, 988...
## $ created_at <dttm> 2018-04-24 22:02:28, 2018-04-24 21:48:12, 2018-04-24 21:45:16, 2018-04-24 21:44:00...
## $ screen_name <chr> "jepayneMSFT", "jepayneMSFT", "jepayneMSFT", "jepayneMSFT", "jepayneMSFT", "jepayne...
## $ text <chr> "I’ve also investigated many cases involving actual mystical attacker superpowers i...
## $ source <chr> "Twitter for iPhone", "Twitter for iPhone", "Twitter for iPhone", "Twitter for iPho...
## $ display_text_width <dbl> 199, 277, 231, 240, 270, 266
## $ reply_to_status_id <chr> "988897418845405184", "988896682543759360", "988896363864707072", "9888960148651294...
## $ reply_to_user_id <chr> "3937965861", "3937965861", "3937965861", "3937965861", "3937965861", NA
## $ reply_to_screen_name <chr> "jepayneMSFT", "jepayneMSFT", "jepayneMSFT", "jepayneMSFT", "jepayneMSFT", NA
## $ is_quote <lgl> FALSE, FALSE, FALSE, FALSE, FALSE, FALSE
## $ is_retweet <lgl> FALSE, FALSE, FALSE, FALSE, FALSE, FALSE
## $ favorite_count <int> 50, 87, 46, 91, 58, 241
## $ retweet_count <int> 6, 27, 12, 21, 17, 110
## $ hashtags <list> [NA, NA, NA, NA, NA, NA]
## $ symbols <list> [NA, NA, NA, NA, NA, NA]
## $ urls_url <list> [NA, NA, NA, NA, NA, NA]
## $ urls_t.co <list> [NA, NA, NA, NA, NA, NA]
## $ urls_expanded_url <list> [NA, NA, NA, NA, NA, NA]
## $ media_url <list> [NA, NA, NA, NA, NA, NA]
## $ media_t.co <list> [NA, NA, NA, NA, NA, NA]
## $ media_expanded_url <list> [NA, NA, NA, NA, NA, NA]
## $ media_type <list> [NA, NA, NA, NA, NA, NA]
## $ ext_media_url <list> [NA, NA, NA, NA, NA, NA]
## $ ext_media_t.co <list> [NA, NA, NA, NA, NA, NA]
## $ ext_media_expanded_url <list> [NA, NA, NA, NA, NA, NA]
## $ ext_media_type <chr> NA, NA, NA, NA, NA, NA
## $ mentions_user_id <list> [NA, NA, NA, NA, NA, NA]
## $ mentions_screen_name <list> [NA, NA, NA, NA, NA, NA]
## $ lang <chr> "en", "en", "en", "en", "en", "en"
## $ quoted_status_id <chr> NA, NA, NA, NA, NA, NA
## $ quoted_text <chr> NA, NA, NA, NA, NA, NA
## $ quoted_created_at <dttm> NA, NA, NA, NA, NA, NA
## $ quoted_source <chr> NA, NA, NA, NA, NA, NA
## $ quoted_favorite_count <int> NA, NA, NA, NA, NA, NA
## $ quoted_retweet_count <int> NA, NA, NA, NA, NA, NA
## $ quoted_user_id <chr> NA, NA, NA, NA, NA, NA
## $ quoted_screen_name <chr> NA, NA, NA, NA, NA, NA
## $ quoted_name <chr> NA, NA, NA, NA, NA, NA
## $ quoted_followers_count <int> NA, NA, NA, NA, NA, NA
## $ quoted_friends_count <int> NA, NA, NA, NA, NA, NA
## $ quoted_statuses_count <int> NA, NA, NA, NA, NA, NA
## $ quoted_location <chr> NA, NA, NA, NA, NA, NA
## $ quoted_description <chr> NA, NA, NA, NA, NA, NA
## $ quoted_verified <lgl> NA, NA, NA, NA, NA, NA
## $ retweet_status_id <chr> NA, NA, NA, NA, NA, NA
## $ retweet_text <chr> NA, NA, NA, NA, NA, NA
## $ retweet_created_at <dttm> NA, NA, NA, NA, NA, NA
## $ retweet_source <chr> NA, NA, NA, NA, NA, NA
## $ retweet_favorite_count <int> NA, NA, NA, NA, NA, NA
## $ retweet_retweet_count <int> NA, NA, NA, NA, NA, NA
## $ retweet_user_id <chr> NA, NA, NA, NA, NA, NA
## $ retweet_screen_name <chr> NA, NA, NA, NA, NA, NA
## $ retweet_name <chr> NA, NA, NA, NA, NA, NA
## $ retweet_followers_count <int> NA, NA, NA, NA, NA, NA
## $ retweet_friends_count <int> NA, NA, NA, NA, NA, NA
## $ retweet_statuses_count <int> NA, NA, NA, NA, NA, NA
## $ retweet_location <chr> NA, NA, NA, NA, NA, NA
## $ retweet_description <chr> NA, NA, NA, NA, NA, NA
## $ retweet_verified <lgl> NA, NA, NA, NA, NA, NA
## $ place_url <chr> NA, NA, NA, NA, NA, NA
## $ place_name <chr> NA, NA, NA, NA, NA, NA
## $ place_full_name <chr> NA, NA, NA, NA, NA, NA
## $ place_type <chr> NA, NA, NA, NA, NA, NA
## $ country <chr> NA, NA, NA, NA, NA, NA
## $ country_code <chr> NA, NA, NA, NA, NA, NA
## $ geo_coords <list> [<NA, NA>, <NA, NA>, <NA, NA>, <NA, NA>, <NA, NA>, <NA, NA>]
## $ coords_coords <list> [<NA, NA>, <NA, NA>, <NA, NA>, <NA, NA>, <NA, NA>, <NA, NA>]
## $ bbox_coords <list> [<NA, NA, NA, NA, NA, NA, NA, NA>, <NA, NA, NA, NA, NA, NA, NA, NA>, <NA, NA, NA, ...
## $ name <chr> "Jessica Payne", "Jessica Payne", "Jessica Payne", "Jessica Payne", "Jessica Payne"...
## $ location <chr> "", "", "", "", "", ""
## $ description <chr> "Security Person at Microsoft, currently in Windows Defender Security Research. Opi...
## $ url <chr> "https://t.co/vMahqHd0cp", "https://t.co/vMahqHd0cp", "https://t.co/vMahqHd0cp", "h...
## $ protected <lgl> FALSE, FALSE, FALSE, FALSE, FALSE, FALSE
## $ followers_count <int> 20975, 20975, 20975, 20975, 20975, 20975
## $ friends_count <int> 32, 32, 32, 32, 32, 32
## $ listed_count <int> 556, 556, 556, 556, 556, 556
## $ statuses_count <int> 3580, 3580, 3580, 3580, 3580, 3580
## $ favourites_count <int> 2685, 2685, 2685, 2685, 2685, 2685
## $ account_created_at <dttm> 2015-10-12 14:57:35, 2015-10-12 14:57:35, 2015-10-12 14:57:35, 2015-10-12 14:57:35...
## $ verified <lgl> FALSE, FALSE, FALSE, FALSE, FALSE, FALSE
## $ profile_url <chr> "https://t.co/vMahqHd0cp", "https://t.co/vMahqHd0cp", "https://t.co/vMahqHd0cp", "h...
## $ profile_expanded_url <chr> "https://aka.ms/jessica", "https://aka.ms/jessica", "https://aka.ms/jessica", "http...
## $ account_lang <chr> "en", "en", "en", "en", "en", "en"
## $ profile_banner_url <lgl> NA, NA, NA, NA, NA, NA
## $ profile_background_url <chr> "http://abs.twimg.com/images/themes/theme1/bg.png", "http://abs.twimg.com/images/th...
## $ profil
Related Skills
node-connect
347.2kDiagnose OpenClaw node connection and pairing failures for Android, iOS, and macOS companion apps
frontend-design
108.0kCreate distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, or applications. Generates creative, polished code that avoids generic AI aesthetics.
openai-whisper-api
347.2kTranscribe audio via OpenAI Audio Transcriptions API (Whisper).
qqbot-media
347.2kQQBot 富媒体收发能力。使用 <qqmedia> 标签,系统根据文件扩展名自动识别类型(图片/语音/视频/文件)。
