feat: Replace README.rst with README.md
This commit is contained in:
		
							
								
								
									
										88
									
								
								README.md
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										88
									
								
								README.md
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,88 @@
 | 
			
		||||
# vk-mastodon-bridge
 | 
			
		||||
 | 
			
		||||
Бридж для кросспостинга из [VK](https://vk.com) в [Mastodon](https://joinmastodon.org/). Это приложение будет дублировать посты из паблика или публичной группы VK в аккаунт Mastodon.
 | 
			
		||||
 | 
			
		||||
Пример аккаунта бота: [@jrokku@mas.to](https://mas.to/@jrokku)
 | 
			
		||||
 | 
			
		||||
## Как это работает
 | 
			
		||||
 | 
			
		||||
Скрипт согласно заданному промежутку времени (см. ниже `POLLING_TIME`) ходит в API VK и забирает оттуда самый свежий пост, запоминает его ID в файл. Затем ходит в API Mastodon и создаёт новый пост, который содержит оригинальный текст поста, ссылку на оригинальный пост, ссылки на каждое вложение из оригинального поста.
 | 
			
		||||
 | 
			
		||||
## Настройки и запуск
 | 
			
		||||
 | 
			
		||||
### API Mastodon
 | 
			
		||||
 | 
			
		||||
Для получения токена API Mastodon достаточно добавить приложение в своём профиле (Preferences -> Development). Из разрешений достаточно `write` для создания постов, ничего другого бридж делать не умеет.
 | 
			
		||||
 | 
			
		||||
### API VK
 | 
			
		||||
 | 
			
		||||
Нужно добавить приложение на https://dev.vk.com. Будет получен `APP_ID`.
 | 
			
		||||
 | 
			
		||||
Для получения бессрочного токена перейти по ссылке следующего вида:
 | 
			
		||||
 | 
			
		||||
    https://oauth.vk.com/authorize?client_id=12345678&display=page&redirect_uri=https://oauth.vk.com/blank.html&scope=offline&response_type=token&v=5.131
 | 
			
		||||
 | 
			
		||||
Здесь параметр `client_id` равняется `APP_ID` приложения, `scope=offline` задаёт нулевой (бесконечный) срок жизни токена.
 | 
			
		||||
 | 
			
		||||
При переходе по ссылке произойдёт редирект на страницу с подтверждением выдачи доступа приложению и далее редирект на страницу с предупреждением. Нас интересует значение query-параметра `access_token` в адресной строке.
 | 
			
		||||
 | 
			
		||||
Это всё также описано в [документации к API](https://dev.vk.com/api/access-token/implicit-flow-user).
 | 
			
		||||
 | 
			
		||||
### Переменные окружения
 | 
			
		||||
 | 
			
		||||
Нужно задать все переменные окружения. Удобный способ — в файле `.env` и экспортировать в шэлл.
 | 
			
		||||
 | 
			
		||||
| Переменная окружения          | Пример                            | Описание                                                      |
 | 
			
		||||
| ----------------------------- | --------------------------------- | ------------------------------------------------------------- |
 | 
			
		||||
| `MASTODON_API_URL`            | https://mastodon.social/api/v1    | URL адрес API Mastodon.                                       |
 | 
			
		||||
| `MASTODON_API_ACCESS_TOKEN`   |                                   | Ключ API Mastodon.                                            |
 | 
			
		||||
| `VK_API_URL`                  | https://api.vk.com/method         | URL API VK.                                                   |
 | 
			
		||||
| `VK_API_VERSION`              | 5.131                             | Версия VK API.                                                |
 | 
			
		||||
| `VK_API_ACCESS_TOKEN`         |                                   | Ключ API VK.                                                  |
 | 
			
		||||
| `VK_GROUP_DOMAIN`             | apiclub                           | slug адрес группы/паблика VK.                                 |
 | 
			
		||||
| `POLLING_TIME`                | 300                               | Количество секунд между получением постов. Умолчание: 300.    |
 | 
			
		||||
 | 
			
		||||
### Запуск без Docker
 | 
			
		||||
 | 
			
		||||
Переименуйте `.en.example` в `.env` и отредактируйте значения в нём.
 | 
			
		||||
 | 
			
		||||
```
 | 
			
		||||
pip -r requirements.txt
 | 
			
		||||
source .env
 | 
			
		||||
python vk-mastodon-bridge.py
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
### Docker
 | 
			
		||||
 | 
			
		||||
Сборка образа:
 | 
			
		||||
 | 
			
		||||
```
 | 
			
		||||
sudo docker build -t vk-mastodon-bridge:0.2.0 .
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
Запуск контейнера:
 | 
			
		||||
 | 
			
		||||
```
 | 
			
		||||
sudo docker run --detach \
 | 
			
		||||
    --name vk-mastodon-bridge \
 | 
			
		||||
    --volume /opt/vk-mastodon-bridge/data:/opt/vk-mastodon-bridge/data \
 | 
			
		||||
    vk-mastodon-bridge:0.2.0
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
## TODO
 | 
			
		||||
 | 
			
		||||
- Не учитывается длина поста. Если исходный пост не будет укладываться в лимит символов на инстансе Mastodon'а, то неизвестно что произойдёт. Решение: надо обрезать текст поста в функции `build_post()`.
 | 
			
		||||
- Никак не обрабатываются вложения типов отличных от фото (`photo`) и фотоальбома (`album`).
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
## История изменений
 | 
			
		||||
 | 
			
		||||
### 0.2.0
 | 
			
		||||
 | 
			
		||||
- Реализована загрузка вложений в Mastodon (до 4-х штук). Только изображения.
 | 
			
		||||
- Обновлён путь до приложения в Dockerfile.
 | 
			
		||||
- Изменено место хранения файла `last_post_id`, теперь он в директории `data/`, откуда его можно удобно монтировать как Docker volume.
 | 
			
		||||
 | 
			
		||||
### 0.1.0
 | 
			
		||||
 | 
			
		||||
Initial release.
 | 
			
		||||
							
								
								
									
										98
									
								
								README.rst
									
									
									
									
									
								
							
							
						
						
									
										98
									
								
								README.rst
									
									
									
									
									
								
							@@ -1,98 +0,0 @@
 | 
			
		||||
==================
 | 
			
		||||
vk-mastodon-bridge
 | 
			
		||||
==================
 | 
			
		||||
 | 
			
		||||
Бридж для кросспостинга из `VK`_ в `Mastodon`_. Это приложение будет дублировать посты из паблика или публичной группы VK в аккаунт Mastodon.
 | 
			
		||||
 | 
			
		||||
Пример аккаунта бота: `@jrokku@mas.to`_
 | 
			
		||||
 | 
			
		||||
.. _VK: https://vk.com/
 | 
			
		||||
.. _Mastodon: https://joinmastodon.org/
 | 
			
		||||
.. _jrokku@mas.to: https://mas.to/@jrokku
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
Как это работает
 | 
			
		||||
================
 | 
			
		||||
 | 
			
		||||
Скрипт согласно заданному промежутку времени (см. ниже ``POLLING_TIME``) ходит в API VK и забирает оттуда самый свежий пост, запоминает его ID в файл. Затем ходит в API Mastodon и создаёт новый пост, который содержит оригинальный текст поста, ссылку на оригинальный пост, ссылки на каждое вложение из оригинального поста.
 | 
			
		||||
 | 
			
		||||
TODO
 | 
			
		||||
----
 | 
			
		||||
 | 
			
		||||
- Не учитывается длина поста. Если исходный пост не будет укладываться в лимит символов на инстансе Mastodon'а, то неизвестно что произойдёт. Решение: надо обрезать текст поста в функции ``build_post()``.
 | 
			
		||||
- Никак не обрабатываются вложения типов отличных от фото (`photo`) и фотоальбома (`album`).
 | 
			
		||||
 | 
			
		||||
Настройки и запуск
 | 
			
		||||
==================
 | 
			
		||||
 | 
			
		||||
API Mastodon
 | 
			
		||||
------------
 | 
			
		||||
 | 
			
		||||
Для получения токена API Mastodon достаточно добавить приложение в своём профиле (Preferences -> Development). Из разрешений достаточно `write` для создания постов, ничего другого бридж делать не умеет.
 | 
			
		||||
 | 
			
		||||
API VK
 | 
			
		||||
------
 | 
			
		||||
 | 
			
		||||
Нужно добавить приложение на https://dev.vk.com. Будет получен ``APP_ID``.
 | 
			
		||||
 | 
			
		||||
Для получения бессрочного токена перейти по ссылке следующего вида::
 | 
			
		||||
 | 
			
		||||
    https://oauth.vk.com/authorize?client_id=12345678&display=page&redirect_uri=https://oauth.vk.com/blank.html&scope=offline&response_type=token&v=5.131
 | 
			
		||||
 | 
			
		||||
Здесь параметр ``client_id`` равняется ``APP_ID`` приложения, ``scope=offline`` задаёт нулевой (бесконечный) срок жизни токена.
 | 
			
		||||
 | 
			
		||||
При переходе по ссылке произойдёт редирект на страницу с подтверждением выдачи доступа приложению и далее редирект на страницу с предупреждением. Нас интересует значение query-параметра ``access_token`` в адресной строке.
 | 
			
		||||
 | 
			
		||||
Это всё также описано в документации к API: https://dev.vk.com/api/access-token/implicit-flow-user
 | 
			
		||||
 | 
			
		||||
Переменные окружения
 | 
			
		||||
--------------------
 | 
			
		||||
 | 
			
		||||
Нужно задать все переменные окружения. Удобный способ — в файле ``.env`` и экспортировать в шэлл.
 | 
			
		||||
 | 
			
		||||
========================= =============================== =========================================================
 | 
			
		||||
Переменная окружения      Пример                          Описание
 | 
			
		||||
========================= =============================== =========================================================
 | 
			
		||||
MASTODON_API_URL          https://mastodon.social/api/v1  URL адрес API Mastodon.
 | 
			
		||||
MASTODON_API_ACCESS_TOKEN                                 Ключ API Mastodon.
 | 
			
		||||
VK_API_URL                https://api.vk.com/method       URL API VK.
 | 
			
		||||
VK_API_VERSION            5.131                           Версия VK API.
 | 
			
		||||
VK_API_ACCESS_TOKEN                                       Ключ API VK.
 | 
			
		||||
VK_GROUP_DOMAIN           apiclub                         slug адрес группы/паблика VK.
 | 
			
		||||
POLLING_TIME              300                             Количество секунд между получением постов. Умолчание: 300.
 | 
			
		||||
========================= =============================== ==========================================================
 | 
			
		||||
 | 
			
		||||
Запуск
 | 
			
		||||
------
 | 
			
		||||
 | 
			
		||||
::
 | 
			
		||||
 | 
			
		||||
    pip -r requirements.txt
 | 
			
		||||
    source .env
 | 
			
		||||
    python vk-mastodon-bridge.py
 | 
			
		||||
 | 
			
		||||
Docker
 | 
			
		||||
------
 | 
			
		||||
 | 
			
		||||
::
 | 
			
		||||
 | 
			
		||||
    sudo docker build -t vk-mastodon-bridge:0.2.0 .
 | 
			
		||||
    sudo docker run --detach \
 | 
			
		||||
        --name vk-mastodon-bridge \
 | 
			
		||||
        --volume /opt/vk-mastodon-bridge/data:/opt/vk-mastodon-bridge/data \
 | 
			
		||||
        vk-mastodon-bridge:0.2.0
 | 
			
		||||
 | 
			
		||||
История изменений
 | 
			
		||||
=================
 | 
			
		||||
 | 
			
		||||
0.2.0
 | 
			
		||||
-----
 | 
			
		||||
 | 
			
		||||
- Реализована загрузка вложений в Mastodon (до 4-х штук). Только изображения.
 | 
			
		||||
- Обновлён путь до приложения в Dockerfile
 | 
			
		||||
- Изменено место хранения файла last_post_id, теперь он в директории data, откуда его можно удобно монтировать как Docker volume
 | 
			
		||||
 | 
			
		||||
0.1.0
 | 
			
		||||
-----
 | 
			
		||||
 | 
			
		||||
Initial release.
 | 
			
		||||
		Reference in New Issue
	
	Block a user