Skip to content

Instantly share code, notes, and snippets.

@KamilSJaron
Created July 8, 2018 14:24
Show Gist options
  • Save KamilSJaron/90dab6358b6fd1a4d7646b393ff6934f to your computer and use it in GitHub Desktop.
Save KamilSJaron/90dab6358b6fd1a4d7646b393ff6934f to your computer and use it in GitHub Desktop.
#!/usr/bin/env Rscript
args = commandArgs(trailingOnly=TRUE)
episode_location <- '/Volumes/dump/media/video/fic/rick_and_morty/'
episodes <- dir(episode_location)
metadatafile <- '~/.metarickandmorty'
if( !file.exists(metadatafile) | "--reset" %in% args ){
metadata <- data.frame(episode = episodes, weight = 100, stringsAsFactors = F)
} else {
metadata <- read.table(metadatafile, header = T, stringsAsFactors = F)
}
adjust_weights <- function(.metadata){
smaller_than_10 <- .metadata$weight < 10
smaller_than_100 <- !smaller_than_10 & .metadata$weight < 100
.metadata$weight[smaller_than_10] <- .metadata$weight[smaller_than_10] + 2
.metadata$weight[smaller_than_100] <- .metadata$weight[smaller_than_100] + 5
return(.metadata)
}
if( length(args) == 1 & ! "--reset" %in% args ){
random_episode <- grep(args[1], metadata$episode, value = T)
stopifnot(length(random_episode) == 1)
} else {
random_episode <- sample(metadata$episode, 1, prob = metadata$weight)
}
metadata <- adjust_weights(metadata)
metadata$weight[metadata$episode == random_episode] <- 0
write.table(metadata, metadatafile, quote = F, sep = '\t', row.names = F)
system( paste0('open ', episode_location, random_episode) )
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment