Repost from RSS to Pleroma
Go to file
Aleksey Ryndin 97e65fb714 fix(doc): my pleroma instance is turned off 2022-11-08 06:07:52 +00:00
src fix(rss): URL as key (duplicates appear from opennet) 2022-08-11 10:55:54 +03:00
tests feat(test): add tests for https://www.opennet.ru/opennews/opennews_full.rss 2022-08-10 18:48:37 +03:00
.gitignore fix(git): append .gitignore 2022-08-10 15:44:25 +03:00
LICENSE first commit 2022-08-02 15:36:30 +03:00
README.md fix(doc): my pleroma instance is turned off 2022-11-08 06:07:52 +00:00
setup.py fix(setup): version 0.1.1 2022-08-11 10:56:43 +03:00

README.md

Репост материалов из RSS ленты в Pleroma

Использование

Подготовка

Весь процесс описан в официальной документации к mastodon. Здесь приводится копия тех же шагов, но с указанными минимальными правами для публикации новых media-файлов и статусов.

Регистрация приложения

Производится один раз для сервера Pleroma.

$ curl -X POST \
> -F 'client_name=rss2pleroma' \
> -F 'redirect_uris=urn:ietf:wg:oauth:2.0:oob' \
> -F 'scopes=write:statuses write:media' \
> -F 'website=https://tildegit.org/continue/rss2pleroma' \
> https://pleroma.example/api/v1/apps > application.json

Проверка зарегистрированного приложения:

$ cat application.json

Из выведенного в консоль в дальнейшем будет использоваться значение client_id как CLIENT_ID и значение client_secret как CLIENT_SECRET.

Получение токена доступа для бота

Производится один раз для каждого пользователя Pleroma.

  • создаем нового Pleroma пользователя и входим браузером этим аккаунтом
  • открываем в браузере следующую ссылку https://pleroma.example/oauth/authorize?client_id=CLIENT_ID&scope=write:statuses+write:media&redirect_uri=urn:ietf:wg:oauth:2.0:oob&response_type=code
  • в результате получаем значение Token code, которое в дальнейшем будет использовано как TOKEN_CODE

Получаем сам токен доступа для бота:

$ curl -X POST \
> -F 'client_id=CLIENT_ID' \
> -F 'client_secret=CLIENT_SECRET' \
> -F 'redirect_uri=urn:ietf:wg:oauth:2.0:oob' \
> -F 'grant_type=authorization_code' \
> -F 'code=TOKEN_CODE' \
> -F 'scope=write:statuses write:media' \
> https://pleroma.example/oauth/token > my_pleroma_account.json

Проверяем полученные данные:

$ cat my_pleroma_account.json

Из выведенного в консоль в дальнейшем будет использоваться значение access_token как TOKEN.

Инсталляция кода бота

Производится на той машине, где будет исполнятся бот. Далее приводится вариант инсталляции с использованием virtualenv.

  • Устанавливаем virtualenv
$ python3 -m pip install --user virtualenv
  • Создаем новое виртуальное python-окружение rss2pleroma:
$ python3 -m virtualenv rss2pleroma
  • Устанавливаем пакет rss2pleroma в созданном окружении:
$ rss2pleroma/bin/pip install --extra-index-url https://tildegit.org/api/packages/continue/pypi/simple rss2pleroma
  • Проверяем работоспособность установленного пакета:
rss2pleroma/bin/python rss2pleroma --help

Обновление установленного бота

rss2pleroma/bin/pip install --upgrade --extra-index-url https://tildegit.org/api/packages/continue/pypi/simple rss2pleroma

Запуск бота

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

rss2pleroma/bin/python rss2pleroma --db opennet --rss_url https://www.opennet.ru/opennews/opennews_full.rss --server_url https://pleroma.example --token TOKEN --publish

Запуск тестов

Перед первым запуском тестов необходимо установить дополнительные зависимости:

$ pip install pytest requests_mock

Затем тесты можно запускать с использованием pytest:

$ pytest