Доброго времени суток всем. Написал небольшой скрипт, который пробегается по всем фотографиям заданного пользователя и генерирует Yandex-карту со всеми фотографиями, у которых было задано местоположение. Spoiler: Зачем это надо? Тут надо отметить одну интересную особенность инстаграма. При выборе фотографии, если инстаграм находит на ней геотеги, то он автоматически выставляет флажок добавления этой фотки на карту, но если пользователь никак не называет это место, то и над фотографией в ленте не будет отображаться, что фото сделано из такого-то места. Таким образом, если пользователь никак не называет место, где была произведена фотка, но не снимает галочку добавления на карту, то никто из просто интерфейса и не увидит, что у фотографии есть геоданные. Если говорить техническим языком, то такие фотографии имеют location.id равный нулю. Скрипт поможет выделить такие точки и обозначить их на карте особой меткой, тк они интересуют больше всего. Если пользователь не очень шарит в приложениях, то вполне легко можно узнать где он живет и тд. Сам скрипт будет являться частью одного большого проекта, но использовать его можно уже сейчас. Репозиторий на гитхабе: https://github.com/cyberpunkych/SmallSocialParser Установка доп. компонентов для работы скрипта: Code: $ sudo pip install python-instagram $ sudo pip install requests Использование: Code: $ python inst_place.py username Spoiler: Сам скрипт: Code: #!/usr/bin/python from instagram.client import InstagramAPI import sys import re import requests from datetime import date import time import codecs import urllib api = InstagramAPI(client_id='4412fd0dc9f04234bc7ed93a85463502', client_secret='e155859592c84346ab775f4d0b0e000e') map_html=""" <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <script src="http://api-maps.yandex.ru/2.1/?lang=ru_RU" type="text/javascript"></script> <script type="text/javascript"> ymaps.ready(init); var myMap, myPlacemark; function init(){ myMap = new ymaps.Map("map", { center: [55.76, 37.64], zoom: 5 }); """ r=requests.post("http://www.otzberg.net/iguserid/index.php", data={"q":str(sys.argv[1]), "mode":"getid"}) html=r.text print "=======================" try: user_id = int(re.findall('<h4>([^>]+)</h4>', html)[1].split(' ')[2]) r1=requests.get("https://instagram.com/"+sys.argv[1]+"/") photos_len = re.findall('"count":([^.]+),"page', r1.text) except Exception, e: print "Bad username! Exit..." print "=======================" exit() print "User id: "+str(user_id) try: print "Count media: "+str(photos_len[0]) except Exception: print "Profile is privat!" print "=======================" exit() recent_media = api.user_recent_media(user_id=str(user_id)) count_media=len(recent_media[0]) last_id=0 map_html1="" while count_media<int(photos_len[0]): for i in recent_media[0]: try: if i.location: pass print "=======================" print i.link print i.location map_html1+=u"myPlacemark = new ymaps.Placemark(["+str(i.location.point.latitude)+", "+str(i.location.point.longitude)+"], {\n" if i.location.id=='0': map_html1+=u" hintContent: ' ',\n balloonContent: decodeURIComponent('<a target=\"_blank\" href=\"{}\">{}</a><br><img src=\"{}\">') }}, {{ preset: 'islands#dotIcon' }} );\n myMap.geoObjects.add(myPlacemark);\n\n".format(i.link, i.link, i.images["low_resolution"].url) else: map_html1+=u" hintContent: ' ',\n balloonContent: decodeURIComponent('<a target=\"_blank\" href=\"{}\">{}</a><br><img src=\"{}\">') }} );\n myMap.geoObjects.add(myPlacemark);\n\n".format(i.link, i.link, i.images["low_resolution"].url) except Exception as error: pass #print error if recent_media[0] == []: pass else: last_id=str(recent_media[0][-1]).split(' ')[1] recent_media = api.user_recent_media(user_id=str(user_id), max_id=last_id) count_media = count_media + len(recent_media[0]) map_html+=map_html1 map_html+=""" } </script> </head> <body> <div id="map" style="width: 600px; height: 400px"></div> </body> </html> """ map_file=codecs.open(sys.argv[1]+'_'+str(date.today().year)+'_'+str(date.today().month)+'_'+str(date.today().day)+'.html', 'w', "utf-8") map_file.write(map_html) map_file.close print "=======================" Просьба о всех багах и ошибах писать в эту тему.
Нет, хотелось бы сделать набор скриптов, которые парсят информацию о человеке из соцсетей и как-то складывают всю информацию воедино. Выявление частых точек, где человек делал фотки/писал твиты, выявление лучших друзей и тд.