Автопостинг в блоге

Следующим шагом, который хотелось бы в блоге иметь - это автоматическое оповещение о новых постах в телеграме, VK и Facebook.

При этом я сознательно не стал искать готового решения, поскольку решил сделать во-первых именно так, как я хочу, а во-вторых потренироваться в программировании на любимом Go.

Как видится процесс

  1. Встраиваемся в процесс деплоя, описанный тут в блоге. То есть необходимо добавить ещё один хэндлер в плейбуке, который будет обрабатывать файл index.xml - сгенерированный, в процессе деплоя блога, rss, неким приложением.
  2. Необходим некий процесс инита, чтобы напустить аппликуху на файлик, которая его перемолотит и просто сложит в некое хранилище, никуда ничего не отсылая, для создания некоего текущего положения от которого начнется автопост. Дальнейшие запуски будут все новые посты отсылать в соцсеточки и телеграмчики.
  3. В телеграм отсылать заголовок поста, краткое описание и ссылку
  4. В VK и Фейсбук отсылать только ссылку. Там этого более чем достаточно, все остальные сведения они соберут по ссылке сами.
  5. Разработка на Go. Публичный репозиторий на гитхабе. Конфиг в yaml, но при этом иметь возможность и через параметры командной строки тоже передавать команды и параметры через переменные среды.
  6. Если получится, задействовать систему экшенов гитхаба для автоматической сборки релизов под Линукс (под винду не вижу смысла заморачиваться)

Что реализовано на текущий момент

Сделан репозиторий на гихаб пока без Redme, но в дальнейшем, как руки дойдут, опишу. Сейчас процесс разработки в полном разгаре, не до того.

Пишу на go 1.17 с применением библиотек:

Стоит ли делать постинг для Фейсбука, в свете текущей ситуации, пока не решил. Посмотрим как будет развиваться вот это вот всё.

В параметры командной строки вынес:

-f, --fileparse обязательный параметр, для указания файла rss

-i, --initdb необязательный параметр для запуска процесса инициализации первоначального состояния

-c, --configpath необязательный параметр для указания, где искать конфиг приложения. Если не указан, то ищется в /etc/ssender/config.yml

Файл конфига должен выглядеть примерно так:

dbpath: "/var/cache/ssender/ssender.db"
telegram:
  send: true
  senddebug: false
  token: "<TOKEN>"
  chatid: -1001111111111111122
vk:
  send: true
  token: "<TOKEN>"
  ownerid: 7777777
facebook:
  send: false
  token: ""

Где общие параметры:

Параметры чисто для телеграм

Параметры чисто для VK

Первый запуск имеет смысл сделать с параметром -i, дальнейшие без него.

Сборка бинарника проста:

go build -o ssender main.go

В процессе попросит установить библиотеки в виде:

go get github.com....

Нужно выполнить эти строки для установки требуемых библиотек.

Встраиваем в деплой сайта

Плейбук изменяется следующим образом:

---
  - name: Clone a private repository for site structure
    hosts: local
    become: no

    tasks:

    - name: Clone site
      git:
        repo: git@github.com:NetMoose/netmoose.ru.git
        version: master
        dest: /home/netmoose/netmoose.ru
        accept_hostkey: yes
      
    notify: 
      - Execute HUGO
      - Execute ssender

    handlers:
    - name: Execute HUGO
      shell: /usr/local/bin/hugo -d /var/www/html
      args:
        chdir: /home/netmoose/netmoose.ru
       
    - name: Execute ssender
      shell: /usr/local/bin/ssender -f /var/www/html/index.xml

То есть добавился ещё один хендлер, который отработает, если будут изменения в репозитории сайта.



Автопостинг в блоге Автор: NetMoose Когда: 27.02.2022

Categories: Blog Tags: blog