SlideShare a Scribd company logo
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;
}
Рейтинг пользователей по
              репозиториям – результат
               yui
       jashkenas
           jeresig
             apm
           sdesai
       msweeney
        davglass
           lsmith
        madrobby
           rgrove
           kloots
        jzaefferer
savetheclocktower
            jenny
    brandonaaron
           cpojer
             tobie
           flesler
     sstephenson
            satyr
        kamicane
          nzakas
             tripp
      fabiomcosta
            arian
         kassens
        tjcrowder

                     0   500   1000   1500   2000   2500
Связанность репозиториев

   Связанность по контрибьюторам
   Связанность по watcher'ам
   Скрипт ~100 строк кода:
   http://gist.github.com/742247
Связанность по
   контрибьюторам – результат
   Репозиторий 1              Репозиторий 2         Связанность
jquery/jquery             madrobby/scriptaculous              0
jquery/jquery             jashkenas/coffee-script             0
jquery/jquery             yui/yui3                            0
jquery/jquery             sstephenson/prototype               0
jquery/jquery             mootools/mootools-core              0
madrobby/scriptaculous jashkenas/coffee-script                0
madrobby/scriptaculous yui/yui3                               0
madrobby/scriptaculous sstephenson/prototype                  2
madrobby/scriptaculous mootools/mootools-core                 0
jashkenas/coffee-script   yui/yui3                            0
jashkenas/coffee-script   sstephenson/prototype               1
jashkenas/coffee-script   mootools/mootools-core              0
yui/yui3                  sstephenson/prototype               0
yui/yui3                  mootools/mootools-core              0
sstephenson/prototype     mootools/mootools-core              0
Связанность по watcher'ам -
            результат
   Репозиторий 1              Репозиторий 2         Связанность
jquery/jquery             madrobby/scriptaculous            375
jquery/jquery             jashkenas/coffee-script           275
jquery/jquery             yui/yui3                          384
jquery/jquery             sstephenson/prototype             377
jquery/jquery             mootools/mootools-core            309
madrobby/scriptaculous jashkenas/coffee-script               72
madrobby/scriptaculous yui/yui3                             118
madrobby/scriptaculous sstephenson/prototype                547
madrobby/scriptaculous mootools/mootools-core               127
jashkenas/coffee-script   yui/yui3                           56
jashkenas/coffee-script   sstephenson/prototype              96
jashkenas/coffee-script   mootools/mootools-core             70
yui/yui3                  sstephenson/prototype             131
yui/yui3                  mootools/mootools-core            122
sstephenson/prototype     mootools/mootools-core            167

More Related Content

Similar to Social networks analisys - github API

DevInRio 2010 - NodeJS
DevInRio 2010 - NodeJSDevInRio 2010 - NodeJS
DevInRio 2010 - NodeJS
Emerson Macedo
 
Core rest edgarsilva_v1
Core rest edgarsilva_v1Core rest edgarsilva_v1
Core rest edgarsilva_v1Edgar Silva
 
Une application en une heure avec symfony - Collège de Mainsonneuve
Une application en une heure avec symfony - Collège de MainsonneuveUne application en une heure avec symfony - Collège de Mainsonneuve
Une application en une heure avec symfony - Collège de MainsonneuvePhilippe Gamache
 
Exorcisando o GStreamer
Exorcisando o GStreamerExorcisando o GStreamer
Exorcisando o GStreamer
ciberglo
 
Perl para sysadmins
Perl para sysadminsPerl para sysadmins
Perl para sysadmins
Samir Siqueira
 

Similar to Social networks analisys - github API (6)

DevInRio 2010 - NodeJS
DevInRio 2010 - NodeJSDevInRio 2010 - NodeJS
DevInRio 2010 - NodeJS
 
Core rest edgarsilva_v1
Core rest edgarsilva_v1Core rest edgarsilva_v1
Core rest edgarsilva_v1
 
Une application en une heure avec symfony - Collège de Mainsonneuve
Une application en une heure avec symfony - Collège de MainsonneuveUne application en une heure avec symfony - Collège de Mainsonneuve
Une application en une heure avec symfony - Collège de Mainsonneuve
 
Exorcisando o GStreamer
Exorcisando o GStreamerExorcisando o GStreamer
Exorcisando o GStreamer
 
Jetty Introduction
Jetty IntroductionJetty Introduction
Jetty Introduction
 
