Social networks analisys - github API
Upcoming SlideShare
Loading in...5
×
 

Social networks analisys - github API

on

  • 474 views

 

Statistics

Views

Total Views
474
Views on SlideShare
474
Embed Views
0

Actions

Likes
0
Downloads
1
Comments
0

0 Embeds 0

No embeds

Accessibility

Categories

Upload Details

Uploaded via as OpenOffice

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

Social networks analisys - github API Social networks analisys - github API Presentation Transcript

  • github
  • Общая информация
    • git – распределенная система управления версиями файлов
    • github = git хостинг + социальная сеть
    • Возможности: issue tracking, wiki, downloads, code review
    • Бесплатно для open-source, коммерческий хостинг для закрытых репозиториев
  • Модель взаимодействия
    • Репозиторий – набор файлов исходного кода с историей изменения
    • Репозитории можно ветвить и соединять ветки вместе. Ветка – это полноценный репозиторий
    • Соответственно основные понятия – пользователь, репозиторий, ветка
  • Немного статистики
    • 495 000 человек
    • 1 490 000 репозиториев
    • Известные пользователи: Twitter, Facebook, Yahoo, jQuery, Ruby on Rails, CakePHP, curl, Rackspace Hosting
  • API
    • http://develop.github.com/
    • Доступ по HTTP и HTTPS
    • Форматы: yaml, json, xml
    • Bindings для C#, Java, Javascript, Perl, PHP, Python, Ruby
    • Ограничение: не более 60 запросов в час
    • Для вызова некоторых методов необходима аутентификация
  • API – пользователи
    • Поиск пользователей
    • Получение информации о пользователе
    • Получение following и followers
    • Получение списка watched репозиториев
  • API – репозитории
    • Поиск репозиториев
    • Получение информации о репозитории
    • Получение списка репозиториев пользователя
    • Получение списка contributers
    • Получение списка watchers
    • Получение списка forks
  • API – другие возможности
    • Organization
    • Issues
    • Gist
    • Commit
    • Object
    • Network
  • Disclaimer
      Все дальнейшие примеры не представляют никакой ценности с точки зрения анализа социальных сетей, но должны помочь понять, каким образом можно анализировать github при помощи его API.
  • Рейтинг пользователя по репозиториям
    • Для заданных репозиториев
      • количество коммитов
      • просматриваемые репозитории
    • http://gist.github.com/742252
  • Рейтинг пользователей по репозиториям – код require_once('php-github-api/lib/phpGitHubApi.php'); $github = new phpGitHubApi(); $repositories = array( array('jquery', 'jquery'), array('madrobby', 'scriptaculous'), array('jashkenas', 'coffee-script'), array('yui', 'yui3'), array('sstephenson', 'prototype'), array('mootools', 'mootools-core') ); function add(&$array, $key, $value){ if (!array_key_exists($key, $array)) { $array[$key] = 0; } $array[$key] += $value; } foreach ($repositories as $repository) { list($user, $reponame) = $repository; echo "Processing repository '$reponame' of user '$user'" . PHP_EOL; echo 'Getting watchers' . PHP_EOL; $watchers = $github->getRepoApi()->getRepoWatchers($user, $reponame); foreach ($watchers as $watcher) { add($rating, $watcher, 10); } echo 'Getting contributors' . PHP_EOL; $contributors = $github->getRepoApi()->getRepoContributors($user, $reponame); foreach ($contributors as $contributor) { add($rating, $contributor['login'], $contributor['contributions']); } } asort($rating); foreach ($rating as $person => $ratingValue) { echo implode(',', array($person, $ratingValue)) . PHP_EOL; }
  • Рейтинг пользователей по репозиториям – результат
  • Связанность репозиториев
    • Связанность по контрибьюторам
    • Связанность по watcher'ам
    • Скрипт ~100 строк кода:
    • http://gist.github.com/742247
  • Связанность по контрибьюторам – результат
  • Связанность по watcher'ам - результат