В суасних системах існує технологія отримання даних через API - application programming interface. Для отримання даних через API потрібно зареєструватись у системі та отримати свій логін і пароль.
https://console.developers.google.com
Заходимо у розділ credentials та створюємо OAuth 2.0 client IDs.
library(png)
png <- readPNG("/home/ignatius/Documents/MyCode/R/BrovaryLectures/Screenshot.png")
plot.new()
plot.window(xlim = c(0,10),ylim = c(0,10))
rasterImage(png,0,0,8,10)
library(png)
png <- readPNG("/home/ignatius/Documents/MyCode/R/BrovaryLectures/Screenshot2.png")
plot.new()
plot.window(xlim = c(0,10),ylim = c(0,10))
rasterImage(png,0,0,8,10)
library(tuber)
client_id <- "620238976271-7h2lt1unk4ublq69s3o5m77br3huut0l.apps.googleusercontent.com"
secret_id <- "IdGFYeNXTcQgqvbhKvs3nssL"
yt_oauth(client_id,secret_id)
res <- yt_search("Духлий")
head(res[,c("video_id","title")],5)
## video_id
## 1 BlVFBmQ2KnM
## 2 DKoTEUkrlEQ
## 3 ATJZWifQ_wM
## 4 1TRzikxTsE0
## 5 9LkIDd_qx4g
## title
## 1 Барышня-Крестьянка. Духлий / Пестова. Выпуск 1
## 2 Филипп Духлий: "PayPal будет сигналом инвесторам, что можно приходить в страну"
## 3 Виктория Духлий
## 4 фото шоу Николай Духлий день рождения
## 5 Сложные испытания Вики Духлий
video_id <- "DKoTEUkrlEQ"
stats <- get_stats(video_id)
Кількість переглядів:
stats$viewCount
## [1] "1147"
Кількість лайків:
stats$likeCount
## [1] "22"
Кількість дизлайків:
stats$dislikeCount
## [1] "0"
Кількість додавання до списку улюблених:
stats$favoriteCount
## [1] "0"
Кількість коментарів:
stats$commentCount
## [1] "1"
get_video_details(video_id)
## $kind
## [1] "youtube#videoListResponse"
##
## $etag
## [1] "\"ld9biNPKjAjgjV7EZ4EKeEGrhao/J61IGxhvKxzloIFfh2RtVi9M6sc\""
##
## $pageInfo
## $pageInfo$totalResults
## [1] 1
##
## $pageInfo$resultsPerPage
## [1] 1
##
##
## $items
## $items[[1]]
## $items[[1]]$kind
## [1] "youtube#video"
##
## $items[[1]]$etag
## [1] "\"ld9biNPKjAjgjV7EZ4EKeEGrhao/mDJFPPPFK3-XPNaT76JS9Ywqa5c\""
##
## $items[[1]]$id
## [1] "DKoTEUkrlEQ"
##
## $items[[1]]$snippet
## $items[[1]]$snippet$publishedAt
## [1] "2016-07-06T16:59:19.000Z"
##
## $items[[1]]$snippet$channelId
## [1] "UCauO27RA83XjtEKVPfsotHg"
##
## $items[[1]]$snippet$title
## [1] "Филипп Духлий: \"PayPal будет сигналом инвесторам, что можно приходить в страну\""
##
## $items[[1]]$snippet$description
## [1] "Зачем и кому в Украине нужен PayPal? Почему приход PayPal в Украину до сих пор откладывается? На эти вопросы ответит участник группы PayPal for Ukraine Initiative Филипп Духлий.\n\nБольше IDEALIST.media:\nYouTube: bit.ly/idealistmedia\nНаш сайт: http://www.idealist.media/\nFacebook: https://www.facebook.com/idealistmedia\nVK: http://vk.com/idealistmedia\nАудиоподкасти: https://soundcloud.com/idealistmedia"
##
## $items[[1]]$snippet$thumbnails
## $items[[1]]$snippet$thumbnails$default
## $items[[1]]$snippet$thumbnails$default$url
## [1] "https://i.ytimg.com/vi/DKoTEUkrlEQ/default.jpg"
##
## $items[[1]]$snippet$thumbnails$default$width
## [1] 120
##
## $items[[1]]$snippet$thumbnails$default$height
## [1] 90
##
##
## $items[[1]]$snippet$thumbnails$medium
## $items[[1]]$snippet$thumbnails$medium$url
## [1] "https://i.ytimg.com/vi/DKoTEUkrlEQ/mqdefault.jpg"
##
## $items[[1]]$snippet$thumbnails$medium$width
## [1] 320
##
## $items[[1]]$snippet$thumbnails$medium$height
## [1] 180
##
##
## $items[[1]]$snippet$thumbnails$high
## $items[[1]]$snippet$thumbnails$high$url
## [1] "https://i.ytimg.com/vi/DKoTEUkrlEQ/hqdefault.jpg"
##
## $items[[1]]$snippet$thumbnails$high$width
## [1] 480
##
## $items[[1]]$snippet$thumbnails$high$height
## [1] 360
##
##
## $items[[1]]$snippet$thumbnails$standard
## $items[[1]]$snippet$thumbnails$standard$url
## [1] "https://i.ytimg.com/vi/DKoTEUkrlEQ/sddefault.jpg"
##
## $items[[1]]$snippet$thumbnails$standard$width
## [1] 640
##
## $items[[1]]$snippet$thumbnails$standard$height
## [1] 480
##
##
## $items[[1]]$snippet$thumbnails$maxres
## $items[[1]]$snippet$thumbnails$maxres$url
## [1] "https://i.ytimg.com/vi/DKoTEUkrlEQ/maxresdefault.jpg"
##
## $items[[1]]$snippet$thumbnails$maxres$width
## [1] 1280
##
## $items[[1]]$snippet$thumbnails$maxres$height
## [1] 720
##
##
##
## $items[[1]]$snippet$channelTitle
## [1] "IDEALIST.media"
##
## $items[[1]]$snippet$tags
## $items[[1]]$snippet$tags[[1]]
## [1] "idealist media"
##
## $items[[1]]$snippet$tags[[2]]
## [1] "бизнес"
##
## $items[[1]]$snippet$tags[[3]]
## [1] "украинский бизнес"
##
## $items[[1]]$snippet$tags[[4]]
## [1] "бизнес в Украине"
##
## $items[[1]]$snippet$tags[[5]]
## [1] "платежные системы"
##
## $items[[1]]$snippet$tags[[6]]
## [1] "PayPal"
##
## $items[[1]]$snippet$tags[[7]]
## [1] "PayPal в Украине"
##
## $items[[1]]$snippet$tags[[8]]
## [1] "инвестиции"
##
## $items[[1]]$snippet$tags[[9]]
## [1] "инвестиции в экономику"
##
## $items[[1]]$snippet$tags[[10]]
## [1] "привлечение инвестиций"
##
## $items[[1]]$snippet$tags[[11]]
## [1] "привлечение инвестиций в Украину"
##
##
## $items[[1]]$snippet$categoryId
## [1] "1"
##
## $items[[1]]$snippet$liveBroadcastContent
## [1] "none"
##
## $items[[1]]$snippet$localized
## $items[[1]]$snippet$localized$title
## [1] "Филипп Духлий: \"PayPal будет сигналом инвесторам, что можно приходить в страну\""
##
## $items[[1]]$snippet$localized$description
## [1] "Зачем и кому в Украине нужен PayPal? Почему приход PayPal в Украину до сих пор откладывается? На эти вопросы ответит участник группы PayPal for Ukraine Initiative Филипп Духлий.\n\nБольше IDEALIST.media:\nYouTube: bit.ly/idealistmedia\nНаш сайт: http://www.idealist.media/\nFacebook: https://www.facebook.com/idealistmedia\nVK: http://vk.com/idealistmedia\nАудиоподкасти: https://soundcloud.com/idealistmedia"
канал Броботс
id <- "UC4Nt8pJOIHN2YWRQhYsjjHg"
stats <- get_channel_stats(id)
## Channel Title: BroBots - Brovary IT Hub
## No. of Views: 616
## No. of Subscribers: 63
## No. of Videos: 12
статистика канала
stats$kind
## [1] "youtube#channel"
stats$id
## [1] "UC4Nt8pJOIHN2YWRQhYsjjHg"
stats$statistics
## $viewCount
## [1] "616"
##
## $commentCount
## [1] "0"
##
## $subscriberCount
## [1] "63"
##
## $hiddenSubscriberCount
## [1] FALSE
##
## $videoCount
## [1] "12"
library(jpeg)
download.file(stats$snippet$thumbnails$high$url, "tets.jpg")
jj <- readJPEG("tets.jpg")
plot(0:1,0:1,type="n",ann=FALSE,axes=FALSE)
rasterImage(jj,0,0,0.8,1)
візуалізація
stats$statistics
## $viewCount
## [1] "616"
##
## $commentCount
## [1] "0"
##
## $subscriberCount
## [1] "63"
##
## $hiddenSubscriberCount
## [1] FALSE
##
## $videoCount
## [1] "12"
Витягнути інформацію щодо кількості відо на каналі, знайти характеристики кожного відео і зобразити їх різнокольоровими точками на графіку. Вісь х - назва відео, вісь у - кількість.
https://developers.facebook.com/apps
library(Rfacebook)
## Loading required package: httr
## Loading required package: rjson
## Loading required package: httpuv
##
## Attaching package: 'Rfacebook'
## The following object is masked from 'package:methods':
##
## getGroup
#fb_oauth <- fbOAuth(app_id="1101117296672708",
# app_secret="5fe05b33a471492b07c841d86495897b",
# extended_permissions = TRUE)
#save(fb_oauth, file="fb_oauth")
load("fb_oauth")
page <- searchPages("BroBots - Brovary IT Hub", token = fb_oauth)
## 1 pages
page
## id about category
## 1 1544694599159258 Броварський центр технічного розвитку Robotics Company
## description general_info likes link
## 1 NA NA NA https://www.facebook.com/brobots.hub/
## city state country latitude longitude name
## 1 Brovary NA Ukraine 50.52512 30.79056 BroBots - Brovary IT Hub
## talking_about_count username website
## 1 17 brobots.hub http://brobots.org.ua
page_info <- getGroup(group_id = page$id[1],token = fb_oauth, n = 300)
## 25 posts 50 posts 75 posts 100 posts 125 posts 150 posts 175 posts 192 posts
page_info$date <- format.Date(substr(page_info$created_time,1,10),"%Y-%m-%d")
page_info$month <- format.Date(substr(page_info$created_time,1,10),"%Y-%m")
Отже ми отримали дані про активність Фейсбук сторінки
head(page_info$message, 5)
## [1] "Ми оголошуємо про чемпіонат Броварів з боїв роботів #NY18BroBotsChallenge та починаємо набір групи для бажаючих прийняти участь в змаганнях та створити власного унікального бойового робота.\n\nРегламент змагань буде розроблятись разом з дітьми.\n\nЗагальна концепція така:\n✅між собою змагаються команди\n✅кількість учасників в команді не обмежена\n✅кількість роботів в команді обмежена максимальною сумарною напругою 30 вольт\n✅в битві присутні тількі дві команди\n✅поле для бою - 8х5 метрів, команди стартують зі своїх зон\n✅кожній команді надається стандартний візочок з кулькою\n✅перемагає та команда, що лусне кульку на візочку супротивника\n✅максимальний розмір робота 50х50 см, висота не обмежена\n\nКруто? Але це не все!\n\n⚙фантазія та конструкторські здібності дітей обмежуються тільки максимальними розмірами конструкції\n⚙ніяких обмежень на комплектуючі окрім максимальної сумарної напруги елементів живлення\n⚙безліч стратегій та конфігурацій роботів\n⚙діти вчитимуться не тільки складати роботів, але і складати бюджет свого робота, оптимізувати його, оцінювати комплектуючі з точки зору ціни та ефективності\n\n⚠ Приходь до нас 18 листопада в суботу на 14-00 на відкритий урок та дізнайся більше! Вхід вільний!\nhttps://www.facebook.com/events/1527657673991706/\n\n⚠Записатись на курс можна за посиланнями\nВища ліга (якщо ти ходив на Advanced курси робототехніки)⬇\nhttps://2event.com/uk/events/1068918\n\nМолодша ліга (для новачків та початківців) ⬇\nhttps://2event.com/uk/events/1074177"
## [2] "Ми оголошуємо про чемпіонат Броварів з боїв роботів NY'18 BroBots Challenge та починаємо набір групи для бажаючих прийняти участь в змаганнях та створити власного унікального бойового робота.\n\nРегламент змагань буде розроблятись разом з дітьми.\n\nЗагальна концепція така:\n✅між собою змагаються команди\n✅кількість учасників в команді не обмежена\n✅кількість роботів в команді обмежена максимальною сумарною напругою 30 вольт\n✅в битві присутні тількі дві команди\n✅поле для бою - 8х5 метрів, команди стартують зі своїх зон\n✅кожній команді надається стандартний візочок з кулькою\n✅перемагає та команда, що лусне кульку на візочку супротивника\n✅максимальний розмір робота 50х50 см, висота не обмежена\n\nКруто? Але це не все!\n\n⚙фантазія та конструкторські здібності дітей обмежуються тільки максимальними розмірами конструкції\n⚙ніяких обмежень на комплектуючі окрім максимальної сумарної напруги елементів живлення\n⚙безліч стратегій та конфігурацій роботів\n⚙діти вчитимуться не тільки складати роботів, але і складати бюджет свого робота, оптимізувати його, оцінювати комплектуючі з точки зору ціни та ефективності\n\n⚠ Приходь до нас 18 листопада в суботу на 14-00 на відкритий урок та дізнайся більше! Вхід вільний!\n\n⚠Записатись на курс можна за посиланнями\nВища ліга (якщо ти ходив на всі наші курси робототехніки)⬇\nhttps://2event.com/uk/events/1068918\n\nМолодша ліга (для новачків та початківців) ⬇\nhttps://2event.com/uk/events/1074177\n \n\n#NY18BroBotsChallenge"
## [3] "Ми оголошуємо про чемпіонат Броварів з боїв роботів NY'18 BroBots Challenge та починаємо набір групи для бажаючих прийняти участь в змаганнях та створити власного унікального бойового робота.\n\nРегламент змагань буде розроблятись разом з дітьми. \n\nЗагальна концепція така:\n✅між собою змагаються команди\n✅кількість учасників в команді не обмежена\n✅кількість роботів в команді обмежена максимальною сумарною напругою 30 вольт\n✅в битві присутні тількі дві команди\n✅поле для бою - 8х5 метрів, команди стартують зі своїх зон\n✅кожній команді надається стандартний візочок з кулькою\n✅перемагає та команда, що лусне кульку на візочку супротивника\n✅максимальний розмір робота 50х50 см, висота не обмежена\n\nКруто? Але це не все!\n\n⚙фантазія та конструкторські здібності дітей обмежуються тільки максимальними розмірами конструкції\n⚙ніяких обмежень на комплектуючі окрім максимальної сумарної напруги елементів живлення\n⚙безліч стратегій та конфігурацій роботів\n⚙діти вчитимуться не тільки складати роботів, але і складати бюджет свого робота, оптимізувати його, оцінювати комплектуючі з точки зору ціни та ефективності\n\nЦікаво❓\nБільше інформації та запис на курс ⬇\nhttps://2event.com/uk/events/1068918\n\nХочеш задати своє питання та дізнатись більше? ⬇\nПриходь до нас в суботу 18 листопада на 14-00 на відкритий урок. Вхід вільний."
## [4] "Ми запускаємо курс Scratch. Створення ігор (8+)\n\nКОРОТКИЙ ОПИС\nКурс програмування простих ігор у візуальному середовищі Scratch. Передбачається детальна робота з базовими структурами алгоритмів, які є платформою програмування вцілому, незалежно від вибору мови. Завдяки цьому середовищу діти зможуть створювати власні анімовані та інтерактивні історії, ігри та моделі.\n\nВІК СЛУХАЧІВ\n8+ років\n\nЧАС ТА ДНІ ЗАНЯТЬ\nЩоп’ятниці з 15-00 до 17-00 та щонеділі з 9-00 до 11-00\n\nПОЧАТОК ЗАНЯТЬ\n17 листопада\n\nТРИВАЛІСТЬ\n12 занять (6 тижнів)\n\nВАРТІСТЬ НАВЧАННЯ\n75 грн за заняття\nЯкщо вам потрібна фінансова підтримка в навчанні, скористайтесь нашою програмою надання грантів на навчання.\nhttps://goo.gl/forms/HnCTzCSm4jDsnkdp1\n\nЗАПИС ТА ОПЛАТА\nhttps://2event.com/uk/events/1065854"
## [5] "КОРОТКИЙ ОПИС\nКурс програмування простих ігор у візуальному середовищі Scratch. Передбачається детальна робота з базовими структурами алгоритмів, які є платформою програмування вцілому, незалежно від вибору мови. Завдяки цьому середовищу діти зможуть створювати власні анімовані та інтерактивні історії, ігри та моделі.\n\nМОВА ВИКЛАДАННЯ\nУкраїнська\n\nВІК СЛУХАЧІВ\n8+ років\n\nНЕОБХІДНІ ЗНАННЯ ДЛЯ ПОЧАТКУ НАВЧАННЯ\nВолодіння персональним комп’ютером. Знання базових структур алгоритмів та блоків Scratch, що їх відображають.\n\nЗНАННЯ ПІСЛЯ НАВЧАННЯ\nРозуміння процесу алгоритмізації, використання базових структур алгоритмів та їх поєднання при створенні різноманітних ігор, розвиток творчого мислення. Навички програмування в середовищі Scratch використовуються для початкового знайомства з мовою програмування Python або інших мов.\n\nДОДАТКОВІ МАТЕРІАЛИ\nБажано мати свій ноутбук. В разі відсутності - ми надамо ноутбук на заняттях.\n\nТРИВАЛІСТЬ\n12 занять\n\nЧАС ТА ДНІ ЗАНЯТЬ\nЩоп’ятниці з 15-00 до 17-00 та щонеділі з 9-00 до 11-00\n\nПОЧАТОК ЗАНЯТЬ\n17 листопада\n\nКІЛЬКІСТЬ УЧНІВ В ГРУПІ\nдо 15\n\nАДРЕСА БРОБОТС\nвул. Київська, 265/2, корпус Мокко (біля Мандаринки), ж/к Шоколад, Бровари.\nтелефон 063 843 53 39, 050 351 38 72\nCхема проїзду\nhttps://www.facebook.com/brobots.hub/photos/a.1546878308940887.1073741828.1544694599159258/1607130409582343/?type=3&permPage=1\n\nІНФОРМАЦІЯ ПРО ВИКЛАДАЧА\nДуга Ірина – вчитель інформатики та інформаційних технологій. У 2002р. закінчила ХДПУ за спеціальністю «ПМСО. Математика. Інформатика.» 2015р. - курси академії Cisco IT- інструктор.\n\nВАРТІСТЬ НАВЧАННЯ\n75 грн за заняття\nЯкщо вам потрібна фінансова підтримка в навчанні, скористайтесь нашою програмою надання грантів на навчання.\nhttps://goo.gl/forms/HnCTzCSm4jDsnkdp1\n\nЗАПИС ТА ОПЛАТА\nhttps://2event.com/uk/events/1065854\n\n\nПРОГРАМА КУРСУ\n1. Паралельне виконання скриптів. Повторення базових структур алгоритмів. Поєднання різних структур алгоритмів у програмі. Проект «Dino».\n\n2. Повторення поняття змінної в Scratch. Типи змінних. Створення проекту з використанням змінної. Гра «Виживання під водою». Вчимося знімати відео- проекту.\n\n3. Логічні операції та їх значення (true, false). Введення понять: оператори, операнди. Проста умова. Створення програми з використанням простої умови. Гра «Вікторина».\n\n4. Складена умова. Створення програми з використанням складеної умови. Використання генератора випадкових чисел. Проект «Лабіринт»\n\n5. Етапи розробки ігрових проектів від ідеї до тестування. Способи реалізації творчих проектів.\n\n6. Створення програми імітації роботи графічного редактора.\n\n7. Створення гри «Хрестики - нулики». Розбиття програми на частини.\n\n8. Створення творчого проекту-гри з додаванням звуків та реплік.\n\n9. Створення гри з використання клонів в Scratch.\n\n10. Гра «Танчики». Зміна костюмів. Розробка стратегії гри.\n\n11. Створення власної міні-гри в середовищі Scratch .\n\n12. Створення власної міні-гри в середовищі Scratch"
Що тут взагалі є?
names(page_info)
## [1] "from_id" "from_name" "message" "created_time"
## [5] "type" "link" "id" "story"
## [9] "likes_count" "comments_count" "shares_count" "date"
## [13] "month"
library(dplyr)
##
## Attaching package: 'dplyr'
## The following objects are masked from 'package:stats':
##
## filter, lag
## The following objects are masked from 'package:base':
##
## intersect, setdiff, setequal, union
page_summary <- page_info %>%
group_by(month) %>%
summarise(total_amount = n(),
likes_amount = sum(likes_count),
comments_amount = sum(comments_count),
shares_amount = sum(shares_count)) %>%
ungroup()
library(ggplot2)
ggplot(page_summary, aes(x = month, y = total_amount)) +
geom_bar(stat = "identity", fill = "darkgreen") +
xlab("Місяць") +
ylim(0,25) +
ylab("Загальна кількість") +
ggtitle("Кількість публікацій за місяцями") +
geom_text(aes(label=paste(page_summary$total_amount),
y = page_summary$total_amount + 0.5), size=4) +
coord_flip()
ggplot(page_summary, aes(x = month, y = likes_amount)) +
geom_bar(stat = "identity", fill = "darkblue") +
xlab("Місяць") +
ylim(0,700) +
ylab("Загальна кількість") +
ggtitle("Кількість лайків за місяцями") +
geom_text(aes(label=paste(page_summary$likes_amount),
y = page_summary$likes_amount + 20), size=4) +
coord_flip()
ggplot(page_summary, aes(x = month, y = comments_amount)) +
geom_bar(stat = "identity", fill = "darkred") +
xlab("Місяць") +
ylim(0,70) +
ylab("Загальна кількість") +
ggtitle("Кількість коментарів за місяцями") +
geom_text(aes(label=paste(page_summary$comments_amount),
y = page_summary$comments_amount + 1), size=4) +
coord_flip()
ggplot(page_summary, aes(x = month, y = shares_amount)) +
geom_bar(stat = "identity", fill = "brown") +
xlab("Місяць") +
ylim(0,500) +
ylab("Загальна кількість") +
ggtitle("Кількість розшарів за місяцями") +
geom_text(aes(label=paste(page_summary$shares_amount),
y = page_summary$shares_amount + 10), size=4) +
coord_flip()