Ограничение GitHub API

У меня есть сайт iOS Cookies где я делю библиотеки (в настоящее время 190), написанные в Swift, на категории. Когда отображается категория, я показываю список ее библиотек с количеством звездочек GitHub и описанием.

Поскольку это количество звезд не обязательно должно быть точным, я решил получить его для каждой библиотеки одновременно с работой CRON (один раз в день). Проблема в том, что я достигаю предела API по какой-то причине:

Вы достигли предела часов GitHub! Фактический лимит: 5000

Что довольно странно, поскольку существует менее 200 библиотек, и для каждой она вызывается только один раз, например так:

// GitHub API
$this->github = new GitHub($page);
// list of libraries stored in .yaml file
$libraries = $this->config->get('plugins.swift-version.libraries');
$arrlength = count($libraries);

$array = Array();

for($x = 0; $x < $arrlength; $x++) {
$link = $libraries[$x]['link'];
$path = parse_url($link, PHP_URL_PATH);
$segments = explode('/', $path);

$author = $segments[1];
$repo = $segments[2];

// actual API calling to get number of stars for library
$libraries[$x]['stargazers_count'] = $this->github->client->api('repo')->show($author, $repo)['stargazers_count'];
}

Я что-то пропустил?

0

Решение

Чтобы избавить вас от необходимости писать полноценный клиент API, а также потому, что этот клиент находится в моем списке дел, поэтому мне все равно нужно попробовать API github, вот быстрый и грязный пример, в котором используется ровно один запрос API:

$url = "https://api.github.com/repos/realm/realm-cocoa";

$token = /* https://github.com/settings/tokens */;

$headers = [
'Authorization: token ' . $token,
];

$ch = curl_init();

curl_setopt_array($ch, [
CURLOPT_URL => $url,
CURLOPT_HEADER => false,
CURLOPT_HTTPHEADER => $headers,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_USERAGENT => 'Mozilla/5.0 (Windows NT 5.1; rv:31.0) Gecko/20100101 Firefox/31.0',
]);

$foo = json_decode(curl_exec($ch), true);

curl_close($ch);

var_dump($foo['description'], $foo['stargazers_count']);

Выход:

string(64) "Realm is a mobile database: a replacement for Core Data & SQLite"int(5888)
1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]