def handle_request(request_dict): ''' handles the GET request for best time to post ''' try: logger.info("request_dict is: " + str(request_dict)) #user_id = unidecode.unidecode(str(request_dict)) user_id = request_dict['id'] try: check = int(user_id) except: user_dict = search_user(user_id) user = user_dict['data'][0] user_id = user['id'] print 'user_id is: ' + str(user_id) user_info_dict = get_user_info(user_id) print 'user_info:\n\n' + json.dumps(user_info_dict, indent=4, sort_keys=True) user_followers_dict = get_user_followers(user_id) print 'user_followers:\n\n' + json.dumps(user_followers_dict, indent=4, sort_keys=True) user_followers_list = user_followers_dict['data'] user_ids_followers = [] for follower in user_followers_list: user_ids_followers.append(follower['id']) print user_ids_followers print len(user_ids_followers) frequency_of_active_days = [] frequency_of_active_hours_dict = {} for follower_id in user_ids_followers: most_active_day, most_active_hour = get_most_active_day_and_time(follower_id) print "-"*90 frequency_of_active_days.append(most_active_day) if most_active_day in frequency_of_active_hours_dict.keys(): frequency_of_active_hours_dict[most_active_day] = (frequency_of_active_hours_dict[most_active_day] + most_active_hour)/2 else: frequency_of_active_hours_dict[most_active_day] = most_active_hour print "\n\n" + "="*90 global weekdays_dict print frequency_of_active_days #print frequency_of_active_hours highest_frequency_of_active_day = max(set(frequency_of_active_days), key=frequency_of_active_days.count) #highest_frequency_of_active_hour = max(set(frequency_of_active_hours), key=frequency_of_active_hours.count) print highest_frequency_of_active_day print "*"*90 result = "User should Post on : %s @ %s hr" % (weekdays_dict[highest_frequency_of_active_day], frequency_of_active_hours_dict[highest_frequency_of_active_day]) print result print "*"*90 return Response({"result": result}) except: logger.info(traceback.format_exc())
def get(self, request): ''' Gets the best time to post w.r.t. the query data ''' try: logger.info("GET Best Time To Post") request_dict = json.loads(request.GET.values()[0]) if request_dict: return handle_request(request_dict) else: logger.info("Nothing found for given query data") return Response("No Results matching the search query", status.HTTP_204_NO_CONTENT) except: logger.error(traceback.format_exc()) return Response("Error", status.HTTP_500_INTERNAL_SERVER_ERROR)
def get(self, request): ''' Gets the best time to post w.r.t. the query data ''' try: logger.info("GET Best Time To Post") request_dict = json.loads(request.GET.values()[0]) if request_dict: return handle_request(request_dict) else: logger.info("Nothing found for given query data") return Response("No Results matching the search query", status.HTTP_204_NO_CONTENT) except: logger.error(traceback.format_exc()) return Response("Error", status.HTTP_500_INTERNAL_SERVER_ERROR)
def handle_request(request_dict): ''' handles the GET request for best time to post ''' try: logger.info("request_dict is: " + str(request_dict)) #user_id = unidecode.unidecode(str(request_dict)) user_id = request_dict['id'] try: check = int(user_id) except: user_dict = search_user(user_id) user = user_dict['data'][0] user_id = user['id'] print 'user_id is: ' + str(user_id) user_info_dict = get_user_info(user_id) print 'user_info:\n\n' + json.dumps( user_info_dict, indent=4, sort_keys=True) user_followers_dict = get_user_followers(user_id) print 'user_followers:\n\n' + json.dumps( user_followers_dict, indent=4, sort_keys=True) user_followers_list = user_followers_dict['data'] user_ids_followers = [] for follower in user_followers_list: user_ids_followers.append(follower['id']) print user_ids_followers print len(user_ids_followers) frequency_of_active_days = [] frequency_of_active_hours_dict = {} for follower_id in user_ids_followers: most_active_day, most_active_hour = get_most_active_day_and_time( follower_id) print "-" * 90 frequency_of_active_days.append(most_active_day) if most_active_day in frequency_of_active_hours_dict.keys(): frequency_of_active_hours_dict[most_active_day] = ( frequency_of_active_hours_dict[most_active_day] + most_active_hour) / 2 else: frequency_of_active_hours_dict[ most_active_day] = most_active_hour print "\n\n" + "=" * 90 global weekdays_dict print frequency_of_active_days #print frequency_of_active_hours highest_frequency_of_active_day = max( set(frequency_of_active_days), key=frequency_of_active_days.count) #highest_frequency_of_active_hour = max(set(frequency_of_active_hours), key=frequency_of_active_hours.count) print highest_frequency_of_active_day print "*" * 90 result = "User should Post on : %s @ %s hr" % ( weekdays_dict[highest_frequency_of_active_day], frequency_of_active_hours_dict[highest_frequency_of_active_day]) print result print "*" * 90 return Response({"result": result}) except: logger.info(traceback.format_exc())