Як дізнатися хто загавкав Perl дистрибутив на metacpan

На metacpan можна лайкати дистрбутіви. Ось, наприклад, у мого дистрибутива Test::Whitespaces є 2 лайки:

Мені стало цікаво дізнатися, хто поставив ці лайки. На сайті metacpan такої інформації немає (update: після написання посту ця інформація з'явилася, подробиці в кінці посту), але є API через яке, напевно, можна це зробити.

Перший підхід до рішення

Відразу завдання вирішити не вдалося. У API є документація, є якісь модулі, є чудовий сайт explorer.metacpan.org, але як усе це використовувати зовсім не зрозуміло.

Доповідь виявилася дуже цікавою (і після неї мені вдалося вирішити моє завдання), я записав тези з цієї доповіді.

Конспект доповіді

Доповідь Олафа Алдерса (Ab)за допомогою MetaCPAN API for Fun and Profit.

metacpan api використовує elasticsearch

  • Elasticsearch стали використовувати досить випадково, але виявилося, що це хороший вибір
  • можна використовувати metacpan api і без знання еластичногодослідження
  • elasticsearch є сутності indexes & types
  • у термінах звичних баз даних - index = database; type = table
  • скріншотик як пов'язані різні types:
  • perl

    PS У доповіді згадувався модуль MetaCPAN::API, але він вже depreated і рекомендується використовувати замість нього MetaCPAN::Client.

    Другий підхід до рішення

    Ось висновок скрипту:

    Скрипт спочатку запитує Metacpan API "а покажи мені id всіх користувачів хто залайкл дистрибутив" за допомогою відправки запиту на ручку "/v0/favorite". Отримуємо відповідь. У відповіді купа шуму, що дає еластичнийдослідження, але є дані про ID користувачів: "user": "faLMeoWDRjSethSZIGNB_A" і "user": "6wlW4wIgQW6QK_-YU0uxFw".

    А далі скрипт для кожного отриманого id користувача з'ясовує, що це за користувач. Запит на ручку "/v0/author" та відповідь.

    Чомусь не у всіх id користувачів відповідає запис в type author, якщо скрипт не знаходить даних, то видає ". ".

    Update 2014-05-14

    Це дуже смішно, але через кілька днів після написання цієї посади на сайті metacpan.org з'явилася можливість переглядати хто загавкав твій дистрибутив.

    Ось інформація про лайки мого модуля Test::Whitespaces: