The hardware and bandwidth for this mirror is donated by METANET, the Webhosting and Full Service-Cloud Provider.
If you wish to report a bug, or if you are interested in having us mirror your free-software or open-source project, please feel free to contact us at mirror[@]metanet.ch.
vkR
is an R package which provides access to the VKontakte (VK) API.
To get the current released version from CRAN:
install.packages("vkR")
To get the current development version from github:
install.packages("devtools")
::install_github("Dementiy/vkR")
devtoolslibrary("vkR")
Most API requests require the use of an access token. VK has several types of authorization mechanisms. Check out the documentation for more details.
vkOAuth(CLIENT_ID, 'SCOPE', 'EMAIL', 'PASSWORD')
where: * CLIENT_ID
- is an application ID. You have to
create new Standalone-app in
VK to get ID (or use the already existing). * SCOPE
- the
list of comma separated access rights,
e.g. 'friends,groups'
- provide the access to user friends
and groups. List of all rights can be found here. * EMAIL
and
PASSWORD
- username and password.
If the EMAIL
and PASSWORD
have been
omitted, a browser window will be opened. In the address bar an access
token will be shown. Access token must be copied and passed as an
argument into the following function:
setAccessToken(access_token = 'YOUR ACCESS TOKEN')
At your own risk you can use mongodb and mongolite package for storing data:
> db_init()
> wall <- getWallExecute(domain="data_mining_in_action", count=0, use_db=TRUE, progress_bar=TRUE)
|======================...======================| 100%
> show_collections()
db collection suffix count1 temp data_mining_in_action wall 232
If connection was aborted by some reasons we don’t lose our data:
> wall <- getWallExecute(domain='privivkanet', count=0, use_db = T, progress_bar = T)
|================= | 25%
Show Traceback
Rerun with Debugin curl::curl_fetch_memory(url, handle = handle) :
Error
Operation was aborted by an application callback ...> show_collections()
db collection suffix count1 temp data_mining_in_action wall 232
2 temp privivkanet wall 916
> wall <- getWallExecute(domain='privivkanet', count=0, offset=916, use_db = T, progress_bar = T)
|======================...======================| 100%
> show_collections()
db collection suffix count1 temp data_mining_in_action wall 232
2 temp privivkanet wall 3664
You can specify the collection name:
> wall <- getWallExecute(domain="data_mining_in_action", count=0,
use_db=TRUE, db_params=list('collection'='dm', 'suffix'='posts'), progress_bar=TRUE)
|======================...======================| 100%
> show_collections()
db collection suffix count1 temp data_mining_in_action wall 232
2 temp privivkanet wall 3664
3 temp dm posts 232
> friends <- getFriends()
> users <- getUsersExecute(friends$items, use_db = TRUE, db_params=list('collection'='my_friends'), progress_bar = TRUE)
> show_collections()
db collection suffix count1 temp data_mining_in_action wall 232
2 temp privivkanet wall 3664
3 temp dm posts 232
4 temp my_friends 141
For load collection into a namespace you can use
db_load_collection
function:
> db_load_collection('data_mining_in_action', 'wall')
232 records. Simplifying into dataframe...
Imported > ls()
1] "temp.data_mining_in_action.wall"
[> nrow(temp.data_mining_in_action.wall)
1] 232 [
Building a Friend Graph:
<- getFriends(fields = 'sex')
my_friends <- filter(my_friends$items, is.na(deactivated))
my_friends <- getNetwork(my_friends$id)
network
library("igraph")
<- graph.adjacency(as.matrix(network), weighted = T, mode = "undirected")
g <- layout.fruchterman.reingold(g)
layout plot(g, layout = layout)
Analyzing community activity:
<- 'nipponkoku'
domain <- getWallExecute(domain = domain, count = 0, progress_bar = TRUE)
wall <- jsonlite::flatten(wall$posts[c("date", "likes", "comments", "reposts")])
metrics $date <- as.POSIXct(metrics$date, origin="1970-01-01", tz='Europe/Moscow')
metrics
library(dplyr)
<- metrics %>%
df mutate(period = as.Date(cut(date, breaks='month'))) %>%
group_by(period) %>%
summarise(likes = sum(likes.count), comments = sum(comments.count), reposts = sum(reposts.count), n = n())
library(ggplot2)
library(tidyr)
ggplot(data=gather(df, 'type', 'count', 2:5), aes(period, count)) + geom_line(aes(colour=type)) +
labs(x='Date', y='Count')
You can find more examples in examples
directory.
These binaries (installable software) and packages are in development.
They may not be fully stable and should be used with caution. We make no claims about them.