/ Published in: Ruby
                    
                                        
The Blackberry AppWorld portal allows you to schedule reports which are delivered as CSV.zip files. Although the CSV file offers a lot of detail about operating system and date of download, most of the time I just want to know which users downloaded the app from which countries.  So usually I choose "Country, then date", unpack the .zip and run this (verbose) ruby script.
                
                            
                                Expand |
                                Embed | Plain Text
                            
                        
                        Copy this code and paste it in your HTML
require 'fileutils'
require 'date'
require 'rubygems'
#sudo gem install excelsior
#sudo gem update excelsior
require 'excelsior'
class CSVToTxtUtil
INPUT_NAME = "DOWNLOADS-for-19-Apr-2011-to-08-Nov-2011.csv"
OUTPUT_NAME = "BB_Playbook_Downloads_" + Date.today.to_s + ".txt"
COLUMN_NUM_FOR_COUNTRY= 8;
def initialize
rows = read_csv( INPUT_NAME )
generate_xml( rows );
end
def read_csv( file )
rows = Array.new
Excelsior::Reader.rows( File.open( file , 'r') ) do |row|
rows << row
end
return rows
end
def generate_xml( array )
output = File.new( OUTPUT_NAME, "w")
##
# Data Pertinent to JSON file
##
country = ''
count = 0
node = ""
array.length.times do |i|
begin
if country != array[i][COLUMN_NUM_FOR_COUNTRY].strip!.to_s
if i > 1
node = "Country:\"#{country}\", Downloads:#{count.to_s}"
#Verbose Output
puts node
#Write to Text File
output.puts node
end
country = array[i][COLUMN_NUM_FOR_COUNTRY].to_s
count = 0
end
rescue Exception=>e
puts "\n\t\tError: " + e.to_s + "\n\n"
end
count = count + 1
#puts i.to_s + " : " + count.to_s
end
node = "Country:\"#{country}\", Downloads: #{count.to_s} "
puts node
output.puts node
end
end
CSVToTxtUtil.new
URL: https://appworld.blackberry.com/isvportal/downloadreports/schedule.seam
Comments
 Subscribe to comments
                    Subscribe to comments
                
                