Loading .Rproj.user/3A6580A2/sources/prop/A588C361 0 → 100644 +7 −0 Original line number Diff line number Diff line { "tempName": "Untitled2", "source_window_id": "", "Source": "Source", "cursorPosition": "103,0", "scrollLine": "79" } No newline at end of file .Rproj.user/3A6580A2/sources/prop/INDEX +1 −0 Original line number Diff line number Diff line ~%2FUniHoh%2Fgit%2Fpods_ass_team30%2Fpods_ass_team30%2F01_data%2FGamedetails.R="8FA39B95" ~%2FUniHoh%2Fgit%2Fpods_ass_team30%2Fpods_ass_team30%2F01_data%2FTop100.R="04D1AD1F" ~%2FUniHoh%2Fgit%2Fpods_ass_team30%2Fpods_ass_team30%2F02_code%2Fmyscript.R="A588C361" .Rproj.user/3A6580A2/sources/session-cce98ee3/527D10AB +4 −4 Original line number Diff line number Diff line { "id": "527D10AB", "path": "~/UniHoh/git/pods_ass_team30/pods_ass_team30/01_data/Gamedetails.R", "project_path": "01_data/Gamedetails.R", "path": "~/UniHoh/git/pods_ass_team30/pods_ass_team30/02_code/myscript.R", "project_path": "02_code/myscript.R", "type": "r_source", "hash": "2170310457", "contents": "", Loading @@ -17,11 +17,11 @@ "scrollLine": "79" }, "folds": "", "lastKnownWriteTime": 1765704469, "lastKnownWriteTime": 1765704571, "encoding": "UTF-8", "collab_server": "", "source_window": "", "last_content_update": 1765704469929, "last_content_update": 1765704571269, "read_only": false, "read_only_alternatives": [] } No newline at end of file .Rproj.user/shared/notebooks/paths +1 −0 Original line number Diff line number Diff line C:/Users/Mistar Larry/Documents/UniHoh/git/pods_ass_team30/pods_ass_team30/01_data/Gamedetails.R="EC8B4C0A" C:/Users/Mistar Larry/Documents/UniHoh/git/pods_ass_team30/pods_ass_team30/01_data/Top100.R="A14F2D91" C:/Users/Mistar Larry/Documents/UniHoh/git/pods_ass_team30/pods_ass_team30/02_code/myscript.R="6A98FBF7" 02_code/myscript.R 0 → 100644 +103 −0 Original line number Diff line number Diff line ## 01 - load packages library(httr) library(jsonlite) library(lubridate) ## 02 - collect top 100 games (all time, SteamSpy) # request top 100 games of all time top100.request <- GET(url = "https://steamspy.com/api.php?request=top100forever") # parse JSON into list top100.raw <- content(top100.request, as = "text", encoding = "UTF-8") top100.list <- fromJSON(top100.raw) # convert list of entries to data frame top100.list1 <- lapply(top100.list, as.data.frame) top100 <- do.call("rbind", top100.list1) # transform numeric variables top100$price <- as.numeric(top100$price) top100$initialprice <- as.numeric(top100$initialprice) top100$discount <- as.numeric(top100$discount) # save save(top100, file = "C:/Users/Mistar Larry/Documents/UniHoh/git/pods_ass_team30/pods_ass_team30/01_data/top100.RData") ############################################################ ## 03 - download game details for one app (526870) ############################################################ gameid <- 526870 game.details <- "https://store.steampowered.com/api/appdetails/?" query.list <- list(appids = gameid) details.request <- GET(url = game.details, query = query.list) details.raw <- content(details.request, as = "text", encoding = "UTF-8") details.list <- fromJSON(details.raw) gamedetails <- details.list save(gamedetails, file = "C:/Users/Mistar Larry/Documents/UniHoh/git/pods_ass_team30/pods_ass_team30/01_data/gamedetails.RData") ############################################################ ## 04 - collect recent user reviews for that app (n = 100) ############################################################ n <- 100 game.rev <- data.frame() rev.url1 <- "https://store.steampowered.com/appreviews/" rev.url2 <- "?json=1&filter=recent&num_per_page=100&cursor=" cursor <- "*" for (i in 1:n) { rev.request <- GET(url = paste0(rev.url1, gameid, rev.url2, cursor)) reviews.raw <- content(rev.request, as = "text", encoding = "UTF-8") reviews.list <- fromJSON(reviews.raw) reviews <- reviews.list$reviews if (!("recommendationid" %in% names(reviews))) { message(paste0( "No further recent reviews are available for App ID ", as.character(gameid), ". Query ", i, " of ", n, " aborted. No further queries possible." )) break } reviews$recommendationid <- as.character(reviews$recommendationid) reviews$weighted_vote_score <- as.numeric(reviews$weighted_vote_score) reviews$timestamp_created <- as_datetime(reviews$timestamp_created) reviews$timestamp_updated <- as_datetime(reviews$timestamp_updated) if (i == 1 || ncol(game.rev) == 0) { game.rev <- reviews } else { vars <- intersect(names(reviews), names(game.rev)) game.rev <- game.rev[, vars] reviews <- reviews[, vars] game.rev <- rbind(game.rev, reviews) } cursor <- reviews.list$cursor cursor <- gsub("%2B", "+", cursor) message(paste0("Finished query ", i, " of ", n, " for App ID ", gameid, ".")) Sys.sleep(0.5) } # save reviews data frame save(game.rev, file = "C:/Users/Mistar Larry/Documents/UniHoh/git/pods_ass_team30/pods_ass_team30/01_data/gamereviews.RData") ############################################################ ## 05 - 100 reviews + summary ############################################################ rev.request2 <- GET( url = paste0( rev.url1, gameid, "?json=1&filter=recent&num_per_page=100&purchase_type=all&cursor=*" ) ) reviews.raw2 <- content(rev.request2, as = "text", encoding = "UTF-8") reviews.list2 <- fromJSON(reviews.raw2) # reviews data reviews_100 <- reviews.list2$reviews # query summary as data frame revsummary <- as.data.frame(reviews.list2$query_summary, stringsAsFactors = FALSE) save(revsummary, file = "C:/Users/Mistar Larry/Documents/UniHoh/git/pods_ass_team30/pods_ass_team30/01_data/revsummary.RData") Loading
.Rproj.user/3A6580A2/sources/prop/A588C361 0 → 100644 +7 −0 Original line number Diff line number Diff line { "tempName": "Untitled2", "source_window_id": "", "Source": "Source", "cursorPosition": "103,0", "scrollLine": "79" } No newline at end of file
.Rproj.user/3A6580A2/sources/prop/INDEX +1 −0 Original line number Diff line number Diff line ~%2FUniHoh%2Fgit%2Fpods_ass_team30%2Fpods_ass_team30%2F01_data%2FGamedetails.R="8FA39B95" ~%2FUniHoh%2Fgit%2Fpods_ass_team30%2Fpods_ass_team30%2F01_data%2FTop100.R="04D1AD1F" ~%2FUniHoh%2Fgit%2Fpods_ass_team30%2Fpods_ass_team30%2F02_code%2Fmyscript.R="A588C361"
.Rproj.user/3A6580A2/sources/session-cce98ee3/527D10AB +4 −4 Original line number Diff line number Diff line { "id": "527D10AB", "path": "~/UniHoh/git/pods_ass_team30/pods_ass_team30/01_data/Gamedetails.R", "project_path": "01_data/Gamedetails.R", "path": "~/UniHoh/git/pods_ass_team30/pods_ass_team30/02_code/myscript.R", "project_path": "02_code/myscript.R", "type": "r_source", "hash": "2170310457", "contents": "", Loading @@ -17,11 +17,11 @@ "scrollLine": "79" }, "folds": "", "lastKnownWriteTime": 1765704469, "lastKnownWriteTime": 1765704571, "encoding": "UTF-8", "collab_server": "", "source_window": "", "last_content_update": 1765704469929, "last_content_update": 1765704571269, "read_only": false, "read_only_alternatives": [] } No newline at end of file
.Rproj.user/shared/notebooks/paths +1 −0 Original line number Diff line number Diff line C:/Users/Mistar Larry/Documents/UniHoh/git/pods_ass_team30/pods_ass_team30/01_data/Gamedetails.R="EC8B4C0A" C:/Users/Mistar Larry/Documents/UniHoh/git/pods_ass_team30/pods_ass_team30/01_data/Top100.R="A14F2D91" C:/Users/Mistar Larry/Documents/UniHoh/git/pods_ass_team30/pods_ass_team30/02_code/myscript.R="6A98FBF7"
02_code/myscript.R 0 → 100644 +103 −0 Original line number Diff line number Diff line ## 01 - load packages library(httr) library(jsonlite) library(lubridate) ## 02 - collect top 100 games (all time, SteamSpy) # request top 100 games of all time top100.request <- GET(url = "https://steamspy.com/api.php?request=top100forever") # parse JSON into list top100.raw <- content(top100.request, as = "text", encoding = "UTF-8") top100.list <- fromJSON(top100.raw) # convert list of entries to data frame top100.list1 <- lapply(top100.list, as.data.frame) top100 <- do.call("rbind", top100.list1) # transform numeric variables top100$price <- as.numeric(top100$price) top100$initialprice <- as.numeric(top100$initialprice) top100$discount <- as.numeric(top100$discount) # save save(top100, file = "C:/Users/Mistar Larry/Documents/UniHoh/git/pods_ass_team30/pods_ass_team30/01_data/top100.RData") ############################################################ ## 03 - download game details for one app (526870) ############################################################ gameid <- 526870 game.details <- "https://store.steampowered.com/api/appdetails/?" query.list <- list(appids = gameid) details.request <- GET(url = game.details, query = query.list) details.raw <- content(details.request, as = "text", encoding = "UTF-8") details.list <- fromJSON(details.raw) gamedetails <- details.list save(gamedetails, file = "C:/Users/Mistar Larry/Documents/UniHoh/git/pods_ass_team30/pods_ass_team30/01_data/gamedetails.RData") ############################################################ ## 04 - collect recent user reviews for that app (n = 100) ############################################################ n <- 100 game.rev <- data.frame() rev.url1 <- "https://store.steampowered.com/appreviews/" rev.url2 <- "?json=1&filter=recent&num_per_page=100&cursor=" cursor <- "*" for (i in 1:n) { rev.request <- GET(url = paste0(rev.url1, gameid, rev.url2, cursor)) reviews.raw <- content(rev.request, as = "text", encoding = "UTF-8") reviews.list <- fromJSON(reviews.raw) reviews <- reviews.list$reviews if (!("recommendationid" %in% names(reviews))) { message(paste0( "No further recent reviews are available for App ID ", as.character(gameid), ". Query ", i, " of ", n, " aborted. No further queries possible." )) break } reviews$recommendationid <- as.character(reviews$recommendationid) reviews$weighted_vote_score <- as.numeric(reviews$weighted_vote_score) reviews$timestamp_created <- as_datetime(reviews$timestamp_created) reviews$timestamp_updated <- as_datetime(reviews$timestamp_updated) if (i == 1 || ncol(game.rev) == 0) { game.rev <- reviews } else { vars <- intersect(names(reviews), names(game.rev)) game.rev <- game.rev[, vars] reviews <- reviews[, vars] game.rev <- rbind(game.rev, reviews) } cursor <- reviews.list$cursor cursor <- gsub("%2B", "+", cursor) message(paste0("Finished query ", i, " of ", n, " for App ID ", gameid, ".")) Sys.sleep(0.5) } # save reviews data frame save(game.rev, file = "C:/Users/Mistar Larry/Documents/UniHoh/git/pods_ass_team30/pods_ass_team30/01_data/gamereviews.RData") ############################################################ ## 05 - 100 reviews + summary ############################################################ rev.request2 <- GET( url = paste0( rev.url1, gameid, "?json=1&filter=recent&num_per_page=100&purchase_type=all&cursor=*" ) ) reviews.raw2 <- content(rev.request2, as = "text", encoding = "UTF-8") reviews.list2 <- fromJSON(reviews.raw2) # reviews data reviews_100 <- reviews.list2$reviews # query summary as data frame revsummary <- as.data.frame(reviews.list2$query_summary, stringsAsFactors = FALSE) save(revsummary, file = "C:/Users/Mistar Larry/Documents/UniHoh/git/pods_ass_team30/pods_ass_team30/01_data/revsummary.RData")