forked from bear/python-twitter
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathparse_tweet.py
More file actions
60 lines (49 loc) · 2.06 KB
/
Copy pathparse_tweet.py
File metadata and controls
60 lines (49 loc) · 2.06 KB
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
#!/usr/bin/env python
import re
from twitter import TwitterError
class ParseTweet:
# compile once on import
regexp = { "RT": "^RT", "MT":r"^MT", "ALNUM": r"(@[a-zA-Z0-9_]+)",
"HASHTAG": r"(#[\w\d]+)", "URL": r"([http://]?[a-zA-Z\d\/]+[\.]+[a-zA-Z\d\/\.]+)" }
regexp = dict((key,re.compile(value)) for key,value in regexp.items())
def __init__(self,timeline_owner,tweet):
''' timeline_owner : twitter handle of user account. tweet - 140 chars from feed; object does all computation on construction
properties:
RT, MT - boolean
URLs - list of URL
Hashtags - list of tags
'''
self.Owner = timeline_owner
self.tweet = tweet
self.UserHandles = ParseTweet.getUserHandles(tweet)
self.Hashtags = ParseTweet.getHashtags(tweet)
self.URLs = ParseTweet.getURLs(tweet)
self.RT = ParseTweet.getAttributeRT(tweet)
self.MT = ParseTweet.getAttributeMT(tweet)
# additional intelligence
if ( self.RT and len(self.UserHandles) > 0 ): #change the owner of tweet?
self.Owner = self.UserHandles[0]
return
def __str__(self):
''' for display method '''
return "owner %s, urls: %d, hashtags %d, user_handles %d, len_tweet %d, RT = %s, MT = %s"%(self.Owner,len(self.URLs),len(self.Hashtags),len(self.UserHandles), len(self.tweet), self.RT,self.MT)
@staticmethod
def getAttributeRT( tweet ):
""" see if tweet is a RT """
return re.search(ParseTweet.regexp["RT"],tweet.strip()) != None
@staticmethod
def getAttributeMT( tweet ):
""" see if tweet is a MT """
return re.search(ParseTweet.regexp["MT"],tweet.strip()) != None
@staticmethod
def getUserHandles( tweet ):
""" given a tweet we try and extract all user handles in order of occurrence"""
return re.findall(ParseTweet.regexp["ALNUM"],tweet)
@staticmethod
def getHashtags( tweet ):
""" return all hashtags"""
return re.findall(ParseTweet.regexp["HASHTAG"],tweet)
@staticmethod
def getURLs( tweet ):
""" URL : [http://]?[\w\.?/]+"""
return re.findall(ParseTweet.regexp["URL"],tweet)