social networks analisys - github api

15
github

Upload: baturin

Post on 26-May-2015

134 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Social networks analisys - github API

github

Page 2: Social networks analisys - github API

Общая информация

● git – распределенная система управления версиями файлов

● github = git хостинг + социальная сеть● Возможности: issue tracking, wiki, downloads,

code review● Бесплатно для open-source, коммерческий

хостинг для закрытых репозиториев

Page 3: Social networks analisys - github API

Модель взаимодействия

Репозиторий – набор файлов исходного кода с историей изменения

Репозитории можно ветвить и соединять ветки вместе. Ветка – это полноценный репозиторий

Соответственно основные понятия – пользователь, репозиторий, ветка

Page 4: Social networks analisys - github API

Немного статистики

495 000 человек 1 490 000 репозиториев Известные пользователи:

Twitter, Facebook, Yahoo, jQuery, Ruby on Rails, CakePHP, curl, Rackspace Hosting

Page 5: Social networks analisys - github API

API

http://develop.github.com/ Доступ по HTTP и HTTPS Форматы: yaml, json, xml Bindings для C#, Java, Javascript, Perl, PHP,

Python, Ruby Ограничение: не более 60 запросов в час Для вызова некоторых методов необходима

аутентификация

Page 6: Social networks analisys - github API

API – пользователи

Поиск пользователей Получение информации о пользователе Получение following и followers Получение списка watched репозиториев

Page 7: Social networks analisys - github API

API – репозитории

Поиск репозиториев Получение информации о репозитории Получение списка репозиториев

пользователя Получение списка contributers Получение списка watchers Получение списка forks

Page 8: Social networks analisys - github API

API – другие возможности

Organization Issues Gist Commit Object Network

Page 9: Social networks analisys - github API

Disclaimer

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

Page 10: Social networks analisys - github API

Рейтинг пользователя по репозиториям

Для заданных репозиториев количество коммитов просматриваемые репозитории

http://gist.github.com/742252

Page 11: Social networks analisys - github API

Рейтинг пользователей по репозиториям – код

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;}

Page 12: Social networks analisys - github API

Рейтинг пользователей по репозиториям – результат

tjcrowder

kassens

arian

fabiomcosta

tripp

nzakas

kamicane

satyr

sstephenson

flesler

tobie

cpojer

brandonaaron

jenny

savetheclocktower

jzaefferer

kloots

rgrove

madrobby

lsmith

davglass

msweeney

sdesai

apm

jeresig

jashkenas

yui

0 500 1000 1500 2000 2500

Page 13: Social networks analisys - github API

Связанность репозиториев

Связанность по контрибьюторам Связанность по watcher'ам Скрипт ~100 строк кода: http://gist.github.com/742247

Page 14: Social networks analisys - github API

Связанность по контрибьюторам – результат

Связанность

0

0

0

0

0

0

0

2

0

0

1

0

0

0

0

Репозиторий 1 Репозиторий 2

jquery/jquery madrobby/scriptaculous

jquery/jquery jashkenas/coffee-script

jquery/jquery yui/yui3

jquery/jquery sstephenson/prototype

jquery/jquery mootools/mootools-core

madrobby/scriptaculous jashkenas/coffee-script

madrobby/scriptaculous yui/yui3

madrobby/scriptaculous sstephenson/prototype

madrobby/scriptaculous mootools/mootools-core

jashkenas/coffee-script yui/yui3

jashkenas/coffee-script sstephenson/prototype

jashkenas/coffee-script mootools/mootools-core

yui/yui3 sstephenson/prototype

yui/yui3 mootools/mootools-core

sstephenson/prototype mootools/mootools-core

Page 15: Social networks analisys - github API

Связанность по watcher'ам - результат

Связанность

375

275

384

377

309

72

118

547

127

56

96

70

131

122

167

Репозиторий 1 Репозиторий 2

jquery/jquery madrobby/scriptaculous

jquery/jquery jashkenas/coffee-script

jquery/jquery yui/yui3

jquery/jquery sstephenson/prototype

jquery/jquery mootools/mootools-core

madrobby/scriptaculous jashkenas/coffee-script

madrobby/scriptaculous yui/yui3

madrobby/scriptaculous sstephenson/prototype

madrobby/scriptaculous mootools/mootools-core

jashkenas/coffee-script yui/yui3

jashkenas/coffee-script sstephenson/prototype

jashkenas/coffee-script mootools/mootools-core

yui/yui3 sstephenson/prototype

yui/yui3 mootools/mootools-core

sstephenson/prototype mootools/mootools-core