فهرست منبع

include method to obtain location id-s within x-amount distance, and pull latest images from location id

mk200789 10 سال پیش
والد
کامیت
c164d78135

+ 34 - 1
hackathon_starter/hackathon/scripts/instagram.py

@@ -11,6 +11,7 @@ import json
 import simplejson as json2
 import googlemaps
 from django.conf import settings
+import re
 
 authorization_url = 'https://api.instagram.com/oauth/authorize/?client_id='
 access_token_url = 'https://api.instagram.com/oauth/access_token'
@@ -149,6 +150,38 @@ class InstagramOauthClient(object):
 		#geocoding and address
 		geocode_result = gmaps.geocode(address)
 		
-		return geocode_result
+		if geocode_result:
+			location = geocode_result[0]['geometry']['location']
+			return location
+
+
+	def search_location_ids(self, latitude, longitude, access_token):
+		search_location = 'https://api.instagram.com/v1/locations/search?lat='+str(latitude)+'&lng='+str(longitude)+'&access_token='+access_token+"&distance=2000"
+		req = requests.get(search_location)
+		content = json2.loads(req.content)
+		data = content
+		list_of_ids =[]
+		if data['meta']['code'] != 200:
+			raise Exception("Invalid response %s." % data['meta']['code'])
+		search_ids = data['data']
+		for data in search_ids:
+			for i in data:
+				if i == 'id':
+					list_of_ids.append(data[i])
+
+		print len(list_of_ids)
+		return list_of_ids
+
+	def search_location_media(self, list_location_ids, access_token):
+		media = []
+		for location in list_location_ids:
+			media_by_location = 'https://api.instagram.com/v1/locations/'+location+'/media/recent?access_token='+access_token
+			req = requests.get(media_by_location)
+			content = json2.loads(req.content)
+			media.append(content['data'])
+		
+		return media
+
+
 
 		

+ 12 - 1
hackathon_starter/hackathon/templates/hackathon/instagram_q.html

@@ -13,6 +13,17 @@
 		</form>
 	</div>
 	{% if geocode_result %}
-	{{geocode_result}}
+		{{geocode_result.lat}}, {{geocode_result.lng}}
+		
+		{{list_id}}
+		
+		{% for list in media %}
+			{% for user in list %}
+				<img src="{{user.images.thumbnail.url}}">
+			{% endfor %}
+		{% endfor %}
+		
+
 	{% endif %}
+
 </html>

+ 9 - 4
hackathon_starter/hackathon/views.py

@@ -202,17 +202,22 @@ def instagramUserMedia(request):
     parsedData = getInstagram.get_user_media(access_token)
     return JsonResponse({'data': parsedData })
 
-def instagramMediaByLocation(request):  
+def instagramMediaByLocation(request):
     if request.method == 'GET':
         if request.user in User.objects.all():
             address = request.GET.get('address_field')
             user_id = User.objects.get(username=request.user).id
             access_token = Profile.objects.get(user=user_id).oauth_secret
+            #lat, lng = getInstagram.search_for_location(address, access_token)
             geocode_result = getInstagram.search_for_location(address, access_token)
-        else:
-            geocode_result =''
+            if geocode_result:
+                location_ids =getInstagram.search_location_ids(geocode_result['lat'], geocode_result['lng'], access_token)
+                media = getInstagram.search_location_media(location_ids, access_token)
+            else:
+                media = '' 
+                list_id=''
 
-    context = {'title':'Media by location', 'geocode_result':geocode_result}
+    context = {'title':'Media by location', 'geocode_result':geocode_result, 'media':media, 'list_id':location_ids}
     return render(request, 'hackathon/instagram_q.html', context)