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)
Beispiel #3
0
 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)
Beispiel #4
0
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())