PHPackages                             tmtm/habrahabr\_api - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [API Development](/categories/api)
4. /
5. tmtm/habrahabr\_api

AbandonedArchivedLibrary[API Development](/categories/api)

tmtm/habrahabr\_api
===================

Официальный клиент для работы с API сайтов habrahabr.ru и geektimes.ru

v0.1.5(9y ago)892439[2 issues](https://github.com/thematicmedia/habrahabr_api/issues)1MITPHPPHP &gt;=5.4.0

Since Oct 3Pushed 9y ago3 watchersCompare

[ Source](https://github.com/thematicmedia/habrahabr_api)[ Packagist](https://packagist.org/packages/tmtm/habrahabr_api)[ RSS](/packages/tmtm-habrahabr-api/feed)WikiDiscussions master Synced yesterday

READMEChangelog (2)Dependencies (1)Versions (15)Used By (1)

Habrahabr Api Client
====================

[](#habrahabr-api-client)

[![Build Status](https://camo.githubusercontent.com/fa0d28070d34a3dfad9554673050a490f72f9e2d6f4cd587e87e6c778891e0f0/68747470733a2f2f7472617669732d63692e6f72672f7468656d617469636d656469612f6861627261686162725f6170692e7376673f6272616e63683d6d6173746572)](https://travis-ci.org/thematicmedia/habrahabr_api)[![Latest Stable Version](https://camo.githubusercontent.com/6d8955dd6272d9969af0132bd6984a67ea1f99df4d5a1674392fe5c27c251ca0/68747470733a2f2f706f7365722e707567782e6f72672f746d746d2f6861627261686162725f6170692f76657273696f6e)](https://packagist.org/packages/tmtm/habrahabr_api)[![License](https://camo.githubusercontent.com/33ceb5889780fc43059c70377d4427bb7f9cdadb25e5b399cd2ba16dfb7437c7/68747470733a2f2f706f7365722e707567782e6f72672f746d746d2f6861627261686162725f6170692f6c6963656e7365)](https://packagist.org/packages/tmtm/habrahabr_api)[![Code Coverage](https://camo.githubusercontent.com/b16be4cdb718acad3c5c91105a30c3a7d5f54be4902ecbcb695db63548324880/68747470733a2f2f7363727574696e697a65722d63692e636f6d2f672f7468656d617469636d656469612f6861627261686162725f6170692f6261646765732f636f7665726167652e706e673f623d6d6173746572)](https://scrutinizer-ci.com/g/thematicmedia/habrahabr_api/?branch=master)[![Scrutinizer Code Quality](https://camo.githubusercontent.com/f28b627e6b053b30931f576a9f3c0f836c3cffa94af57a28b85825117dfe1edd/68747470733a2f2f7363727574696e697a65722d63692e636f6d2f672f7468656d617469636d656469612f6861627261686162725f6170692f6261646765732f7175616c6974792d73636f72652e706e673f623d6d6173746572)](https://scrutinizer-ci.com/g/thematicmedia/habrahabr_api/?branch=master)

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

Установка
---------

[](#установка)

### Через composer:

[](#через-composer)

```
$ composer require tmtm/habrahabr_api
```

или добавить

```
"tmtm/habrahabr_api": "0.1.*"
```

в секцию `require` файла composer.json.

Быстрый старт
-------------

[](#быстрый-старт)

Перед началом работы с API Хабрахабра потребуется пройти несколько несложных этапов.

1. **Получение идентификатора приложения**

    Воспользовавшись [этой формой](https://habrahabr.ru/feedback/) на Хабрахабре, нужно кратко описать суть нового приложения и цель, для которой ему нужен API.

    Через некоторое время будет получен идентификатор и секрет нового приложения. *Держите секрет в секрете и никому его не давайте!*
2. **Получение токена пользователя**

    Каждое приложение может работать с API Хабра только от имени установившего его пользователя.

    Для получения токена можно воспользоваться следующим простым способом. Перейдите по следующей ссылке

    ```
    https://habrahabr.ru/auth/o/login/?client_id=КЛИЕНТ&response_type=token&redirect_uri=САЙТ

    ```

    поставив адрес сайта приложения вместо `САЙТ` и полученный на первом шаге идентификатор вместо `КЛИЕНТ`.

    После нажатия кнопки "Разрешить", Хабр выполнит перенаправление на `САЙТ`, добавив в конец адреса строку `#token=...`, которая и будет содержать требуемый токен.
3. **Создание тестового приложения**

    Дошедший до этого шага ужее имеет всю мощь API Хабрахабра. Теперь самое время воспользоваться библиотеку. Для начала инициализируем адаптер:

    ```
    $adapter = new \Habrahabr\Api\HttpAdapter\CurlAdapter();
    $adapter->setEndpoint('API_ENDPOINT');
    $adapter->setToken('OAUTH_TOKEN');
    $adapter->setClient('OAUTH_CLIENT');
    ```

    ```
    $client = new Habrahabr\Api\Client($adapter);
    # Доступ к ресурсу может быть получен через метод состоящий из `get` и названия ресурса
    $User = $client->getUserResource()->getUser('me');
    ```

Описание API ресурсов и методы
------------------------------

[](#описание-api-ресурсов-и-методы)

- `CommentsResource` - Ресурс работы с комментариями

    - `getCommentsForPost($post_id)` - Возвращает список комментариев к посту по номеру
    - `postComment($post_id, $text, $comment_id = 0)` - Добавление комментария к посту по номеру
    - `votePlus($comment_id)` - Положительное голосование за комментарий
    - `voteMinus($comment_id)` - Отрицательное голосование за комментарий
- `CompanyResource` - Ресурс работы с компаниями

    - `getCompanyPosts($alias, $page = 1)` - Возвращает посты компании по алиасу компании
    - `getCompanyInfo($alias)` - Возвращает профиль компании по алиасу компании
    - `getList($page = 1)` - Возвращает список компаний
- `FeedResource` - Ресурс работы с "основной" лентой постов

    - `getFeedHabred($page = 1)` - Возвращает "Захабренные" посты из "основной" лентой постов
    - `getFeedUnhabred($page = 1)` - Возвращает "Отхабренные" посты из "основной" лентой постов
    - `getFeedNew($page = 1)` - Возвращает "Новые" посты из "основной" лентой постов
- `FlowResource` - Ресурс работы с потоками

    - `getFlows()` - Возвращает список потоков
    - `getFeedInteresting($alias, $page = 1)` - Возвращает "Интересные" посты из потока
    - `getFeedAll($alias, $page = 1)` - Возвращает "Все" посты посты из потока
    - `getFeedBest($alias, $page = 1)` - Возвращает "Лучшие" посты из потока
- `HubResource` - Ресурс работы с хабами

    - `getHubInfo($alias)` - Возвращает информацию о хабе по алиасу
    - `getFeedHabred($alias, $page = 1)` - Возвращает "Захабренные" посты связаные с хабом
    - `getFeedUnhabred($alias, $page = 1)` - Возвращает "Отхабренные" посты связаные с хабом
    - `getFeedNew($alias, $page = 1)` - Возвращает "Новые" посты связаные с хабом
    - `getHubList($page = 1)` - Возвращает список хабов
    - `subscribeHub($alias)` - Подписаться на хаб
    - `unsubscribeHub($alias)` - Отписаться от хаба
- `PostResource` - Ресурс работы с постами

    - `getPost($post_id)` - Возвращает пост по номеру
    - `getMeta($posts_id)` - Получить мета-информацию постов (не более 30 постов за раз)
    - `votePlus($post_id)` - Положительное голосование за пост (*Этот метод может быть предоставлен дополнительно, по запросу*)
    - `voteMinus($post_id)` - Отрицательное голосование за пост (*Этот метод может быть предоставлен дополнительно, по запросу*)
    - `voteNeutral($post_id)` - Нейтральное голосование за пост (*Этот метод может быть предоставлен дополнительно, по запросу*)
    - `addPostToFavorite($post_id)` - Добавить пост в избранное
    - `removePostFromFavorite($post_id)` - Удалить пост из избранного
    - `increaseCount($post_id)` - Увеличить счетчик просмотров поста
- `PollResource` - Ресурс работы с опросами

    - `getPoll($poll_id)` - Возвращает опрос по номеру
    - `vote($poll_id, $votes = [])` - Голосование в опросе за один или несколько варинатов ответа (*Этот метод может быть предоставлен дополнительно, по запросу*)
- `SearchResource` - Ресурс работы с поиском

    - `searchPosts($q, $page = 1)` - Поиск произвольного запроса по постам
    - `searchUsers($q, $page = 1)` - Поиск произвольного запроса по пользователям
    - `searchHubs($q)` - Поиск произвольного запроса по хабам
- `TrackerResource` - Ресурс работы с трекером

    - `push($title, $text)` - Отправить сообщение в трекер на вкладку "Приложения"
    - `getCounters()` - Возвращает счетчики новых сообщений из трекера, элементы не отмечаются как просмотренные
    - `getPostsFeed()` - Возвращает список постов из трекера,, элементы не отмечаются как просмотренные
    - `getSubscribersFeed()` - Возвращает список подписчиков из трекера, элементы не отмечаются как просмотренные
    - `getMentions()` - Возвращает список упоминаний из трекера, элементы не отмечаются как просмотренные
    - `getAppsFeed()` - Возвращает список сообщений приложений из трекера, элементы не отмечаются как просмотренные
- `UserResource` - Ресурс работы с пользователями

    - `getUserCurrent()` - Возвращает профиль пользователя API ключа
    - `getUser($login)` - Возвращает профиль пользователя по логину
    - `getUsersList()` - Возвращает список пользователей
    - `getUserComments($login, $page = 1)` - Возвращает комментарии пользователя по логину
    - `getUserPosts($login, $page = 1)` - Возвращает посты пользователя по логину
    - `getUserHubs($login)` - Возвращает хабы на которые подписан пользователь
    - `getUserCompanies($login)` - Возвращает компании в которых работает пользователь
    - `getUserFollowers($login, $page = 1)` - Возвращает список подписчиков пользователя по логину
    - `getUserFollowed($login, $page = 1)` - Возвращает список на кого подписан пользователь по логину
    - `voteKarmaPlus($login)` - Плюсовать карму пользователя по логину (*Этот метод может быть предоставлен дополнительно, по запросу*)
    - `voteKarmaMinus($login)` - Минусовать карму пользователя по логину (*Этот метод может быть предоставлен дополнительно, по запросу*)
    - `getUserFavoritesPost($login, $page = 1)` - Возвращает список "избранных" постов пользователя по логину
    - `getUserFavoritesComments($login, $page = 1)` - Возвращает список "избранных" комментариев пользователя по логину
- `SettingsResource` - Ресурс работы с настройками профиля

    - `acceptAgreement()` - Принять соглашение

Тестирование
------------

[](#тестирование)

Для начала установить `--dev` зависимости. После чего запустить:

```
$ vendor/bin/phpunit
```

Для проведения тестирования на рабочем API, необходимо скопировать файл `phpunit.xml.dist` в `phpunit.xml`И добавить в него секцию содержащую ключи для работы с API:

```

```

Лицензия
--------

[](#лицензия)

Библиотека доступна на условиях лицензии MIT:

Альтернативные адаптеры:
------------------------

[](#альтернативные-адаптеры)

- [habrahabr-guzzle](https://github.com/dotzero/habrahabr-guzzle-php)

Реализации на других языках:
----------------------------

[](#реализации-на-других-языках)

- Python: [habrahabr-api-python](https://github.com/dotzero/habrahabr-api-python)
- Python: [habrahabr-python](https://github.com/kafeman/habrahabr-python) *deprecated*

###  Health Score

33

—

LowBetter than 72% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity26

Limited adoption so far

Community20

Small or concentrated contributor base

Maturity56

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 64.9% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~88 days

Recently: every ~46 days

Total

14

Last Release

3508d ago

### Community

Maintainers

![](https://avatars.githubusercontent.com/u/265634?v=4)[Виктор Диктор](/maintainers/Rpsl)[@Rpsl](https://github.com/Rpsl)

---

Top Contributors

[![dotzero](https://avatars.githubusercontent.com/u/265633?v=4)](https://github.com/dotzero "dotzero (74 commits)")[![kafeman](https://avatars.githubusercontent.com/u/1271176?v=4)](https://github.com/kafeman "kafeman (19 commits)")[![Rpsl](https://avatars.githubusercontent.com/u/265634?v=4)](https://github.com/Rpsl "Rpsl (13 commits)")[![chuprik](https://avatars.githubusercontent.com/u/802946?v=4)](https://github.com/chuprik "chuprik (6 commits)")[![buxley](https://avatars.githubusercontent.com/u/166241?v=4)](https://github.com/buxley "buxley (2 commits)")

---

Tags

apihabrahabrphpapihabrhabrahabrtmtmthematic mediageektimes

###  Code Quality

TestsPHPUnit

### Embed Badge

![Health badge](/badges/tmtm-habrahabr-api/health.svg)

```
[![Health](https://phpackages.com/badges/tmtm-habrahabr-api/health.svg)](https://phpackages.com/packages/tmtm-habrahabr-api)
```

###  Alternatives

[m165437/laravel-blueprint-docs

API Blueprint Renderer for Laravel

22779.5k](/packages/m165437-laravel-blueprint-docs)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
