Unlimited WordPress themes, graphics, videos & courses! Unlimited asset downloads! From $16.50/m
Advertisement
  1. Code
  2. PHP
Code

Использование социальных сетей для поиска очевидцев: Twitter API 

by
Difficulty:IntermediateLength:MediumLanguages:
This post is part of a series called Using Social Media to Locate Eyewitnesses.
Using Social Media to Locate Eyewitnesses to Important Events

Russian (Pусский) translation by Ilya Nikov (you can also view the original English article)

Tweet about President Obama taking the stage at Selma

Это вторая часть серии из двух частей, посвященная использованию социальных сетей для поиска очевидцев важных событий. В первой части я показал вам, как использовать API Instagram, чтобы найти свидетелей живой видеосессии Макклемора в Сиэтле. В этой части мы будем использовать API Twitter для поиска участников выступления президента Обамы в Сельме на мосту Эдмунда Петтуса.

Вы можете загрузить код для обоих эпизодов, используя ссылку репозитория GitHub на боковой панели. Вы также можете быть заинтересованы в моей серии Tuts +, Работа с Twitter API.

Возможности геопоиск Twitter более ограничены и поэтому требуют более подробного кода для использования. Geotagged сообщения в Twitter можно найти только за последние семь дней. И они доступны только по дате (а не по времени), поэтому вам нужно фильтровать результаты API для точности.

Я участвую в обсуждениях ниже. Если у вас есть вопрос или предложение, пожалуйста, напишите комментарий ниже. Вы также можете связаться со мной в Twitter @reifman или напрямую отправить мне электронное письмо.

Что мы рассмотрели в первой части

Телефоны, которые мы носим в наших карманах, записывают каждый наш шаг, делясь им с поставщиками сотовых телефонов и часто сторонними компаниями-разработчиками программного обеспечения, чьи мотивации в основном фокусируются на прибыли.

Многие люди не понимают, что они оставили геотаггинг в своих приложениях в социальных сетях, полностью предоставляя свое местоположение с каждым сообщением в социальных сетях. Это включало конгрессмена Республиканской партии Аарона Шока. AP использовала геотаг своей учетной записи Instagram, чтобы показать использование средств налогоплательщиков для экстравагантных частных рейсов и других роскошных мероприятий.

Congressman Aaron Schock in South America

Таким образом, геотаггинг можно использовать для благих целей. В этой серии мы изучаем то, как журналисты и правоохранительные органы могут найти потенциальных свидетелей для важных событий, таких как преступление или происшествие с использованием социальных сетей.

Однако геотаггинг также можно использовать и с плохими намерениями. В Беркли компьютерные ученые и педагоги написали приложение Ready или нет?, чтобы продемонстрировать, как геотаггинг в Twitter и Instagram записывают каждый наш шаг.

Вот Twitter-аккаунт соаснователя Apple Стив Возняка в этом приложении:

Ready or Not App Steve Wozniak Twitter Geolocation History

Геотегинг на Instagram и Twitter достаточно точен, чтобы позволить кому-то легко определить ваше место жительства, место работы и маршрут путешествия.

В этом эпизоде я проведу вас через API Twitter. Я предоставил репозиторий GitHub (ссылка находится на боковой панели), чтобы скачать его и самим попробовать этот код. Мое приложение Свидетель написано на Yii Framework для PHP, о котором вы можете узнать больше в моей серии статей Программирование на Yii2 на Tuts+.

Если вы не хотите делиться своим местоположением с общественностью, приложение Готов или нет? предлагает ссылки и руководства по отключению этих функций (найдите ссылку на своей домашней странице). Честно говоря, я отключил их у себя себя, и я призываю вас тоже это сделать.

Если вы являетесь членом правоохранительных органов или журналистом, который хотел бы получить больше информации, пожалуйста, свяжитесь со мной напрямую. Я также был бы заинтересован в любом успешном использовании этого кода (в благих целях).

Что мы сделали с Instagram

В последнем эпизоде, мы использовали API Instagram, чтобы найти очевидцев для видеоролика Mackelmore в 2013 году для White Cadillac. Довольно легко нам удалось найти фотографию пользователя Instagram Джошуа Льюиса, на которой Маклемор вышел из своего автомобиля (круто, да?):

Macklemore Arrives Found with the Instagram API

Теперь давайте начнем использовать API Twitter.

Использование API Twitter

Как и в случае с Instagram, вам необходимо войти в свою учетную запись Twitter и зарегистрировать приложение разработчика. Вы должны зарегистрировать такое приложение:

Twitter App Registration

Twitter покажет вам данные о вашем приложении:

Twitter App Eyewitness Details

Вот страница настроек:

Twitter App Details

Вот ключи и токены доступа для приложения. Обратите внимание на это.

Twitter App Keys and Access Tokens

Затем прокрутите вниз и создайте токены доступа для своей учетной записи. Запишите их.

Twitter App Account Access Tokens

Добавьте все четыре этих ключа конфигурации и секреты в файл /var/secure/eyew.ini:

Затем мы создадим миграцию Active Record, чтобы создать нашу модель Twitter. Она сохранит твиты, которые мы получаем от вызовов API.

Как и в первой части, вам нужно выполнить миграцию:

Затем я использовал генератор кода Yii2, Gii, чтобы создать модель и CRUD-контроллеры для модели Twitter. Если вы скачаете код репозитория GitHub, используя ссылку боковой панели в этом учебнике, вы также получите этот код.

