
Загрузка видео в группу в Вконтакте при помощи Python
26.05.2023
6 мин
Инструкции

Святов Роман
Руководитель группы аналитики в MediaNation с техническим образованием (МИСИС) и экспертизой в сквозной аналитике, ML и автоматизации процессов. Соразработчик StreamMyData, внедрял решения для ЛитРес, ПИК, Grand Hotel и других крупных клиентов.
- Опыт работы:
- 4 года
Введение
В настоящее время социальные сети стали неотъемлемой частью нашей повседневной жизни. Одной из самых популярных платформ, где пользователи могут делиться своими видеоматериалами, является Вконтакте. Однако, иногда загрузка большого количества видео в группу Вконтакте может быть утомительной и затратной задачей. В данной статье мы рассмотрим, как при помощи языка программирования Python и API Вконтакте можно автоматизировать процесс загрузки видео в группу Вконтакте. Мы рассмотрим шаги, необходимые для настройки доступа к API Вконтакте, а затем разберем, как взаимодействовать с API при помощи Python для загрузки видеофайлов в конкретную группу. Ву узнаете, как создать приложение Вконтакте, получить необходимые ключи доступа и взаимодействовать с API для загрузки видео Автоматизация процесса загрузки видео в группу Вконтакте с помощью Python поможет вам сэкономить время и упростить эту рутинную задачу. Давайте начнем и узнаем, как сделать это!
1. Создание приложения Вконтакте
Для получения токена доступа для взаимодействия с API Вконтакте сперва необходимо создать приложение. Для этого необходимо следовать шагам ниже:
- Переходим по ссылке https://vk.com/apps?act=manage и нажимаем кнопку «Создать приложение»
- В появившемся окне указываем название приложения и выбираем пункт «Standalone-приложение»
- Переходим в настройки созданного приложения и копируем идентификатор из поля «ID приложения»
- Далее необходимо включить данное приложение
- В браузере переходим по ссылке https://oauth.vk.com/authorize?redirect_uri=https://oauth.vk.com/blank.html&client_id=IDПРИЛОЖЕНИЯ&scope=offline,groups,video&display=popup&response_type=token и заменяем IDПРИЛОЖЕНИЯ на скопированный ID из настроек приложения Пример готовой ссылки: https://oauth.vk.com/authorize?redirect_uri=https://oauth.vk.com/blank.html&client_id=51648444&scope=offline,groups,video&display=popup&response_type=token Параметр scope, который отвечает за предоставляемые доступы. Для корректной работы мы запрашиваем доступ к группам и видео пользователя. Параметр offline необходим для получения постоянного токена.
- После перехода по ссылке откроется OAuth screen где необходимо предоставить указанные выше доступы. Жмем продолжить
- Далее необходимо полностью скопировать полученный токен доступа из URL адреса страницы из параметра access_token (Знак = не считается)
В данной главе мы научились создавать приложение и получать токен доступа. Переходим к написанию кода на Python для загрузки видео в группу ВК.
2. Загрузка видео в группу Вконтакте при помощи Python
В данной статье реализация взаимодействия с API Вконтакте будет осуществляться в Jupyter Lab. Представленный в ходе статьи код может работать в любой среде разработки.
- Устанавливаем необходимые библиотеки
!pip install requests
!pip install tqdm- Импортируем необходимые библиотеки
import requests
import os
from tqdm.notebook import tqdmБиблиотека requests необходима для создания GET и POST запросов, библиотека os для работы с файлами системы и библиотека tqdm для отслеживания процесса загрузки видео в группу Вконтакте. 3. Объявляем необходимые переменные
# Указывается токен доступа полученный в п. 1.7 статьи
access_token = ''
# Указывается ID группы в которую необходимо загрузить видео
group_id =
# Указывается путь к папке с видео которые необходимо загрузить
videos_folder_path = 'my_videos'- Создаем функцию, предназначенную для получения адреса сервера, на который необходимо загрузить видео Для загрузки видео в группу Вконтакте для начала необходимо получить адрес сервера для загрузки видео. Делается это при помощи метода video.save. По ссылке к методу можно ознакомиться с полным перечнем возможных параметров и переписать код под свои цели. Код реализованной функции представлен ниже:
def get_video_upload_url(access_token: str, name: str, group_id: int) -> dict:
"""
Функция получает адрес сервера, на который необходимо загрузить видео, а также данные этого видео.
Параметры:
access_token: str
Токен доступа для взаимодействия с API ВК.
name: str
Название видео файла. Максимальное количество символов - 128
group_id: int
Идентификатор сообщества, в список видео которого будет сохранён видеофайл.
Возвращает:
Функция возвращает объект со следующими полями:
access_key string Ключ доступа.
description string Описание видео.
owner_id integer Идентификатор владельца видео.
title string Название видео.
upload_url string Адрес сервера, куда нужно загрузить видео.
video_id integer Идентификатор видео.
"""
params = {'{
'access_token': access_token,
'name': name,
'group_id': group_id,
'v': 5.131
}'}
get_video_upload_url = requests.get('https://api.vk.com/method/video.save', params=params)
return get_video_upload_url- Создаем функцию для загрузки всех видео из папки на компьютере в группу в Вконтакте Полный код функции представлен ниже:
def import_videos_from_folder(access_token: str, videos_folder_path: str, group_id: int) -> None:
"""
Функция предназначена для загрузки всех видео из конкретной папки в ВК.
Параметры:
access_token: str
Токен доступа для взаимодействия с API ВК.
videos_folder_path: str
Путь к папке с видео которые нужно загрузить в ВК.
group_id: int
Идентификатор сообщества, в список видео которого будет сохранён видеофайл.
Возвращает:
None. Функция выводит сообщение об успехе или возникшей ошибке.
"""
allowed_video_extensions =
if not os.path.exists(videos_folder_path):
print('Указанный путь к папке не найден.')
return None
video_files = os.listdir(videos_folder_path)
for video in tqdm(video_files):
# Делим имя файла на название и расширение
delimiter_idx = video.rfind('.')
video_name, file_extension = video, video
# Проверяем расширение видео
if file_extension not in allowed_video_extensions:
print(f'Использование {'{file_extension}'} расширения не поддерживается')
continue
try:
video_upload_url = get_video_upload_url(access_token, name=video_name, group_id=group_id).json()
except Exception as e:
print(f'Произошла ошибка! Ошибка: {'{e}'}')
continue
params = {'{'access_token': access_token, 'v': 5.131}'}
try:
upload_video_req = requests.post(video_upload_url, params=params, files={'video_file': open(f'{'{videos_folder_path}'}/{'{video}'}', 'rb')})
video_id = upload_video_req.json()
print(f'Видео было успешно загружено. ID видео: {'{video_id}'}')
except Exception as e:
print(f'При загрузке видео произошла ошибка: {'{e}'}')Разберем принцип работы функции. Функция принимает на вход 3 параметра:
- access_token: токен доступа для взаимодействия с API ВК.
- videos_folder_path: путь к папке с видео которые нужно загрузить в ВК
- group_id: идентификатор сообщества, в список видео которого будет сохранён видеофайл. В самом начале функция проверяет корректность указанного пути к папке с видео, после чего все файлы из папки помещаются в переменную video_files. Далее начинается основной цикл который итерационно обращается к функции get_video_upload_url для получения адреса для загрузки видео. В случае успеха, видео из папки загружается по полученному ранее адресу и попадает в группу в Вконтакте. Помимо этого, все файлы проверяются на корректность расширения, поскольку Вконтакте допускает только определенный формат видео. Ниже представлен пример того какие видео лежат в папке и как вызывается функции для загрузки видео в группу в Вконтакте:
После выполнения скрипта, видео появятся в группе Вконтакте.
ID группы можно взять из адресной строки в группе или же можно воспользоваться сайтом https://regvk.com/id/ Полная версия ноутбука с кодом доступна для скачивания ниже https://drive.google.com/file/d/1neEaVnuOGwv_c0pIfZ9xYC41y1YBMi74/view?usp=share_link
ВЫВОД
Таким образом, мы разобрали процесс загрузки видео файлов в группу в Вконтакте при помощи Python. В следующей статье мы разберем как загружать обычные файлы в группу в Вконтакте.


