Идея была подсмотрена у пакета Metrics. Его довольно часто можно встретить в Readme файлах профиля, в том числе и у 1Сников - если вы видели когда нибудь 3D модель графика активности, то это оно
Там есть много разных метрик и блоков, одним из которых является блок с последними статьями из dev.to. Мне показалось интересным сделать что-нибудь подобное для статей Инфостарт
Как добавить себе?
Данный проект называется infometrics-articles. Это Action для Github Actions, который вы можете просто добавить в workflow репозитория вашего профиля:
- Если у вас еще нет Readme профиля - его нужно создать. Сделать это можно в репозитории профиля https://github.com/[Ваше имя пользователя]/[Ваше имя пользователя]
- В созданный Readme необходимо добавить блок следующего вида
<div id="infostart_posts"> </div>
Внутри этого блока ничего не должно быть - он будет очищаться при обновлении списка статей
-
Далее необходимо создать новый Action - делается это все в том же репозитории профиля. Необходимо перейти на вкладку Actions и нажать New workflow
-
Нажать set up a workflow yourself
-
В открывшемся редакторе вставить следующий код:
name: Infostat on: schedule: [{cron: "0 0 * * *"}] # Расписание выполнения. В данном примере - каждый день в 0.00 workflow_dispatch: jobs: Update: runs-on: ubuntu-latest permissions: contents: write steps: - uses: bayselonarrend/infometrics-articles@1.1 with: profile-id: '1793672' # ID профиля Infostart count: '3' # Количество выводимых статей. Необязательно, по умолчанию - 3, Максимум - 10 # readme-file: './README.md' # Путь к Readme файлу. Необязательно, по умолчанию - ./README.md (Регистр важен!) # template: './tm.html' # Путь к шаблону. См. далее. Необязательно, по умолчанию - стандартный шаблон
Прежде чем сохранять наш файл, рассмотрим и настроим параметры, которые он предлагает. Параметры идут после ключевого слова with:
- profile-id - id профиля Инфостарт
- count - количество выводимых постов. Максимум доступно 10 постов, по умолчанию установлено 3
- readme-file - если ваш Readme файл имеет путь, отличный от ./README.md (регистр важен), этот параметр необходимо заполнить актуальным путем
- template - пользовательский макет вывода статьи. Об этом мы поговорим далее
В самом начале вы также можете найти schedule - это расписание выполнения нашего workflow. В данном случае это 0.00 каждого дня. Вы можете поставить свое расписание, если хотите обновлять данные чаще или реже
Теперь данный yml-файл можно сохранить и worflow начнет работать
Вывод статей и пользовательские макеты
Вернемся к параметру template. По умолчанию, если данный параметр не указан, статьи в Readme файл выводятся следующим образом:
Используется стандартный макет подобного вида:
> <img src="%1" width="96" align="left">
> <h4 style="color: white;"><a href="%3">%2</a></h4>
> <small>%5</small>
> <br clear="left">
>
> | :star: %4 | :calendar: %6 | :speech_balloon: %7 | :eyes: %8 |
> |-|-|-|-|
Однако, если вам не нравится такое решение, вы легко можете создать своей собственный макет. Для этого необходимо создать новый текстовый файл любого расширения в репозитории вашего профиля и указать путь к нему в параметре template
template: './tm.html'
Внутри самого шаблона вы можете создавать необходимую структуру (MD/HTML) и использовать в ней следующие параметры
- %1 - URL изображения
- %2 - Заголовок статьи
- %3 - Ссылка на статью
- %4 - Число звезд
- %5 - Описание статьи
- %6 - Дата статьи
- %7 - Комментарии
- %8 - Просмотры
Важно! Вам не обязательно использовать все параметры - можно только необходимые. Сам макет создается на одну статью и единственное его ограничение - нельзя использовать <div>
Немного про Action
Немного про внутренности данного экшена
Основной обработчик infometrics-articles - os скрипт. Он запускается после установки OneScript и, при помощи http-запроса, функций работы со строками и такой то матери ТекстовогоДокумента, парсит html-страницу профиля Инфостарт, после чего записывает полученные данные в Readme на основе макета
Конечно, парсить страницу не очень надежно, но API для этого нет. Сам скрипт был проверен на ~20 профилей из топа Инфостарта - все отрабатывало правильно. Но ошибки все равно возможны и будет очень хорошо, если вы напишите о них в Issue при возникновении
Помимо прочего, использование os скрипта как основного обработчика подразумевает, что вы без проблем можете сами доработать Action под себя (или создать что-нибудь на его основе) - язык-то 1С. Достаточно лишь сделать форк
Ну, а пока это все
- Ссылка на репозиторий - Bayselonarrend/infometrics-articles
- Узнать больше про работу с Github Actions - Статья на инфостарт
- Отдельное спасибо Oxotka за тест и первую обратную связь
Спасибо за внимание!
Мой GitHub: https://gitub.com/Bayselonarrend Лицензия MIT: https://mit-license.org