Perl para sysadmins
Perl para sysadminsPerl para sysadmins
Perl para sysadmins
 

Social networks analisys - github API

  • 2. Общая информация ● git – распределенная система управления версиями файлов ● github = git хостинг + социальная сеть ● Возможности: issue tracking, wiki, downloads, code review ● Бесплатно для open-source, коммерческий хостинг для закрытых репозиториев
  • 3. Модель взаимодействия  Репозиторий – набор файлов исходного кода с историей изменения  Репозитории можно ветвить и соединять ветки вместе. Ветка – это полноценный репозиторий  Соответственно основные понятия – пользователь, репозиторий, ветка
  • 4. Немного статистики  495 000 человек  1 490 000 репозиториев  Известные пользователи: Twitter, Facebook, Yahoo, jQuery, Ruby on Rails, CakePHP, curl, Rackspace Hosting
  • 5. API  http://develop.github.com/  Доступ по HTTP и HTTPS  Форматы: yaml, json, xml  Bindings для C#, Java, Javascript, Perl, PHP, Python, Ruby  Ограничение: не более 60 запросов в час  Для вызова некоторых методов необходима аутентификация
  • 6. API – пользователи  Поиск пользователей  Получение информации о пользователе  Получение following и followers  Получение списка watched репозиториев
  • 7. API – репозитории  Поиск репозиториев  Получение информации о репозитории  Получение списка репозиториев пользователя  Получение списка contributers  Получение списка watchers  Получение списка forks
  • 8. API – другие возможности  Organization  Issues  Gist  Commit  Object  Network
  • 9. Disclaimer Все дальнейшие примеры не представляют никакой ценности с точки зрения анализа социальных сетей, но должны помочь понять, каким образом можно анализировать github при помощи его API.
  • 10. Рейтинг пользователя по репозиториям  Для заданных репозиториев  количество коммитов  просматриваемые репозитории  http://gist.github.com/742252
  • 11. Рейтинг пользователей по репозиториям – код 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; }
  • 12. Рейтинг пользователей по репозиториям – результат yui jashkenas jeresig apm sdesai msweeney davglass lsmith madrobby rgrove kloots jzaefferer savetheclocktower jenny brandonaaron cpojer tobie flesler sstephenson satyr kamicane nzakas tripp fabiomcosta arian kassens tjcrowder 0 500 1000 1500 2000 2500
  • 13. Связанность репозиториев  Связанность по контрибьюторам  Связанность по watcher'ам  Скрипт ~100 строк кода:  http://gist.github.com/742247
  • 14. Связанность по контрибьюторам – результат Репозиторий 1 Репозиторий 2 Связанность jquery/jquery madrobby/scriptaculous 0 jquery/jquery jashkenas/coffee-script 0 jquery/jquery yui/yui3 0 jquery/jquery sstephenson/prototype 0 jquery/jquery mootools/mootools-core 0 madrobby/scriptaculous jashkenas/coffee-script 0 madrobby/scriptaculous yui/yui3 0 madrobby/scriptaculous sstephenson/prototype 2 madrobby/scriptaculous mootools/mootools-core 0 jashkenas/coffee-script yui/yui3 0 jashkenas/coffee-script sstephenson/prototype 1 jashkenas/coffee-script mootools/mootools-core 0 yui/yui3 sstephenson/prototype 0 yui/yui3 mootools/mootools-core 0 sstephenson/prototype mootools/mootools-core 0
  • 15. Связанность по watcher'ам - результат Репозиторий 1 Репозиторий 2 Связанность jquery/jquery madrobby/scriptaculous 375 jquery/jquery jashkenas/coffee-script 275 jquery/jquery yui/yui3 384 jquery/jquery sstephenson/prototype 377 jquery/jquery mootools/mootools-core 309 madrobby/scriptaculous jashkenas/coffee-script 72 madrobby/scriptaculous yui/yui3 118 madrobby/scriptaculous sstephenson/prototype 547 madrobby/scriptaculous mootools/mootools-core 127 jashkenas/coffee-script yui/yui3 56 jashkenas/coffee-script sstephenson/prototype 96 jashkenas/coffee-script mootools/mootools-core 70 yui/yui3 sstephenson/prototype 131 yui/yui3 mootools/mootools-core 122 sstephenson/prototype mootools/mootools-core 167