Advertisement
Guest User

Torrent_uploads_ascii_graphing

a guest
Jun 12th, 2013
160
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 4.23 KB | None | 0 0
  1. # more info here:
  2. # http://raspberrypibeginner.wordpress.com/
  3.  
  4. import time
  5. start_time = time.time()
  6.  
  7. import re
  8. print time.time() - start_time, "seconds after regex load"
  9. import scitools.aplotter
  10. print time.time() - start_time, "seconds after plot load"
  11. import csv
  12. print time.time() - start_time, "seconds after csv load"
  13. import datetime
  14. print time.time() - start_time, "seconds after datetime load"
  15.  
  16.  
  17. data_input_path = '/media/USBHDD/PythonStudy/torrent_data_collection/data_one.csv'
  18. # later add: /media/USBHDD/PythonStudy/torrent_data_collection/
  19.  
  20. time_string_axis = []
  21. upload_bytes_axis = []
  22. # Constant
  23. current_time_obj = datetime.datetime.now()
  24.  
  25. # Gathering data simply
  26. with open(data_input_path, 'rb') as csvfile:
  27.         raw_torrenting_data = csv.reader(csvfile, delimiter=',')
  28.         # print time.time() - start_time, "seconds before regex"
  29.         for data_array in raw_torrenting_data:
  30.                 for each_entry in data_array:
  31.                         parse_data_point = re.search(r'(\d+-\d\d-\d\d\s\d\d:\d\d:\d\d)\$(\d+)', each_entry)
  32.  
  33.                         # time = parse_data_point.group(1)
  34.                         # uploaded_bytes = parse_data_point.group(2)
  35.                         # print type(parse_data_point)
  36.                         if str(type(parse_data_point)) == "<type '_sre.SRE_Match'>":
  37.                                 time_string_axis.append(parse_data_point.group(1))
  38.                                 upload_bytes_axis.append(parse_data_point.group(2))
  39.         # print time.time() - start_time, "seconds after regex"
  40.  
  41. def make_time_obj(string_a):
  42.         # turn each string in time_string_axis into a time object
  43.         return datetime.datetime.strptime(string_a, '%Y-%m-%d %X')
  44.  
  45. def convert_timestrings_to_hours_ago(array_of_strings):
  46.         difference_array = []
  47.         for time_string in array_of_strings:
  48.                 diff_obj = current_time_obj - make_time_obj(time_string)
  49.                 # plus 4 because of UTC, other object was created
  50.                 # with incompattible gmtime, this is the easiest conversion
  51.                 hour_difference = (4 + diff_obj.days * 24 + (diff_obj.seconds/3600.))
  52.                 difference_array.append(float('%.2f' % hour_difference))
  53.         return difference_array
  54.        
  55. # print sorted(time_string_axis) == time_string_axis
  56. # print convert_timestrings_to_hours_ago(time_string_axis)
  57.  
  58. # for ea in convert_timestrings_to_hours_ago(time_string_axis):
  59. #       print type(ea)
  60.  
  61. def convert_bytes_to_mb(string_number):
  62.         return float(string_number) / 1048676.0
  63.  
  64. def upload_derivative_mb(array_of_string_nums):
  65.         # print time.time() - start_time, "seconds before list subtraction"
  66.         derivative_mb = []
  67.         original_data = array_of_string_nums[1:]
  68.         offset_data = array_of_string_nums[:-1]
  69.  
  70.         for index in xrange(0,len(original_data)):
  71.                 change = float(original_data[index]) - float(offset_data[index])
  72.                 derivative_mb.append(convert_bytes_to_mb(change))
  73.         derivative_mb.insert(0, 0.0)
  74.         # print len(original_data), len(offset_data)
  75.         return derivative_mb
  76.         # print time.time() - start_time, "seconds after list subtraction"
  77.  
  78. # print upload_derivative_mb(upload_bytes_axis)
  79.  
  80. def sizeof_fmt(num):
  81.     """
  82.    from:
  83.    http://stackoverflow.com/questions/1094841/reusable-
  84.    library-to-get-human-readable-version-of-file-size
  85.        """
  86.     for x in ['bytes','KB','MB','GB','TB']:
  87.         if num < 1024.0:
  88.             return "%3.1f %s" % (num, x)
  89.         num /= 1024.0
  90.  
  91. def last_xhours_total(num):
  92.         return sizeof_fmt(int(upload_bytes_axis[-1]) - int(upload_bytes_axis[-(num*6 + 1)]))
  93.  
  94. # print len(upload_derivative_mb(upload_bytes_axis)), len(convert_timestrings_to_hours_ago(time_string_axis))
  95. # print len(time_string_axis), len(upload_bytes_axis)
  96.  
  97. def graph_last_day():
  98.         y_axis = upload_derivative_mb(upload_bytes_axis)
  99.         x_axis = convert_timestrings_to_hours_ago(time_string_axis)
  100.  
  101.         x = x_axis[-145:-1]
  102.         y = y_axis[-145:-1]
  103.  
  104.         scitools.aplotter.plot(x, y)
  105.  
  106. print graph_last_day()
  107.  
  108. print last_xhours_total(24) + " uploaded in the last 24 hours"
  109. print "computation time:"
  110. print time.time() - start_time, "seconds"
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement