lib(bit64)
.us()
source('~/git/orch/src/iRadio/iRadioMeta.r')

aids <- c(544747,496818)

isrc.order <- c("QMBZ91303405", "QMBZ91303406", "QMBZ91303407", "QMBZ91303408", "QMBZ91303409", "QMBZ91303410", "QMBZ91303411", "QMBZ91303412", "QMBZ91303413", "QMBZ91303414")
f.in <- "~/gitData/orch/data/GlitchMob/iTunes_iradio_report.csv"
f.presales <- "~/gitData/orch/data/GlitchMob/Presales.txt"
f.sales <- "~/gitData/orch/data/GlitchMob/SALES.txt"

GM.PRESALES <- fread(f.presales)
GM.SALES <- fread(f.sales)



GM <- fread(f.in)
GM.bak <- copy(GM)
GM <- copy(GM.bak)

AdditionalDrop <- c("vendor_identifier", "vendor_offer_code", "extracted_upc", "extracted_isrc", "content_filename", "event_filename", "apple_identifier")
cleaniRadioCols_ (GM, drop.these.columns=AdditionalDrop, confirm=TRUE, verbose=TRUE)

setkey(GM, isrc, customerid, start_time)

GM[, Total_Spins_Per_Track := .N, by=list(isrc)]
GM[GM[, 1L, keyby=list(isrc, customerid)][, .N, keyby= isrc],  Unique_Fans_Per_Track := i.N]

GM[, Total_Spins_Per_Fan := .N, by=list(customerid)]
GM[, Spins_of_each_Track_Per_Fan := .N, by=list(isrc, customerid)]
GM[, Unique_Tracks_Per_Fan := lunique(isrc), by=customerid]

GM[GM[, .I[1], by=customerid]$V1, firstTrack := isrc]

by.cid <- c("Total_Spins_Per_Fan", "Spins_of_each_Track_Per_Fan", "Unique_Tracks_Per_Fan") # , "firstTrack"
GM[!is.na(firstTrack), paste0("AVG_", by.cid) := lapply(.SD, mean), by=isrc, .SDcols=by.cid]

pat.ft <- "\\s*\\(.*\\)\\s*$"
track.order <- unique(GM, by="isrc")[, track]
GM[, track := factor(track, levels=track.order, labels=gsub(pat.ft, "", track.order))]
GM[, isrc  := factor(isrc, levels=isrc.order)]
setkey(GM, isrc, customerid, start_time)

GM[, track.length := max(duration, na.rm=TRUE), by=isrc]


cols.carrying <- c("isrc", "track", "track.length", "Total_Spins_Per_Track", "Unique_Fans_Per_Track")
TRACKS <- unique(GM[!is.na(firstTrack)], by="isrc")[, c(cols.carrying, paste0("AVG_", by.cid)), with=FALSE]
setkey(TRACKS, isrc)

firstTrack.counts <- setkey(as.data.table(GM[, table(firstTrack)]), "firstTrack")
firstTrack.counts[, count.perc := count / sum(count)]
firstTrack.counts[count != max(count), count_less_Tk1.perc := count / sum(count)]

## _____ CREATE  TRACKS   DT _______ ##

TRACKS[firstTrack.counts, FirstTrackPercentage := round(100*i.count.perc, 2)]
TRACKS[firstTrack.counts, FirstTrackPercentage_less_Tk1 := round(100*i.count_less_Tk1.perc, 2)]

setkey(TRACKS, "isrc")

f.out <- as.path(outDir, "GlitchMob_Track_Counts.csv")
write.csv(TRACKS, f.out)
.o(dirname(f.out))

