-
Notifications
You must be signed in to change notification settings - Fork 0
/
screencasts.Rmd_old
85 lines (69 loc) · 2.88 KB
/
screencasts.Rmd_old
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
---
title: "Screencasts"
output:
html_document:
theme: "spacelab"
css: other_page_styles.css
---
```{r setup, include=FALSE}
knitr::opts_chunk$set(echo = TRUE)
# Load the necessary packages
require(curl)
require(jsonlite)
```
```{r prepare_data, echo=FALSE}
# Set up your API key obtained via https://console.developers.google.com/
# youtube_api_key <- '<insert_your_google_api_key_here>'
# save(youtube_api_key, file = "youtube_api_key.RData")
# load your API key
load("youtube_api_key.RData")
API_key <- youtube_api_key
# Base URL for Google API's services and YouTube specific API's
Base_URL='https://www.googleapis.com/youtube/v3'
# YouTube Web Services
# Note that we have replaced the %2C with "," so sprintf works correctly with it
# as an alternative we can add an extra % in front of %2C to make it %%2C
YT_Service <- c( 'playlists?part=snippet&channelId=%s&key=%s')
# Form request URL
url <- paste0(Base_URL, "/", sprintf(YT_Service[1], 'UCNhj3I--Xhm1plgLpR2V2Cw', API_key))
# Perform query
result <- fromJSON(txt=url)
# retrieve channels information
channels <- result$items$snippet
# Get ids the same way
YT_Service <- c( 'playlists?part=id&channelId=%s&key=%s')
url <- paste0(Base_URL, "/", sprintf(YT_Service[1], 'UCNhj3I--Xhm1plgLpR2V2Cw', API_key))
result <- fromJSON(txt=url)
channel_ids <- result$items$id
```
```{r results = 'asis', echo = FALSE}
#### textoutput ####
for (i in 1:nrow(channels)){
this_channel <- channels[i,]
this_channel_id <- channel_ids[i]
this_channel_heading <- paste('<h2>',this_channel$title,'</h2>', sep="")
cat(this_channel_heading)
# Video Details
#TODO maxResults=50, wenn wir mal mehr als 50 Videos haben, muss hier eine Lösung gefunden werden.
YT_Service <- c( 'playlistItems?part=snippet&playlistId=%s&key=%s&maxResults=50')
url <- paste0(Base_URL, "/", sprintf(YT_Service, this_channel_id, API_key))
result <- fromJSON(txt=url)
this_channel_videos <- result$items$snippet
this_channel_videos <- this_channel_videos[order(this_channel_videos$title),]
# Video Ids
YT_Service <- c( 'playlistItems?part=id&playlistId=%s&key=%s&maxResults=50')
url <- paste0(Base_URL, "/", sprintf(YT_Service, this_channel_id, API_key))
result <- fromJSON(txt=url)
this_channel_video_ids <- result$items$id
this_channel_video_ids <- this_channel_video_ids[order(this_channel_videos$title)]
for (t in 1:nrow(this_channel_videos)) {
this_video <- this_channel_videos[t,]
this_video_heading <- paste('<h3>',this_video$title,'</h3>', sep="")
cat(this_video_heading)
this_video_embedd <- paste('<iframe width="560" height="315" src="https://www.youtube.com/embed/',this_video$resourceId$videoId,'" frameborder="0" allow="autoplay; encrypted-media" allowfullscreen></iframe>', sep="")
cat(this_video_embedd)
this_video_description <- paste('<p>',this_video$description,'</p>', sep="")
cat(this_video_description)
}
}
```