mirror of
https://github.com/Tautulli/Tautulli.git
synced 2025-08-19 12:59:42 -07:00
Update python-twitter to 3.4.1
This commit is contained in:
parent
8e4aba7ed4
commit
f743a817ba
8 changed files with 1520 additions and 993 deletions
|
@ -28,6 +28,13 @@ class TwitterModel(object):
|
|||
def __ne__(self, other):
|
||||
return not self.__eq__(other)
|
||||
|
||||
def __hash__(self):
|
||||
if hasattr(self, 'id'):
|
||||
return hash(self.id)
|
||||
else:
|
||||
raise TypeError('unhashable type: {} (no id attribute)'
|
||||
.format(type(self)))
|
||||
|
||||
def AsJsonString(self):
|
||||
""" Returns the TwitterModel as a JSON string based on key/value
|
||||
pairs returned from the AsDict() method. """
|
||||
|
@ -78,11 +85,14 @@ class TwitterModel(object):
|
|||
|
||||
"""
|
||||
|
||||
json_data = data.copy()
|
||||
if kwargs:
|
||||
for key, val in kwargs.items():
|
||||
data[key] = val
|
||||
json_data[key] = val
|
||||
|
||||
return cls(**data)
|
||||
c = cls(**json_data)
|
||||
c._json = data
|
||||
return c
|
||||
|
||||
|
||||
class Media(TwitterModel):
|
||||
|
@ -93,11 +103,14 @@ class Media(TwitterModel):
|
|||
self.param_defaults = {
|
||||
'display_url': None,
|
||||
'expanded_url': None,
|
||||
'ext_alt_text': None,
|
||||
'id': None,
|
||||
'media_url': None,
|
||||
'media_url_https': None,
|
||||
'sizes': None,
|
||||
'type': None,
|
||||
'url': None,
|
||||
'video_info': None,
|
||||
}
|
||||
|
||||
for (param, default) in self.param_defaults.items():
|
||||
|
@ -172,8 +185,10 @@ class DirectMessage(TwitterModel):
|
|||
self.param_defaults = {
|
||||
'created_at': None,
|
||||
'id': None,
|
||||
'recipient': None,
|
||||
'recipient_id': None,
|
||||
'recipient_screen_name': None,
|
||||
'sender': None,
|
||||
'sender_id': None,
|
||||
'sender_screen_name': None,
|
||||
'text': None,
|
||||
|
@ -181,6 +196,10 @@ class DirectMessage(TwitterModel):
|
|||
|
||||
for (param, default) in self.param_defaults.items():
|
||||
setattr(self, param, kwargs.get(param, default))
|
||||
if 'sender' in kwargs:
|
||||
self.sender = User.NewFromJsonDict(kwargs.get('sender', None))
|
||||
if 'recipient' in kwargs:
|
||||
self.recipient = User.NewFromJsonDict(kwargs.get('recipient', None))
|
||||
|
||||
def __repr__(self):
|
||||
if self.text and len(self.text) > 140:
|
||||
|
@ -206,7 +225,7 @@ class Trend(TwitterModel):
|
|||
'query': None,
|
||||
'timestamp': None,
|
||||
'url': None,
|
||||
'volume': None,
|
||||
'tweet_volume': None,
|
||||
}
|
||||
|
||||
for (param, default) in self.param_defaults.items():
|
||||
|
@ -218,6 +237,10 @@ class Trend(TwitterModel):
|
|||
self.timestamp,
|
||||
self.url)
|
||||
|
||||
@property
|
||||
def volume(self):
|
||||
return self.tweet_volume
|
||||
|
||||
|
||||
class Hashtag(TwitterModel):
|
||||
|
||||
|
@ -259,12 +282,12 @@ class UserStatus(TwitterModel):
|
|||
""" A class representing the UserStatus structure. This is an abbreviated
|
||||
form of the twitter.User object. """
|
||||
|
||||
connections = {'following': False,
|
||||
'followed_by': False,
|
||||
'following_received': False,
|
||||
'following_requested': False,
|
||||
'blocking': False,
|
||||
'muting': False}
|
||||
_connections = {'following': False,
|
||||
'followed_by': False,
|
||||
'following_received': False,
|
||||
'following_requested': False,
|
||||
'blocking': False,
|
||||
'muting': False}
|
||||
|
||||
def __init__(self, **kwargs):
|
||||
self.param_defaults = {
|
||||
|
@ -284,10 +307,19 @@ class UserStatus(TwitterModel):
|
|||
setattr(self, param, kwargs.get(param, default))
|
||||
|
||||
if 'connections' in kwargs:
|
||||
for param in self.connections:
|
||||
for param in self._connections:
|
||||
if param in kwargs['connections']:
|
||||
setattr(self, param, True)
|
||||
|
||||
@property
|
||||
def connections(self):
|
||||
return {'following': self.following,
|
||||
'followed_by': self.followed_by,
|
||||
'following_received': self.following_received,
|
||||
'following_requested': self.following_requested,
|
||||
'blocking': self.blocking,
|
||||
'muting': self.muting}
|
||||
|
||||
def __repr__(self):
|
||||
connections = [param for param in self.connections if getattr(self, param)]
|
||||
return "UserStatus(ID={uid}, ScreenName={sn}, Connections=[{conn}])".format(
|
||||
|
@ -307,11 +339,14 @@ class User(TwitterModel):
|
|||
'default_profile': None,
|
||||
'default_profile_image': None,
|
||||
'description': None,
|
||||
'email': None,
|
||||
'favourites_count': None,
|
||||
'followers_count': None,
|
||||
'following': None,
|
||||
'friends_count': None,
|
||||
'geo_enabled': None,
|
||||
'id': None,
|
||||
'id_str': None,
|
||||
'lang': None,
|
||||
'listed_count': None,
|
||||
'location': None,
|
||||
|
@ -319,12 +354,16 @@ class User(TwitterModel):
|
|||
'notifications': None,
|
||||
'profile_background_color': None,
|
||||
'profile_background_image_url': None,
|
||||
'profile_background_image_url_https': None,
|
||||
'profile_background_tile': None,
|
||||
'profile_banner_url': None,
|
||||
'profile_image_url': None,
|
||||
'profile_image_url_https': None,
|
||||
'profile_link_color': None,
|
||||
'profile_sidebar_border_color': None,
|
||||
'profile_sidebar_fill_color': None,
|
||||
'profile_text_color': None,
|
||||
'profile_use_background_image': None,
|
||||
'protected': None,
|
||||
'screen_name': None,
|
||||
'status': None,
|
||||
|
@ -333,6 +372,8 @@ class User(TwitterModel):
|
|||
'url': None,
|
||||
'utc_offset': None,
|
||||
'verified': None,
|
||||
'withheld_in_countries': None,
|
||||
'withheld_scope': None,
|
||||
}
|
||||
|
||||
for (param, default) in self.param_defaults.items():
|
||||
|
@ -365,6 +406,7 @@ class Status(TwitterModel):
|
|||
'current_user_retweet': None,
|
||||
'favorite_count': None,
|
||||
'favorited': None,
|
||||
'full_text': None,
|
||||
'geo': None,
|
||||
'hashtags': None,
|
||||
'id': None,
|
||||
|
@ -377,6 +419,9 @@ class Status(TwitterModel):
|
|||
'media': None,
|
||||
'place': None,
|
||||
'possibly_sensitive': None,
|
||||
'quoted_status': None,
|
||||
'quoted_status_id': None,
|
||||
'quoted_status_id_str': None,
|
||||
'retweet_count': None,
|
||||
'retweeted': None,
|
||||
'retweeted_status': None,
|
||||
|
@ -395,6 +440,11 @@ class Status(TwitterModel):
|
|||
for (param, default) in self.param_defaults.items():
|
||||
setattr(self, param, kwargs.get(param, default))
|
||||
|
||||
if kwargs.get('full_text', None):
|
||||
self.tweet_mode = 'extended'
|
||||
else:
|
||||
self.tweet_mode = 'compatibility'
|
||||
|
||||
@property
|
||||
def created_at_in_seconds(self):
|
||||
""" Get the time this status message was posted, in seconds since
|
||||
|
@ -414,17 +464,21 @@ class Status(TwitterModel):
|
|||
string: A string representation of this twitter.Status instance with
|
||||
the ID of status, username and datetime.
|
||||
"""
|
||||
if self.tweet_mode == 'extended':
|
||||
text = self.full_text
|
||||
else:
|
||||
text = self.text
|
||||
if self.user:
|
||||
return "Status(ID={0}, ScreenName={1}, Created={2}, Text={3!r})".format(
|
||||
self.id,
|
||||
self.user.screen_name,
|
||||
self.created_at,
|
||||
self.text)
|
||||
text)
|
||||
else:
|
||||
return u"Status(ID={0}, Created={1}, Text={2!r})".format(
|
||||
self.id,
|
||||
self.created_at,
|
||||
self.text)
|
||||
text)
|
||||
|
||||
@classmethod
|
||||
def NewFromJsonDict(cls, data, **kwargs):
|
||||
|
@ -439,17 +493,25 @@ class Status(TwitterModel):
|
|||
current_user_retweet = None
|
||||
hashtags = None
|
||||
media = None
|
||||
quoted_status = None
|
||||
retweeted_status = None
|
||||
urls = None
|
||||
user = None
|
||||
user_mentions = None
|
||||
|
||||
# for loading extended tweets from the streaming API.
|
||||
if 'extended_tweet' in data:
|
||||
for k, v in data['extended_tweet'].items():
|
||||
data[k] = v
|
||||
|
||||
if 'user' in data:
|
||||
user = User.NewFromJsonDict(data['user'])
|
||||
if 'retweeted_status' in data:
|
||||
retweeted_status = Status.NewFromJsonDict(data['retweeted_status'])
|
||||
if 'current_user_retweet' in data:
|
||||
current_user_retweet = data['current_user_retweet']['id']
|
||||
if 'quoted_status' in data:
|
||||
quoted_status = Status.NewFromJsonDict(data.get('quoted_status'))
|
||||
|
||||
if 'entities' in data:
|
||||
if 'urls' in data['entities']:
|
||||
|
@ -470,6 +532,7 @@ class Status(TwitterModel):
|
|||
current_user_retweet=current_user_retweet,
|
||||
hashtags=hashtags,
|
||||
media=media,
|
||||
quoted_status=quoted_status,
|
||||
retweeted_status=retweeted_status,
|
||||
urls=urls,
|
||||
user=user,
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue