浏览代码

include yahoo keys in settings, twitter template now displays available trends location and its neighbors

mk200789 10 年之前
父节点
当前提交
2c5d6b4519

+ 38 - 9
hackathon_starter/hackathon/scripts/twitter.py

@@ -92,9 +92,15 @@ class TwitterOauthClient(object):
 
 
 
-	def get_trends_available(self):
+	def get_trends_available(self, yahoo_consumer_key):
 		method = "get"
-		link ='https://api.twitter.com/1.1/trends/available.json'
+		link = 'https://api.twitter.com/1.1/trends/available.json'
+		link_parameters = {}
+		#link = 'https://api.twitter.com/1.1/trends/closest.json'
+		#link_parameters = {'lat':'40.782032', 'long':'-73.9717188'}
+		#link = 'https://api.twitter.com/1.1/trends/place.json'
+		#link_parameters = {'id': '1'}
+		
 
 		oauth_parameters = get_oauth_parameters(
 		    self.consumer_key,
@@ -104,6 +110,7 @@ class TwitterOauthClient(object):
 		oauth_parameters['oauth_signature'] = generate_signature(
 		    method,
 		    link,
+		    link_parameters,
 		    oauth_parameters,
 		    self.consumer_key,
 		    self.consumer_secret,
@@ -112,15 +119,34 @@ class TwitterOauthClient(object):
 
 		headers = {'Authorization': create_auth_header(oauth_parameters)}
 
+		if link_parameters:
+			link += '?'+urllib.urlencode(link_parameters)
 
 		req = requests.get(link, headers=headers)
-		print req.status_code
+		#print req.status_code
 		
 		if int(req.status_code) != 200:
 			raise Exception('Invalid response %s' %req.status_code)
 
-		content = json2.loads(req.content)[0]
-		print content
+		content = json2.loads(req.content)
+		#print len(content)
+		
+		for place in content:
+			for e in place:
+				if e == 'url':
+					request_neighbor_data=  requests.get(place[e]+'/neighbors?appid='+yahoo_consumer_key+'&format=json')
+					#print request_neighbor_data.status_code
+					if request_neighbor_data.status_code == 200:
+						neighbor = json2.loads(request_neighbor_data.content)
+					else:
+						neighbor = {}
+
+			place['neighbor'] = neighbor
+					#print place
+
+
+		return content
+		
 
 
 
@@ -141,15 +167,18 @@ def get_nonce():
 	return n
 
 
-def generate_signature(method, url, oauth_parameters, oauth_consumer_key, oauth_consumer_secret, oauth_token_secret=None, status=None):
+def generate_signature(method, link, link_parameters, oauth_parameters, oauth_consumer_key, oauth_consumer_secret, oauth_token_secret=None, status=None):
     '''
     Generate signature.
     '''
-
-    parameters = urllib.urlencode(collections.OrderedDict(sorted(oauth_parameters.items())))
+    if link_parameters:
+    	new_dict = dict(oauth_parameters, **link_parameters)
+    	parameters = urllib.urlencode(collections.OrderedDict(sorted(new_dict.items())))
+    else:
+    	parameters = urllib.urlencode(collections.OrderedDict(sorted(oauth_parameters.items())))
 
     #Create your Signature Base String
-    signature_base_string = ( method.upper() + '&' + percent_encode(str(url)) + '&' + percent_encode(parameters))
+    signature_base_string = ( method.upper() + '&' + percent_encode(str(link)) + '&' + percent_encode(parameters))
 
     #Get the signing key
     signing_key = create_signing_key(oauth_consumer_secret, oauth_token_secret)

+ 39 - 1
hackathon_starter/hackathon/templates/hackathon/twitter.html

@@ -3,5 +3,43 @@
 <body>
 	{% include 'hackathon/base.html' %}
 	<h1 class="text-center"> {{ title }}</h1> 
-	</div>	
+	</div>
+	<div class="col-lg-12">
+        <div class="table-responsive">
+            <table class="table table-bordered table-hover table-striped tablesorter">
+                <thead>
+                <tr>
+                <th class="header"> Name <i class="icon-sort"></i></th>
+                <th class="header"> Woeid <i class="icon-sort"></i></th>
+                <th class="header"> Place type <i class="icon-sort"></i></th>
+                <th class="header"> Country <i class="icon-sort"></i></th>
+                <th class="header"> Country Code <i class="icon-sort"></i></th>
+                <th class="header"> ParentID <i class="icon-sort"></i></th>
+                <th class="header"> Neighbor <i class="icon-sort"></i></th>
+                </tr>
+            </thead>
+            <tbody>
+            {% for item in value %}
+                <tr>
+                    <td>{{ item.name }}</td> 
+                    <td>{{ item.woeid }}</td>
+                    <td>{{ item.placeType.name}}</td>
+                    <td>{{ item.country}}</td>
+                    <td>{{ item.countryCode}}</td>
+                    <td>{{ item.parentid}}</td>
+                    {% if item.neighbor %}
+                        <td>
+                            {% for v in item.neighbor.places.place %}
+                                {{ v.name }},
+                            {% endfor %}
+                        </td>
+                    {% else %}
+                        <td>No available Data.</td>
+                    {% endif %}
+            {% endfor %}
+            </tbody>
+            </table>
+        </div>
+    </div>
+
 </html>

+ 5 - 2
hackathon_starter/hackathon/views.py

@@ -32,6 +32,7 @@ from hackathon.serializers import SnippetSerializer
 from hackathon.forms import UserForm
 
 
+
 getTumblr = TumblrOauthClient(settings.TUMBLR_CONSUMER_KEY, settings.TUMBLR_CONSUMER_SECRET)
 getInstagram = InstagramOauthClient(settings.INSTAGRAM_CLIENT_ID, settings.INSTAGRAM_CLIENT_SECRET)
 getTwitter = TwitterOauthClient(settings.TWITTER_CONSUMER_KEY, settings.TWITTER_CONSUMER_SECRET, settings.TWITTER_ACCESS_TOKEN, settings.TWITTER_ACCESS_TOKEN_SECRET)
@@ -250,6 +251,7 @@ def instagramUserMedia(request):
     return JsonResponse({'data': parsedData })
 
 def instagramMediaByLocation(request):
+    print request.user
     if request.method == 'GET':
         if request.GET.items():
             #check if user has a User profile
@@ -308,9 +310,10 @@ def twitter(request):
             profile.save()            
 
 
-    getTwitter.get_trends_available()
+    value = getTwitter.get_trends_available(settings.YAHOO_CONSUMER_KEY)
+    #yahoo_woeid_link = 'http://where.yahooapis.com/v1/place/'+returned_woeid+'?appid='+settings.YAHOO_CONSUMER_KEY
 
-    context ={'title': 'twitter'}
+    context ={'title': 'twitter', 'value': value}
     return render(request, 'hackathon/twitter.html', context)
 
 

+ 3 - 0
hackathon_starter/hackathon_starter/settings.py

@@ -117,6 +117,9 @@ INSTAGRAM_CLIENT_ID = '77dc10b9e3624e908ce437c0a82da92e'
 INSTAGRAM_CLIENT_SECRET = '8bcf3139857149aaba7acaa61288427f'
 
 GOOGLEMAP_API_KEY = 'AIzaSyA7tttML91EGZ32S_FOOoxu-mbxN9Ojds8'
+YAHOO_CONSUMER_KEY = 'dj0yJmk9bUtPVmVpZEczZWp5JmQ9WVdrOWQxbDJkMjFhTmpRbWNHbzlNQS0tJnM9Y29uc3VtZXJzZWNyZXQmeD1iOQ--'
+YAHOO_CONSUMER_SECRET = '630e59649caf71255679853ca3f6b0580c571e98'
+YAHOO_APP_ID = 'wYvwmZ64'
 
 TWITTER_CONSUMER_KEY = 'MS8DNyi5HX9HhJgigL24VEkqA'
 TWITTER_CONSUMER_SECRET = '1QdaLTNyrGIoZUniToou5bqax8mo7yuzIm7o4XjxzMhBE4UPY1'