From 49ea9b552a2bde3739679adebe835894e4bfb8b0 Mon Sep 17 00:00:00 2001 From: jvmaia Date: Tue, 25 Sep 2018 20:19:56 -0300 Subject: [PATCH] add users objects to the direct messages response --- twython/endpoints.py | 2 +- twython/utils.py | 66 ++++++++++++++++++++++++++++++++++++-------- 2 files changed, 55 insertions(+), 13 deletions(-) diff --git a/twython/endpoints.py b/twython/endpoints.py index 0d1dd39..87df0ce 100644 --- a/twython/endpoints.py +++ b/twython/endpoints.py @@ -307,7 +307,7 @@ class EndpointsMixin(object): _params = params _params['json'] = 'true' new_style_direct_messages = self.get('direct_messages/events/list', params=_params)['events'] - old_style_direct_messages = old_format_direct_messages(new_style_direct_messages) + old_style_direct_messages = old_format_direct_messages(new_style_direct_messages, self.show_user) return old_style_direct_messages get_direct_messages.iter_mode = 'id' diff --git a/twython/utils.py b/twython/utils.py index 42995d5..becdc40 100644 --- a/twython/utils.py +++ b/twython/utils.py @@ -1,6 +1,26 @@ import time +import json -def old_format_direct_messages(new_direct_messages): + +def load_users(): + try: + with open('users.json', 'r') as f: + users = json.load(f) + return users + except ValueError as e: + print(e) + return {} + + +def save_users(users): + with open('users.json', 'w') as f: + print('users saved') + json.dump(users, f) + + +def old_format_direct_messages(new_direct_messages, get_user_object): + users = load_users() + new_user = False old_direct_messages = [] for new_direct_message in new_direct_messages: old_direct_message = {} @@ -9,23 +29,45 @@ def old_format_direct_messages(new_direct_messages): old_direct_message['text'] = new_direct_message['message_create']['message_data']['text'] old_direct_message['sender_id'] = int(new_direct_message['message_create']['sender_id']) old_direct_message['sender_id_str'] = new_direct_message['message_create']['sender_id'] - # todo complete user object - sender - old_direct_message['sender'] = { - 'id': old_direct_message['sender_id'], - 'id_str': old_direct_message['sender_id_str'] - } - # todo user sender screen name + + if not new_direct_message['message_create']['sender_id'] in users.keys(): + print('NEW USERRRR') + print('SENDER ===> ', new_direct_message['message_create']['sender_id']) + print('USER.KEYS ==>', users.keys()) + print(new_direct_message['message_create']['sender_id']) + sender_object = get_user_object(user_id=new_direct_message['message_create']['sender_id']) + new_user = True + else: + sender_object = users[new_direct_message['message_create']['sender_id']] + + users[new_direct_message['message_create']['sender_id']] = sender_object + old_direct_message['sender'] = sender_object + old_direct_message['sender_screen_name'] = sender_object['screen_name'] + old_direct_message['recipient_id'] = int(new_direct_message['message_create']['target']['recipient_id']) old_direct_message['recipient_id_str'] = new_direct_message['message_create']['target']['recipient_id'] - # todo complete user recipient screen name - old_direct_message['recipient'] = { - 'id': old_direct_message['recipient_id'], - 'id_str': old_direct_message['recipient_id_str'] - } + + if not new_direct_message['message_create']['target']['recipient_id'] in users.keys(): + print('NEW USERRRR') + print('RECIPIENT ===> ', new_direct_message['message_create']['target']['recipient_id']) + print('USER.KEYS ==>', users.keys()) + print(new_direct_message['message_create']['target']['recipient_id']) + recipient_object = get_user_object(user_id=new_direct_message['message_create']['target']['recipient_id']) + new_user = True + else: + recipient_object = users[new_direct_message['message_create']['target']['recipient_id']] + + users[new_direct_message['message_create']['target']['recipient_id']] = recipient_object + old_direct_message['recipient'] = recipient_object + old_direct_message['recipient_screen_name'] = recipient_object['screen_name'] + old_direct_message['created_at'] = time.ctime(float(new_direct_message['created_timestamp'])) old_direct_message['entities'] = new_direct_message['message_create']['message_data']['entities'] old_direct_messages.append(old_direct_message) + if new_user: + save_users(users) + return old_direct_messages