ВВЕДЕНИЕ
В настоящее время социальные сети стали неотъемлемой частью нашей повседневной жизни, и одной из самых популярных сетей является Вконтакте. Вконтакте предоставляет широкие возможности для взаимодействия и обмена информацией между пользователями. Одним из важных аспектов использования Вконтакте является возможность загрузки и обмена файлами.
В этой статье мы рассмотрим, как загружать файлы в группу Вконтакте при помощи языка программирования Python. Рассмотрим различные методы и функции, предоставляемые Вконтакте API, для выполнения задачи загрузки файлов в группу Вконтакте. Возможность загрузки файлов может быть полезна во многих сценариях, например, для автоматической публикации новостей, обновлений или других типов контента в группе.
1. Получения токена доступа для работы с API Вконтакте
В предыдущей статье мы рассмотрели процесс загрузки видео в группу в Вконтакте. Для взаимодействия с API Вконтакте необходимо было создать приложение. В этой же статье, для работы с файлами в группе в Вконтакте необходимо создать отдельный ключ доступа с определенными правами.
Переходим в настройки группы в раздел Работа с API и жмем Создать ключ.
В появившемся окне выбираем права на управление сообществом и на доступ к документам сообщества и жмем Создать
Полученный ключ необходимо сохранить для дальнейшего написания кода. Также дополнительно необходимо включить сообщения, если они не включены
Сохраняем полученный токен доступа и переходим к реализации процесса загрузки файлов в группу в Вконтакте при помощи Python. Перед этим дополнительно необходимо включить блок с файлами в настройках своей группы:
2. Программная реализация загрузки файлов в группу в Вконтакте при помощи Python
2.1 Устанавливаем необходимые библиотеки
!pip install requests !pip install tqdm
2.2 Импортируем необходимые библиотеки
import requests import os from tqdm.notebook import tqdm import time
Библиотека requests необходима для создания GET и POST запросов, библиотека os для работы с файлами системы, библиотека tqdm для отслеживания процесса загрузки файлов в группу Вконтакте и библиотека time для работы со временем.
2.3 Объявляем необходимые переменные
# Указывается токен доступа полученный в настройках группы в разделе Работа с API access_token = '' # Указывается ID группы в которую необходимо загрузить видео group_id = # Указывается путь к папке с файлами которые необходимо загрузить files_folder_path = 'my_files'
2.4 Создаем функцию, предназначенную для автоматической загрузки файлов с компьютера в группу в Вконтакте
Как и в случае с видео, сперва необходимо получить ссылку на адрес загрузки файла в группу в Вконтакте при помощи метода docs.getWallUploadServer. Полный код реализованной функции представлен ниже:
def import_files_from_folder(access_token: str, group_id: int, files_folder_path: str): """ Функция предназначена для загрузки всех видео из конкретной папки в ВК. Параметры: access_token: str Токен доступа полученный в настройках группы. group_id: int Идентификатор сообщества, куда необходимо загрузить файл. files_folder_path: str Путь к папке с файлами которые нужно загрузить в ВК. Возвращает: None. Функция вывыодит сообщение об успехе или возникшей ошибке. """ if not os.path.exists(files_folder_path): print('Указанный путь к папке не найден.') return None files = os.listdir(files_folder_path) allowed_extensions = ['.doc', '.docx', '.xls', '.xlsx', '.ppt', '.pptx', '.rtf', '.pdf', '.png', '.jpg', '.gif', '.psd', '.djvu', '.fb2', '.ps'] params = {'access_token': access_token, 'group_id': group_id, 'v': 5.131} try: # Получаем адрес для загрузки файла get_server_req = requests.get('https://api.vk.com/method/docs.getWallUploadServer', params=params) upload_url = get_server_req.json()['response']['upload_url'] except Exception as e: print(f'Произошла ошибка при получении адреса для загрузки файла: {e}') return None for file in tqdm(files): params = {'access_token': access_token, 'group_id': group_id, 'v': 5.131} delimiter_idx = file.rfind('.') file_name, file_extension = file[:delimiter_idx], file[delimiter_idx:] # Проверяем расширение видео if file_extension not in allowed_extensions: print(f'Использование {file_extension} расширения не поддерживается') continue try: import_file_req = requests.post(upload_url, params=params, files = {'file': open(f'{files_folder_path}/{file}' , 'rb')}) except Exception as e: print(f'Произошла ошибка при импорте файла в группу в ВК: {e}') continue params['file'] = import_file_req.json()['file'] save_doc_req = requests.post('https://api.vk.com/method/docs.save', params=params) while not save_doc_req.json().get('response'): print('Anti-flood break. Waits 3 seconds.') time.sleep(3) save_doc_req = requests.post('https://api.vk.com/method/docs.save', params=params) try: doc_title = save_doc_req.json()['response']['doc']['title'] doc_id = save_doc_req.json()['response']['doc']['id'] except Exception as e: print(f'Произошла ошибка при извлечении данных файла: {e}') continue print(f'{doc_title} был успешно загружен! ID документа: {doc_id}')
Разберем принцип работы функции. Функция принимает 3 параметра:
- access_token: токен доступа полученный в настройках группы
- group_id: идентификатор сообщества, куда необходимо загрузить файл
- files_folder_path: путь к папке с файлами которые нужно загрузить в ВК
В самом начале функция проверяет указанный путь к папке с файлами на корректность. После чего все файлы из указанной папки помещаются в переменную files. Для загрузки файла в группу в ВК сначала необходимо получить адрес загрузки файла при помощи метода docs.getWallUploadServer. Далее скрипт в цикле проходит по каждому файлу из указанной папки и загружает его в группу в Вконтакте по полученному ранее адресу загрузки. В случае возникновения ошибки, обработчик ошибок выведет подробную информацию о возникших проблемах. В случае успешной загрузки файла в группу, выводится имя файла и его ID с сообщением об успехе.
Ниже представлен пример того, какие файлы лежат в папке и как вызывается функция для загрузки файлов в группу.
После выполнения скрипта, файлы появятся в группе в Вконтакте:
Полная версия ноутбука с кодом доступна для скачивания ниже
https://drive.google.com/file/d/15_TXLbDbABm5gLAIkAVzuer5KMdccpBw/view?usp=share_link
ВЫВОД
Таким образом, мы разобрали и автоматизировали процесс загрузки файлов в группу в Вконтакте при помощи Python.