-
-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathvk_post.py
64 lines (51 loc) · 2.93 KB
/
vk_post.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
import logging
import os
import requests
import vk_api
from dotenv import load_dotenv
from utils.video import Video
logging.basicConfig(format="%(asctime)s - %(levelname)s - %(message)s", level=logging.INFO)
load_dotenv()
VK_ACCESS_TOKEN: str | None = os.getenv("VK_ACCESS_TOKEN")
if VK_ACCESS_TOKEN is None:
raise ValueError("Не задан токен VK_ACCESS_TOKEN в файле .env")
VK_GROUP_ID: str | int | None = os.getenv("VK_GROUP_ID")
if VK_GROUP_ID is None:
raise ValueError("Не задан ID группы VK_GROUP_ID в файле .env")
vk_session = vk_api.VkApi(token=VK_ACCESS_TOKEN)
vk = vk_session.get_api()
def post_to_group(videos: list[Video], group_id: str | int = VK_GROUP_ID) -> None:
"""
Публикует сообщение на стене группы ВКонтакте.
Аргументы:
- `videos` (List[Video]): список объектов Video, которые нужно опубликовать на стене группы.
- `group_id` (str | int): идентификатор группы, на стене которой будет опубликовано сообщение.
По умолчанию используется значение `VK_GROUP_ID` из файла `.env`.
Результат:
`None`.
Если список видео пустой, функция ничего не делает.
"""
if not videos:
return
for video in videos:
message = f"Новое видео на канале {video.channel_name}:"
message = f"{message}\n\n{video.description}" if video.description else message
uploaded_video = vk.video.save(wallpost=1, description=message, link=video.link, group_id=group_id)
requests.post(uploaded_video["upload_url"])
logging.info("Сообщение опубликовано на стене группы")
if __name__ == "__main__":
new_video = Video(
channel_id="UCrV_cFYbUwpjSOPVJOjTufg",
channel_name="Экстенсиональный",
description=(
"Заинтересованы найти друзей, которые будут работать над "
"достижением общих целей и миссии? Присоединяйтесь к нам и вместе мы определим наши приоритеты и способы "
"реализации. Мы будем использовать наши ресурсы и силы для достижения конкретных результатов. "
"Присоединяйтесь к нашему сообществу, чтобы сделать наш мир лучше!"
"\n\nПрисоединяйтесь в Discord: https://discord.gg/sYEGrjz6Fp"
),
link="https://www.youtube.com/watch?v=2N20P3Kfgso",
published="2023-03-27 11:15:44",
title="",
)
post_to_group([new_video])