Трансформируем ваши данные в прибыль

Пн — Пт: с 10:00 до 19:00

ГлавнаяБлогЗагрузка видео в группу в Вконтакте при помощи Python

Загрузка видео в группу в Вконтакте при помощи Python

5 минут(ы)

Введение

В настоящее время социальные сети стали неотъемлемой частью нашей повседневной жизни. Одной из самых популярных платформ, где пользователи могут делиться своими видеоматериалами, является Вконтакте. Однако, иногда загрузка большого количества видео в группу Вконтакте может быть утомительной и затратной задачей.

В данной статье мы рассмотрим, как при помощи языка программирования Python и API Вконтакте можно автоматизировать процесс загрузки видео в группу Вконтакте. Мы рассмотрим шаги, необходимые для настройки доступа к API Вконтакте, а затем разберем, как взаимодействовать с API при помощи Python для загрузки видеофайлов в конкретную группу. Ву узнаете, как создать приложение Вконтакте, получить необходимые ключи доступа и взаимодействовать с API для загрузки видео

Автоматизация процесса загрузки видео в группу Вконтакте с помощью Python поможет вам сэкономить время и упростить эту рутинную задачу. Давайте начнем и узнаем, как сделать это!

1. Создание приложения Вконтакте

Для получения токена доступа для взаимодействия с API Вконтакте сперва необходимо создать приложение. Для этого необходимо следовать шагам ниже:
1. Переходим по ссылке https://vk.com/apps?act=manage и нажимаем кнопку «‎Создать приложение»

Создание приложения Вконтакте

2. В появившемся окне указываем название приложения и выбираем пункт «‎Standalone-приложение»

Standalone-приложение

3. Переходим в настройки созданного приложения и копируем идентификатор из поля «‎ID приложения»

ID приложения

4. Далее необходимо включить данное приложение

Далее необходимо включить данное приложение

5. В браузере переходим по ссылке 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

6. После перехода по ссылке откроется OAuth screen где необходимо предоставить указанные выше доступы. Жмем продолжить

После перехода по ссылке откроется OAuth screen где необходимо предоставить указанные выше доступы

7.   Далее необходимо полностью скопировать полученный токен доступа из URL адреса страницы из параметра access_token (Знак = не считается)

URL адреса страницы из параметра access_token

В данной главе мы научились создавать приложение и получать токен доступа. Переходим к написанию кода на Python для загрузки видео в группу ВК.

2. Загрузка видео в группу Вконтакте при помощи Python

В данной статье реализация взаимодействия с API Вконтакте будет осуществляться в Jupyter Lab. Представленный в ходе статьи код может работать в любой среде разработки.
1. Устанавливаем необходимые библиотеки

!pip install requests
!pip install tqdm

2. Импортируем необходимые библиотеки

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'

4. Создаем функцию, предназначенную для получения адреса сервера, на который необходимо загрузить видео
Для загрузки видео в группу Вконтакте для начала необходимо получить адрес сервера для загрузки видео. Делается это при помощи метода 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

5. Создаем функцию для загрузки всех видео из папки на компьютере в группу в Вконтакте
Полный код функции представлен ниже:

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 = ['.avi', '.mp4', '.3gp', '.mpeg', '.mov', '.mp3', '.flv', '.wmv', '.mkv']
    
    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[:delimiter_idx], video[delimiter_idx:]

        # Проверяем расширение видео
        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()['response']['upload_url']
        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()['video_id']
            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 для получения адреса для загрузки видео. В случае успеха, видео из папки загружается по полученному ранее адресу и попадает в группу в Вконтакте. Помимо этого, все файлы проверяются на корректность расширения, поскольку Вконтакте допускает только определенный формат видео.
Ниже представлен пример того какие видео лежат в папке и как вызывается функции для загрузки видео в группу в Вконтакте:

как вызывается функции для загрузки видео в группу в Вконтакте

После выполнения скрипта, видео появятся в группе Вконтакте.

Группа Вконтакте

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

https://drive.google.com/file/d/1neEaVnuOGwv_c0pIfZ9xYC41y1YBMi74/view?usp=share_link

ВЫВОД

Таким образом, мы разобрали процесс загрузки видео файлов в группу в Вконтакте при помощи Python. В следующей статье мы разберем как загружать обычные файлы в группу в Вконтакте.