Commit 96590aaa authored by Augustine Mensah's avatar Augustine Mensah
Browse files

Final Work

parent adce4727
Loading
Loading
Loading
Loading

00_docs/Assignment.pdf

deleted100644 → 0
−240 KiB

File deleted.

00_docs/Assignment_Guidelines.pdf

deleted100644 → 0
−191 KiB

File deleted.

00_docs/Your_GameID.pdf

deleted100644 → 0
−77.8 KiB

File deleted.

01_data/Gamedetails.R

deleted100644 → 0
+0 −103
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")

01_data/gamedetails.RData

deleted100644 → 0
−5.27 KiB

File deleted.

Loading