|
@@ -11,137 +11,137 @@ request_token_url = 'http://www.tumblr.com/oauth/request_token'
|
|
|
authorize_url = 'http://www.tumblr.com/oauth/authorize'
|
|
|
access_token_url = 'http://www.tumblr.com/oauth/access_token'
|
|
|
|
|
|
-user_uri = "http://api.tumblr.com/v2/user/info"
|
|
|
-blog_uri = "http://api.tumblr.com/v2/blog/"
|
|
|
+user_uri = "http://api.tumblr.com/v2/user/info"
|
|
|
+blog_uri = "http://api.tumblr.com/v2/blog/"
|
|
|
|
|
|
class TumblrOauthClient(object):
|
|
|
|
|
|
- token = None
|
|
|
- oauth_verifier = None
|
|
|
- oauth_token = None
|
|
|
- oauth_token_secret = None
|
|
|
- accessed = False
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
- def __init__(self, consumer_key, consumer_secret):
|
|
|
- self.consumer_key = consumer_key
|
|
|
- self.consumer_secret = consumer_secret
|
|
|
- self.consumer = oauth2.Consumer(consumer_key, consumer_secret)
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
- def authorize_url(self):
|
|
|
- client = oauth2.Client(self.consumer)
|
|
|
- resp, content = client.request(request_token_url, "GET")
|
|
|
- #parse content
|
|
|
- if not self.oauth_token:
|
|
|
- request_token = dict(urlparse.parse_qsl(content))
|
|
|
- self.oauth_token = request_token['oauth_token'] #'QBXdeeMKAnLzDbIG7dDNewTzRYyQoHZLbcn3bAFTCEFF5EXurl' #
|
|
|
- self.oauth_token_secret = request_token['oauth_token_secret']#'u10SuRl2nzS8vFK4K7UPQexAvbIFBFrZBjA79XDlgoXFxv9ZhO' #
|
|
|
- link = authorize_url+"?oauth_token="+self.oauth_token+"&redirect_uri=http%3A%2F%2Flocalhost%3A8000/hackathon/tumblr"
|
|
|
- return link
|
|
|
-
|
|
|
-
|
|
|
- def access_token_url(self, oauth_verifier=''):
|
|
|
- self.accessed = True
|
|
|
- token = oauth2.Token(self.oauth_token, self.oauth_token_secret)
|
|
|
- self.oauth_verifier = oauth_verifier
|
|
|
- print self.oauth_verifier
|
|
|
- token.set_verifier(self.oauth_verifier)
|
|
|
- client = oauth2.Client(self.consumer, token)
|
|
|
- resp, content = client.request(access_token_url,"POST")
|
|
|
- access_token = dict(urlparse.parse_qsl(content))
|
|
|
- #set verified token
|
|
|
- self.token = oauth2.Token(access_token['oauth_token'], access_token['oauth_token_secret'])
|
|
|
- #print self.token
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
- def getUserInfo(self):
|
|
|
- ''' Returns users information. '''
|
|
|
- client = oauth2.Client(self.consumer, self.token)
|
|
|
- #print client
|
|
|
- resp, content = client.request(user_uri, "POST")
|
|
|
- if int(resp['status']) != 200:
|
|
|
- raise Exception("Invalid response %s." % resp['status'])
|
|
|
-
|
|
|
- #return content in json format
|
|
|
- jsonlist = json.loads(content)
|
|
|
- response = jsonlist['response']
|
|
|
- user_info = response['user']
|
|
|
- total_blogs = len(user_info['blogs'])
|
|
|
- #print user_info
|
|
|
- return user_info, total_blogs
|
|
|
-
|
|
|
-
|
|
|
- def getBlogInfo(self, user):
|
|
|
- ''' Returns blogger's blog information '''
|
|
|
- blog_info = blog_uri + user + ".tumblr.com/info?api_key="+self.consumer_key
|
|
|
- req = requests.get(blog_info)
|
|
|
-
|
|
|
- #if int(req.status_code) != 200:
|
|
|
- # raise Exception("Invalid response %s." % resp['status'])
|
|
|
-
|
|
|
-
|
|
|
- jsonlist = json.loads(req.content)
|
|
|
- response = jsonlist['response']
|
|
|
- blog = response['blog']
|
|
|
- blog['updated'] = time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(blog['updated']))
|
|
|
- return blog
|
|
|
-
|
|
|
-
|
|
|
- def getTaggedInfo(self, tag):
|
|
|
- ''' Return tags related to blog with certain tag. '''
|
|
|
-
|
|
|
- tagged_uri = "http://api.tumblr.com/v2/tagged?tag="+tag+"&api_key="+self.consumer_key+"&limit=20"
|
|
|
- req = requests.get(tagged_uri)
|
|
|
- jsonlist = json.loads(req.content)
|
|
|
-
|
|
|
- tags = []
|
|
|
-
|
|
|
- meta = jsonlist['meta']
|
|
|
- body = jsonlist['response']
|
|
|
- for blog in body:
|
|
|
- for data in blog:
|
|
|
- if data == "tags":
|
|
|
- #print blog[data]
|
|
|
- for i in blog[data]:
|
|
|
- m = re.match("(.*)(s*)s(t*)t(a*)a(r*)r(b*)b(u*)u(c*)c(k*)k(.*)", i.lower())
|
|
|
- if not m:
|
|
|
- tags.append(i)
|
|
|
-
|
|
|
- return tags
|
|
|
-
|
|
|
-
|
|
|
- def getTaggedBlog(self, tag):
|
|
|
- ''' Return the tagged blogs's captions or post.'''
|
|
|
-
|
|
|
- tagged_uri = "http://api.tumblr.com/v2/tagged?tag="+tag+"&api_key="+self.consumer_key+"&limit=20"
|
|
|
- req = requests.get(tagged_uri)
|
|
|
- jsonlist = json.loads(req.content)
|
|
|
-
|
|
|
- meta = jsonlist['meta']
|
|
|
- body = jsonlist['response']
|
|
|
-
|
|
|
- tagtext = []
|
|
|
-
|
|
|
- for blog in body:
|
|
|
- #print "####"
|
|
|
- for data in blog:
|
|
|
- #post
|
|
|
- if data == "body":
|
|
|
- if blog[data]:
|
|
|
- #print blog[data]
|
|
|
- soup = BeautifulSoup(blog[data])
|
|
|
- text = soup.get_text()
|
|
|
- tagtext.append(text)
|
|
|
- #an image
|
|
|
- if data == "caption":
|
|
|
- if blog[data]:
|
|
|
- #print blog[data]
|
|
|
- soup = BeautifulSoup(blog[data])
|
|
|
- text = soup.get_text()
|
|
|
- tagtext.append(text)
|
|
|
-
|
|
|
- return tagtext
|
|
|
+ token = None
|
|
|
+ oauth_verifier = None
|
|
|
+ oauth_token = None
|
|
|
+ oauth_token_secret = None
|
|
|
+ accessed = False
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ def __init__(self, consumer_key, consumer_secret):
|
|
|
+ self.consumer_key = consumer_key
|
|
|
+ self.consumer_secret = consumer_secret
|
|
|
+ self.consumer = oauth2.Consumer(consumer_key, consumer_secret)
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ def authorize_url(self):
|
|
|
+ client = oauth2.Client(self.consumer)
|
|
|
+ resp, content = client.request(request_token_url, "GET")
|
|
|
+ #parse content
|
|
|
+ if not self.oauth_token:
|
|
|
+ request_token = dict(urlparse.parse_qsl(content))
|
|
|
+ self.oauth_token = request_token['oauth_token'] #'QBXdeeMKAnLzDbIG7dDNewTzRYyQoHZLbcn3bAFTCEFF5EXurl' #
|
|
|
+ self.oauth_token_secret = request_token['oauth_token_secret']#'u10SuRl2nzS8vFK4K7UPQexAvbIFBFrZBjA79XDlgoXFxv9ZhO' #
|
|
|
+ link = authorize_url+"?oauth_token="+self.oauth_token+"&redirect_uri=http%3A%2F%2Flocalhost%3A8000/hackathon/tumblr"
|
|
|
+ return link
|
|
|
+
|
|
|
+
|
|
|
+ def access_token_url(self, oauth_verifier=''):
|
|
|
+ self.accessed = True
|
|
|
+ token = oauth2.Token(self.oauth_token, self.oauth_token_secret)
|
|
|
+ self.oauth_verifier = oauth_verifier
|
|
|
+ print self.oauth_verifier
|
|
|
+ token.set_verifier(self.oauth_verifier)
|
|
|
+ client = oauth2.Client(self.consumer, token)
|
|
|
+ resp, content = client.request(access_token_url,"POST")
|
|
|
+ access_token = dict(urlparse.parse_qsl(content))
|
|
|
+ #set verified token
|
|
|
+ self.token = oauth2.Token(access_token['oauth_token'], access_token['oauth_token_secret'])
|
|
|
+ #print self.token
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ def getUserInfo(self):
|
|
|
+ ''' Returns users information. '''
|
|
|
+ client = oauth2.Client(self.consumer, self.token)
|
|
|
+ #print client
|
|
|
+ resp, content = client.request(user_uri, "POST")
|
|
|
+ if int(resp['status']) != 200:
|
|
|
+ raise Exception("Invalid response %s." % resp['status'])
|
|
|
+
|
|
|
+ #return content in json format
|
|
|
+ jsonlist = json.loads(content)
|
|
|
+ response = jsonlist['response']
|
|
|
+ user_info = response['user']
|
|
|
+ total_blogs = len(user_info['blogs'])
|
|
|
+ #print user_info
|
|
|
+ return user_info, total_blogs
|
|
|
+
|
|
|
+
|
|
|
+ def getBlogInfo(self, user):
|
|
|
+ ''' Returns blogger's blog information '''
|
|
|
+ blog_info = blog_uri + user + ".tumblr.com/info?api_key="+self.consumer_key
|
|
|
+ req = requests.get(blog_info)
|
|
|
+
|
|
|
+ #if int(req.status_code) != 200:
|
|
|
+ # raise Exception("Invalid response %s." % resp['status'])
|
|
|
+
|
|
|
+
|
|
|
+ jsonlist = json.loads(req.content)
|
|
|
+ response = jsonlist['response']
|
|
|
+ blog = response['blog']
|
|
|
+ blog['updated'] = time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(blog['updated']))
|
|
|
+ return blog
|
|
|
+
|
|
|
+
|
|
|
+ def getTaggedInfo(self, tag):
|
|
|
+ ''' Return tags related to blog with certain tag. '''
|
|
|
+
|
|
|
+ tagged_uri = "http://api.tumblr.com/v2/tagged?tag="+tag+"&api_key="+self.consumer_key+"&limit=20"
|
|
|
+ req = requests.get(tagged_uri)
|
|
|
+ jsonlist = json.loads(req.content)
|
|
|
+
|
|
|
+ tags = []
|
|
|
+
|
|
|
+ meta = jsonlist['meta']
|
|
|
+ body = jsonlist['response']
|
|
|
+ for blog in body:
|
|
|
+ for data in blog:
|
|
|
+ if data == "tags":
|
|
|
+ #print blog[data]
|
|
|
+ for i in blog[data]:
|
|
|
+ m = re.match("(.*)(s*)s(t*)t(a*)a(r*)r(b*)b(u*)u(c*)c(k*)k(.*)", i.lower())
|
|
|
+ if not m:
|
|
|
+ tags.append(i)
|
|
|
+
|
|
|
+ return tags
|
|
|
+
|
|
|
+
|
|
|
+ def getTaggedBlog(self, tag):
|
|
|
+ ''' Return the tagged blogs's captions or post.'''
|
|
|
+
|
|
|
+ tagged_uri = "http://api.tumblr.com/v2/tagged?tag="+tag+"&api_key="+self.consumer_key+"&limit=20"
|
|
|
+ req = requests.get(tagged_uri)
|
|
|
+ jsonlist = json.loads(req.content)
|
|
|
+
|
|
|
+ meta = jsonlist['meta']
|
|
|
+ body = jsonlist['response']
|
|
|
+
|
|
|
+ tagtext = []
|
|
|
+
|
|
|
+ for blog in body:
|
|
|
+ #print "####"
|
|
|
+ for data in blog:
|
|
|
+ #post
|
|
|
+ if data == "body":
|
|
|
+ if blog[data]:
|
|
|
+ #print blog[data]
|
|
|
+ soup = BeautifulSoup(blog[data])
|
|
|
+ text = soup.get_text()
|
|
|
+ tagtext.append(text)
|
|
|
+ #an image
|
|
|
+ if data == "caption":
|
|
|
+ if blog[data]:
|
|
|
+ #print blog[data]
|
|
|
+ soup = BeautifulSoup(blog[data])
|
|
|
+ text = soup.get_text()
|
|
|
+ tagtext.append(text)
|
|
|
+
|
|
|
+ return tagtext
|