Я пытаюсь сохранить текущее время встроенного видео YouTube в блестящем приложении по нажатию кнопки. В конце концов я хотел бы иметь возможность вернуть данные этого времени в свою среду R, но сейчас я просто борюсь с тем, как использовать API YouTube в блестящем.
Я знаю по API YouTube и по этому вопросу, что вы можете узнать текущее время встроенного видео YouTube. Но когда я обертываю это видео в интерфейсе Shiny, у него есть класс глянцевый-html-выход глянцевый-выходной , и я не могу найти элемент нижнего уровня, который соответствует управляемому видео YouTube, по API.
library(shiny)
library(shinyjs)
ui <- fluidPage(
useShinyjs()
,titlePanel("Hello Shiny!")
,sidebarLayout(
sidebarPanel(
actionButton("button", "Capture Video Time")
),
mainPanel(
uiOutput("video")
)
)
)
server <- function(input, output) {
output$video <- renderUI({
HTML('<iframe width="560" height="315" src="https://www.youtube.com/embed/FR4QIeZaPeM" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>')
})
observeEvent(input$button, {
runjs(
"ytplayer = document.getElementById('video');
var time = ytplayer.getCurrentTime();
alert(time);"
)
})
}
shinyApp(ui = ui, server = server)
Я ожидаю, что когда я нажму кнопку в приложении Shiny, появится окно с текущим временем видео на YouTube, но вместо этого ничего не произойдет. Так что моя самая большая потребность в том, чтобы получить этот код javascript прямо внутри функции runjs()
(или что-то еще, если runjs()
здесь не подходит), чтобы я мог реально найти время проигрывателя видео. Если у вас есть какое-то понимание того, как вернуть текущее значение времени в мою среду R, это также будет оценено, но я, вероятно, смогу разобраться с этой частью, как только схожу по правильному пути. Большое спасибо заранее!