/tweetrmd

Embed Tweets in R Markdown

Primary LanguageROtherNOASSERTION

tweetrmd

Easily embed Tweets anywhere R Markdown turns plain text into HTML.

Installation

You can install the released version of tweetrmd from GitHub:

# install.packages("devtools")
devtools::install_github("gadenbuie/tweetrmd")

Embed a Tweet

library(tweetrmd)
tweet_embed("https://twitter.com/alexpghayes/status/1211748406730706944")

anybody have experience embedding tweets into #rmarkdown documents without using blogdown?https://t.co/5kQUBh7j4g

— alex hayes (@alexpghayes) December 30, 2019

Or if you would rather use the screen name and status id.

tweet_embed(tweet_url("alexpghayes", "1211748406730706944"))

anybody have experience embedding tweets into #rmarkdown documents without using blogdown?https://t.co/5kQUBh7j4g

— alex hayes (@alexpghayes) December 30, 2019

In rich HTML outputs, the full embedded tweet is available and interactive. Here, in GitHub-flavored markdown, only the content of the tweet is seen.

Take a screenshot of a tweet

Screenshots are automatically embedded in R Markdown documents, or you can save the screenshot as a .png or .pdf file. Uses the rstudio/webshot2 package.

tweet_screenshot(tweet_url("alexpghayes", "1211748406730706944"))

Just include a tweet in any R Markdown output format

When you want to include a tweet in multiple R Markdown formats, you can use include_tweet(). It’s like knitr::include_graphics() but for tweets. The function will automatically include the tweet as HTML in HTML outputs, or as a screenshot in all others.

```{r tweet-from-dsquintana}
include_tweet("https://twitter.com/dsquintana/status/1275705042385940480")
```

Customize tweet appearance

Twitter’s oembed API provides a number of options, all of which are made available for customization in tweet_embed() and tweet_screenshot().

tweet_screenshot(
  tweet_url("alexpghayes", "1211748406730706944"),
  maxwidth = 300,
  hide_media = TRUE,
  theme = "dark"
)

Embed without tracking

You can use tweetrmd to embed tweets in your documents and outputs without including Twitter JavaScript or tracking. The easiest way is to set plain = TRUE in include_tweet(). This will insert minimal HTML for web outputs or convert the tweet text to markdown for non-web outputs.

include_tweet(
  "https://twitter.com/dsquintana/status/1275705042385940480",
  plain = TRUE
)
> {bookdown} folks: I\'m trying to knit a PDF version of a HTML book
> that contains HTML elements (embedded tweets).\
> \
> Is there a way to automatically take a screenshot of embedded tweets
> for PDF output?\
> \
> Using the {webshot} package + PhantomJS didn\'t
> work\...[\#Rstats](https://twitter.com/hashtag/Rstats)
>
> --- Dan Quintana (\@dsquintana) [June 24,
> 2020](https://twitter.com/dsquintana/status/1275705042385940480)

Alternatively, you can choose to use tweet_screenshot() or tweet_markdown() to embed all tweets in your documents.

Caching tweets with memoization

Tweets are often deleted and re-running tweet_embed() or tweet_screenshot() may fail or overwrite a previous screenshot of a tweet. To avoid this, you can use the memoise package.

library(memoise)

tweet_cached <- memoise(tweet_embed, cache = cache_filesystem('.tweets'))
tweet_shot_cached <- memoise(tweet_screenshot, cache = cache_filesystem('.tweets'))

*When memoising tweet_screenshot() you need to manually save the file to a specific location. In the future my goal is for this to be automatic.


Note: When using tweet_embed(), you may need to add the following line to your YAML header for strict markdown output formats.

always_allow_html: true