在R Shiny应用中嵌入特定推文

时间:2017-12-26 11:45:21

标签: r twitter shiny

我完全是网络新手和所有这些东西。 我希望能够通过Shiny应用中的用户输入显示特定的推文。 以下是我在这篇文章中的尝试:How can i embed a twitter timeline in a shiny app?。我正在尝试显示此推文:https://twitter.com/AndrewYNg/status/894994683931148288

library(shiny)
runApp(list(ui = fluidPage(
  tags$head("<script>!function(d,s,id){var js,fjs=d.getElementsByTagName(s)    [0],p=/^http:/.test(d.location)?'http':'https';if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src=p+'://platform.twitter.com/widgets.js';fjs.parentNode.insertBefore(js,fjs);}}(document,'script','twitter-wjs');</script>"),
  titlePanel(""),
  sidebarLayout(
    sidebarPanel()
    , mainPanel(
      a("Tweets by Andrew Ng", class="twitter-tweet"
        , href = "https://twitter.com/AndrewYNg/status/894994683931148288"
      )
    )
  )
)
, server = function(input, output, session){

}
)
)

它不显示推文,而是显示推文的链接。我想标签$ head不包含好东西,但我无法弄清楚应该是什么。

1 个答案:

答案 0 :(得分:2)

  1. 将脚本包装在shiny::HTML()中,以便内容不会转义HTML。在您的示例中,<script>已转义为&lt;script&gt;。或者更好的是,使用shiny::tags$script()

  2. 检查Twitter文档,了解如何嵌入推文并确保标记正确:https://dev.twitter.com/web/embedded-tweets

  3. library(shiny)
    
    runApp(list(
      ui = fluidPage(
        tags$head(
          tags$script("!function(d,s,id){var js,fjs=d.getElementsByTagName(s)    [0],p=/^http:/.test(d.location)?'http':'https';if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src=p+'://platform.twitter.com/widgets.js';fjs.parentNode.insertBefore(js,fjs);}}(document,'script','twitter-wjs');")
        ),
        titlePanel(""),
        sidebarLayout(
          sidebarPanel(),
          mainPanel(
            HTML('
            <blockquote class="twitter-tweet" data-lang="en"><p lang="en" dir="ltr">
              Want to break into AI? You can learn Deep Learning from new deeplearning.ai courses on Coursera:
              <a href="https://www.coursera.org/specializations/deep-learning">https://www.coursera.org/specializations/deep-learning</a></p>&mdash; Andrew Ng (@AndrewYNg)
              <a href="https://twitter.com/AndrewYNg/status/894994683931148288?ref_src=twsrc%5Etfw">August 8, 2017</a>
            </blockquote>
          ')
          )
        )
      ),
      server = function(input, output, session) {}
    ))
    

    我使用原始HTML作为推文,但您可以将其转换为HTML标记对象。