Создаем новый момент

Поскольку Twitter ограничивает поиски геолокации максимум на 7 дней, я в конечном итоге выбрал пятилетнюю юбилейную речь президента Обамы на мосту Эдмунда Петтуса.

Я снова использовал Карты Google, чтобы получить координаты GPS для моста:

Edmund Pettus Bridge Selma Alabama Geolocation

Затем я создал Момент для для поиска речи. Я обновил его несколько раз, чтобы настроить географический радиус поиска (это мост) и временной диапазон:

Edmund Pettus Bridge Selma Alabama Geolocation Moment

Поиск с помощью API Twitter

Ограничения API Twitter - в том, что он позволяет вам искать по дате, например. 2015-03-07, тогда как Instagram индексируется точными отметками времени Unix. Поэтому мы должны начать наш поиск в Twitter на целый день вперед и искать назад.

Поскольку мы, скорее всего, получим много твитов за пределами желаемого временного диапазона, мы должны повторять вызовы в API Twitter. Twitter возвращает до 100 твитов за запрос API и позволяет 180 запросов в 15-минутном окне.

Я использую библиотеку API Twitter Джеймса Мэллисона для PHP. Вот как мы настраиваем библиотеку для вызовов:

Первоначально мы запрашиваем 100 результатов от Twitter по нашим GPS-координатам до определенной даты.

Мы записываем только твиты в пределах нашего точного диапазона времени, игнорируя другие результаты. Когда мы обрабатываем их, мы учитываем самый низкий идентификатор твита.

Затем мы делаем цикл, повторяя запросы в Twitter (до 179 раз), запрашивая дополнительные записи, которые были сделаны раньше, чем предыдущий идентификатор твита предыдущей партии. Другими словами, при последующих запросах вместо запроса до определенной даты мы запрашиваем max_id самого низкого идентификатора твита, который мы получили.

Мы останавливаемся, когда возвращается менее 100 записей или когда возвращенные твиты раньше нашего реального диапазона.

Если вам нужен доступ к более чем 18 000 твитов, вам нужно будет выполнить задание в фоне для вызова API Twitter, как это было сделано в нашей другой серии API Twitter.

Когда мы обрабатываем результаты API, нам необходимо фильтровать твиты, записывая только те, которые попадают в наше фактическое время начала и окончания.

Примечание. В API Twitter есть много разочаровывающих причуд, которые делают пейджинг сложнее, чем он должен быть. Довольно часто Twitter не возвращает никаких результатов без кода ошибки. В других случаях я обнаружил, что он возвращал небольшое количество результатов, но это не означает, что другой запрос не вернет больше. Нет четких способов узнать, когда Twitter вернул все результаты. Очень непоследовательно. Таким образом, вы можете заметить, что мой код содержит несколько интересных обходных решений, например, изучите $count_max_repeats.

Один из первых результатов, которые были возвращены, включал твит ниже Фреда Дэвенпорта, демонстрирующего президента Обаму на сцене:

The First Results for Selma 50th via the Twitter Search API

Вот это на Twitter:

President Obama in Selma via the Twitter API

Затем, когда вы просматриваете результаты дальше, вы можете найти еще много людей, которые написали об Обаме, включая средства массовой информации:

More Selma Twitter API Results

Теперь давайте сделаем более локальный поиск.

Второй, более локальный поиск

Key Arena - крупная концертная и спортивная арена в Сиэтле. В минувшие выходные они провели турнир по баскетболу среди женщин Pac-12:

Key Arena Calendar of Events

Давайте получим наши GPS-координаты для Key Arena с помощью Google Maps:

Key Arena Geolocation on Google Maps

Затем я создал и изменил момент, чтобы найти более длинный диапазон времени для твитов:

Create a moment to search Key Arena Basketball Tournament

И вот некоторые из результатов. Мой любимый:

«Я хочу оставить эту игру в баскетбол. Я ненавижу баскетбол."
Twitter Search Results for Key Arena Tournament

По большей части мне кажется, что API Instagram намного мощнее, чем Twitter, и дает в целом более интригующие результаты. Однако это зависит от того, кого вы ищете. Если вы просто хотите идентифицировать людей, которые там были, любой API работает хорошо.

Что мы узнали

Надеюсь, вам понравилась эта серия. Я нашел ее увлекательной и был впечатлен результатами. И в ней подчеркивается, что мы все должны заботиться о нашем уровне конфиденциальности в этой взаимосвязанной цифровой эпохе.

API для Instagram и Twitter - это невероятно мощные сервисы для поиска пользователей социальных сетей, которые находились поблизости от определенных мест в определенное время. Эта информация может быть использована как в благих так и не очень целях. Вероятно, вам стоит подумать об отключении геолокации - следуйте ссылкам в приложении Готов или нет?

Вы также можете ознакомиться с моей серией статей Работаем с API Twitter на Tuts +.

Пожалуйста, не стесняйтесь оставлять свои вопросы и комментарии ниже. Вы также можете связаться со мной в Twitter @reifman или напрямую отправить мне электронное письмо. Я особенно хотел бы услышать комментарии от журналистов и правоохранительных органов, которые используют эти примеры.

Вы также можете просмотреть мою страницу инструктора Tuts +, чтобы найти другие учебники, которые я написал.

Ссылки по теме

Advertisement
Advertisement
Advertisement
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.