Commit 7f2068ed authored by Augustine Mensah's avatar Augustine Mensah
Browse files

saving my script

parent 11012c9d
Loading
Loading
Loading
Loading
+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
+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"
+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": "",
@@ -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
+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")