# Репост материалов из RSS ленты в [Pleroma](https://pleroma.social/) ## Использование ### Подготовка Весь процесс описан в официальной [документации к mastodon](https://docs.joinmastodon.org/client/authorized/#flow). Здесь приводится копия тех же шагов, но с указанными минимальными правами для публикации новых 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](https://virtualenv.pypa.io/en/latest/). * Устанавливаем 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 ```