-
Notifications
You must be signed in to change notification settings - Fork 5
/
tweet.py
61 lines (52 loc) · 2.19 KB
/
tweet.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
import time
class Tweet:
def __init__(self, **kwargs):
"""
Tweet instance that keeps information of a tweet. To create an
instance some keyword arguments must be set.
Args:
`tweet_id` (int): id number of tweet
`writer` (str): id of owner of the tweet
`post_date` (struct time): struct time of tweet's post date
`body` (str): content of tweet
`searchKey` (str)(optional): search key that tweet is found
`comment_num` (int)(optional): number of comments of tweet
`retweet_num` (int)(optional): number of retweets of tweet
`like_num` (int)(optional): number of likes of tweet
Raises:
TypeError if `post_date` argument is not `struct_time`
"""
if not isinstance(kwargs['post_date'], time.struct_time):
raise TypeError("expected:{} but found: {}".format(
time.struct_time, type(kwargs['post_date'])))
self.tweet_id = kwargs['tweet_id']
self.writer = kwargs['writer']
self.post_date = kwargs['post_date']
self.body = kwargs['body']
try:
self.searchKey = kwargs['searchKey']
except KeyError:
self.searchKey = None
try:
self.comment_num = kwargs['comment_num']
except KeyError:
self.comment_num = None
try:
self.retweet_num = kwargs['retweet_num']
except KeyError:
self.retweet_num = None
try:
self.like_num = kwargs['like_num']
except KeyError:
self.like_num = None
def __hash__(self):
return self.tweet_id
def __eq__(self, other):
if not isinstance(other, type(self)):
return False
return self.tweet_id == other.tweet_id
def __str__(self):
s1 = f"writer: {self.writer}, date: {time.strftime('%Y-%m-%d_%H:%M:%S', self.post_date)}"
s2 = f"\n{self.body}\n"
s3 = f"comment: {self.comment_num}\tretweet: {self.retweet_num}\tlike: {self.like_num}"
return s1 + s2 + s3 + '\n\n'