Compare commits
2 Commits
Author | SHA1 | Date | |
---|---|---|---|
|
82496b8e04 | ||
|
2d74ec7823 |
@@ -17,7 +17,7 @@ from .client import *
|
|||||||
|
|
||||||
|
|
||||||
__copyright__ = 'Copyright 2015 - {} by Taehoon Kim'.format(datetime.now().year)
|
__copyright__ = 'Copyright 2015 - {} by Taehoon Kim'.format(datetime.now().year)
|
||||||
__version__ = '1.0.4'
|
__version__ = '1.0.5'
|
||||||
__license__ = 'BSD'
|
__license__ = 'BSD'
|
||||||
__author__ = 'Taehoon Kim; Moreels Pieter-Jan; Mads Marquart'
|
__author__ = 'Taehoon Kim; Moreels Pieter-Jan; Mads Marquart'
|
||||||
__email__ = 'carpedm20@gmail.com'
|
__email__ = 'carpedm20@gmail.com'
|
||||||
|
@@ -427,6 +427,9 @@ class Client(object):
|
|||||||
for key in j['payload']:
|
for key in j['payload']:
|
||||||
k = j['payload'][key]
|
k = j['payload'][key]
|
||||||
if k['type'] in ['user', 'friend']:
|
if k['type'] in ['user', 'friend']:
|
||||||
|
if k['id'] in ['0', 0]:
|
||||||
|
# Skip invalid users
|
||||||
|
pass
|
||||||
users.append(User(k['id'], first_name=k.get('firstName'), url=k.get('uri'), photo=k.get('thumbSrc'), name=k.get('name'), is_friend=k.get('is_friend'), gender=GENDERS[k.get('gender')]))
|
users.append(User(k['id'], first_name=k.get('firstName'), url=k.get('uri'), photo=k.get('thumbSrc'), name=k.get('name'), is_friend=k.get('is_friend'), gender=GENDERS[k.get('gender')]))
|
||||||
|
|
||||||
return users
|
return users
|
||||||
@@ -736,7 +739,7 @@ class Client(object):
|
|||||||
raise Exception('A thread was not in participants: {}'.format(j['payload']))
|
raise Exception('A thread was not in participants: {}'.format(j['payload']))
|
||||||
entries.append(participants[k['other_user_fbid']])
|
entries.append(participants[k['other_user_fbid']])
|
||||||
elif k['thread_type'] == 2:
|
elif k['thread_type'] == 2:
|
||||||
entries.append(Group(k['thread_fbid'], participants=[p.strip('fbid:') for p in k['participants']], photo=k['image_src'], name=k['name']))
|
entries.append(Group(k['thread_fbid'], participants=set([p.strip('fbid:') for p in k['participants']]), photo=k['image_src'], name=k['name']))
|
||||||
else:
|
else:
|
||||||
raise Exception('A thread had an unknown thread type: {}'.format(k))
|
raise Exception('A thread had an unknown thread type: {}'.format(k))
|
||||||
|
|
||||||
@@ -1285,7 +1288,7 @@ class Client(object):
|
|||||||
|
|
||||||
# Color change
|
# Color change
|
||||||
elif delta_type == "change_thread_theme":
|
elif delta_type == "change_thread_theme":
|
||||||
new_color = ThreadColor(delta["untypedData"]["theme_color"])
|
new_color = graphql_color_to_enum(delta["untypedData"]["theme_color"])
|
||||||
thread_id, thread_type = getThreadIdAndThreadType(metadata)
|
thread_id, thread_type = getThreadIdAndThreadType(metadata)
|
||||||
self.onColorChange(mid=mid, author_id=author_id, new_color=new_color, thread_id=thread_id,
|
self.onColorChange(mid=mid, author_id=author_id, new_color=new_color, thread_id=thread_id,
|
||||||
thread_type=thread_type, ts=ts, metadata=metadata, msg=m)
|
thread_type=thread_type, ts=ts, metadata=metadata, msg=m)
|
||||||
@@ -1347,7 +1350,7 @@ class Client(object):
|
|||||||
threads = [getThreadIdAndThreadType({"threadKey": thr}) for thr in delta.get("threadKeys")]
|
threads = [getThreadIdAndThreadType({"threadKey": thr}) for thr in delta.get("threadKeys")]
|
||||||
|
|
||||||
# thread_id, thread_type = getThreadIdAndThreadType(delta)
|
# thread_id, thread_type = getThreadIdAndThreadType(delta)
|
||||||
self.onMarkedSeen(threads=threads, seen_ts=seen_ts, delivered_ts=delivered_ts, metadata=delta, msg=m)
|
self.onMarkedSeen(threads=threads, seen_ts=seen_ts, ts=delivered_ts, metadata=delta, msg=m)
|
||||||
continue
|
continue
|
||||||
|
|
||||||
# New message
|
# New message
|
||||||
|
@@ -102,7 +102,7 @@ def graphql_to_group(group):
|
|||||||
c_info = get_customization_info(group)
|
c_info = get_customization_info(group)
|
||||||
return Group(
|
return Group(
|
||||||
group['thread_key']['thread_fbid'],
|
group['thread_key']['thread_fbid'],
|
||||||
participants=[node['messaging_actor']['id'] for node in group['all_participants']['nodes']],
|
participants=set([node['messaging_actor']['id'] for node in group['all_participants']['nodes']]),
|
||||||
nicknames=c_info.get('nicknames'),
|
nicknames=c_info.get('nicknames'),
|
||||||
color=c_info.get('color'),
|
color=c_info.get('color'),
|
||||||
emoji=c_info.get('emoji'),
|
emoji=c_info.get('emoji'),
|
||||||
|
@@ -66,8 +66,8 @@ class User(Thread):
|
|||||||
|
|
||||||
|
|
||||||
class Group(Thread):
|
class Group(Thread):
|
||||||
#: List of the group thread's participant user IDs
|
#: Unique list (set) of the group thread's participant user IDs
|
||||||
participants = list
|
participants = set
|
||||||
#: Dict, containing user nicknames mapped to their IDs
|
#: Dict, containing user nicknames mapped to their IDs
|
||||||
nicknames = dict
|
nicknames = dict
|
||||||
#: A :class:`ThreadColor`. The groups's message color
|
#: A :class:`ThreadColor`. The groups's message color
|
||||||
@@ -75,7 +75,7 @@ class Group(Thread):
|
|||||||
#: The groups's default emoji
|
#: The groups's default emoji
|
||||||
emoji = str
|
emoji = str
|
||||||
|
|
||||||
def __init__(self, uid, participants=[], nicknames=[], color=None, emoji=None, **kwargs):
|
def __init__(self, uid, participants=set(), nicknames=[], color=None, emoji=None, **kwargs):
|
||||||
"""Represents a Facebook group. Inherits `Thread`"""
|
"""Represents a Facebook group. Inherits `Thread`"""
|
||||||
super(Group, self).__init__(ThreadType.GROUP, uid, **kwargs)
|
super(Group, self).__init__(ThreadType.GROUP, uid, **kwargs)
|
||||||
self.participants = participants
|
self.participants = participants
|
||||||
|
Reference in New Issue
Block a user