|
0 / 0 / 0
Регистрация: 21.07.2022
Сообщений: 14
|
|
VK API Ошибка vk_api.exceptions.ApiError: [121] Invalid hash22.07.2022, 18:35. Показов 2006. Ответов 9
Короче, делаю програмку которая будет постить картинки в сообщество(с циклом for), но вот незадача, баг в апи(или как это можно назвать) не дает мне постить. Дело в том, что надо сохранять их на полученный url. Для этого используется функция photos.saveWallPhoto. Её параметр, который нужен для работы и мешает мне:
group_id positive Идентификатор сообщества, на стену которого нужно сохранить фотографию. Дело в том, что id сообщества - обязательно отрицательное число. Мне нужно либо подправить библиотеку(если это вообще возможно), либо как-нибудь чем-нибудь воспользоваться. Если что, вот код(Осторожно! Много чего недоделано и много мусора, только начал писать программу): # -*- coding: cp1251 -*- import os.path import requests import vk_api album_id_ = айди альбома public_id = -айди паблика vk_session = vk_api.VkApi( token='токен') vk = vk_session.get_api() number_arts = len([1 for x in list(os.scandir("arts")) if x.is_file()]) print("артов:", number_arts) print(vk.photos.getWallUploadServer(albu m_id=album_id_, group_id=public_id)) uploadServer = vk.photos.getWallUploadServer(album_id=a lbum_id_, group_id=public_id) uploadUrl = uploadServer["upload_url"] print("Ссылка на загрузку:", uploadUrl) path = r"C:/Users/SuperUser/PycharmProjects/bot/arts/" artslist = os.listdir(path) print(artslist) for a in range(0, number_arts): pth = path + artslist[a] fp = open(pth, 'rb') file = {'file': fp} pt = requests.post(uploadUrl, files=file) fp.close() res = pt.json() print(res) pwi = vk.photos.saveWallPhoto(group_id=public_ id, server=res["server"], photo=res["photo"], hash=res["hash"]) pdi = str(pwi[0]["id"]) print(pwi) print("photo" + sublic_id + "_" + str(pwi[0]["id"]) + " запощено") next_date = 1658599521 vk.wall.post( owner_id=public_id, attachment="{0}{1}_{2}".format( "photo", sublic_id, pdi ), friends_only=0, from_group=1, publish_date=next_date ) # os.delete(path[a]) Надеюсь ничего не упустил.
0
|
|
| 22.07.2022, 18:35 | |
|
Ответы с готовыми решениями:
9
Vk_api.exceptions.ApiError: [5] User authorization failed: invalid session Vk_api.exceptions.ApiError: [5] User authorization failed: invalid access_token (4) |
|
5906 / 3358 / 1036
Регистрация: 03.11.2009
Сообщений: 10,008
|
||||||||
| 22.07.2022, 19:49 | ||||||||
|
Добавлено через 3 минуты выполнил сейчас vk.groups.get(), получил
Добавлено через 46 секунд Добавлено через 2 минуты На странице самого VK про этот запрос (photos.saveWallPhoto) тоже написано, что должно быть положительное число https://vk.com/dev/photos.saveWallPhoto Добавлено через 9 минут почему странный метод загрузки такой? есть встроенный в vk_api класс VkUpload - https://vk-api.readthedocs.io/... pload.html в нем метод photo_wall https://vk-api.readthedocs.io/... photo_wall
0
|
||||||||
|
0 / 0 / 0
Регистрация: 21.07.2022
Сообщений: 14
|
|||
| 22.07.2022, 20:24 [ТС] | |||
|
Добавлено через 7 минут Очень странно, я че то нашаманил в библиотеке, потом вернул всё обратно и заработало, только теперь пишет TypeError: __call__() takes 1 positional argument but 2 were given
0
|
|||
|
5906 / 3358 / 1036
Регистрация: 03.11.2009
Сообщений: 10,008
|
|
| 22.07.2022, 20:53 | |
|
0
|
|
|
0 / 0 / 0
Регистрация: 21.07.2022
Сообщений: 14
|
|
| 22.07.2022, 21:03 [ТС] | |
|
# -*- coding: cp1251 -*-
import os.path import requests import vk_api album_id_ = ... public_id = -... sublic_id = "..." vk_session = vk_api.VkApi( token='...') vk = vk_session.get_api() number_arts = len([1 for x in list(os.scandir("arts")) if x.is_file()]) print("артов:", number_arts) print(vk.photos.getWallUploadServer(albu m_id=album_id_, group_id=public_id)) uploadServer = vk.photos.getWallUploadServer(album_id=a lbum_id_, group_id=public_id) uploadUrl = uploadServer["upload_url"] print("Ссылка на загрузку:", uploadUrl) path = r"C:/Users/SuperUser/PycharmProjects/bot/arts/" artslist = os.listdir(path) print(artslist) for a in range(0, number_arts): pth = path + artslist[a] fp = open(pth, 'rb') file = {'file': fp} pt = requests.post(uploadUrl, files=file) fp.close() res = pt.json() print(res) pwi = vk.upload.photo_wall(pth, group_id=public_id) pdi = str(pwi[0]["id"]) print(pwi) print("photo" + sublic_id + "_" + str(pwi[0]["id"]) + " запощено") next_date = 1658599521 vk.wall.post( owner_id=public_id, attachment="{0}{1}_{2}".format( "photo", sublic_id, pdi ), friends_only=0, from_group=1, publish_date=next_date ) Добавлено через 8 минут Надеюсь вам всего кода достаточно будет, чтобы разобраться?
0
|
|
|
5906 / 3358 / 1036
Регистрация: 03.11.2009
Сообщений: 10,008
|
||
| 22.07.2022, 21:06 | ||
|
тэги никак?
Добавлено через 14 секунд полный текст ошибки? Добавлено через 20 секунд все еще не понимаю почему requests Добавлено через 1 минуту
0
|
||
|
0 / 0 / 0
Регистрация: 21.07.2022
Сообщений: 14
|
|
| 22.07.2022, 21:28 [ТС] | |
|
requests это кусок старого кода, решил не удалять на всякий если не сработает этот.
Полный код ошибки: Traceback (most recent call last): File "C:/Users/SuperUser/PycharmProjects/bot/bot_post.py", line 33, in <module> pwi = vk.upload.photo_wall(pth) TypeError: __call__() takes 1 positional argument but 2 were given Добавлено через 38 секунд В библиотеке ничего не нашаманено, говорю же, вернул как было Добавлено через 18 минут Вот код с тегами import os.path # import requests import vk_api # album_id_ = ... # id альбома для сохранения фотографии(обломок старого кода) public_id = -... # int id сообщества str_public_id = "..." # str id сообщества vk_session = vk_api.VkApi( token='...') vk = vk_session.get_api() number_arts = len([1 for x in list(os.scandir("arts")) if x.is_file()]) # кол-во картинок в папке print("артов:", number_arts) """print(vk.photos.getWallUploadServer(a lbum_id=album_id_, group_id=public_id)) # обломки старого кода(не удаляю на всякий) uploadServer = vk.photos.getWallUploadServer(album_id=a lbum_id_, group_id=public_id) uploadUrl = uploadServer["upload_url"] print("Ссылка на загрузку:", uploadUrl)""" path = r"C:/Users/SuperUser/PycharmProjects/bot/arts/" # необработаный str с путем к картинкам artslist = os.listdir(path) # список картинок print(artslist) for a in range(0, number_arts): # обычный цикл range(0, общее число картинок) pth = path + artslist[a] # путь к картинкам + названия самих картинок """fp = open(pth, 'rb') # обломки старого кода(не удаляю на всякий) file = {'file': fp} pt = requests.post(uploadUrl, files=file) fp.close() res = pt.json() print(res)""" pwi = vk.upload.photo_wall(pth, group_id=public_id) # сама переменная с сохранением картинки на стену pdi = str(pwi[0]["id"]) # переменная str с id сохранённой картинки print(pwi) print("photo" + str_public_id + "_" + str(pwi[0]["id"]) + " запощено") next_date = 1658599521 # следующая дата отправки(не доделано) vk.wall.post( # пост на стену owner_id=public_id, # id автора поста(сообщества) attachment="{0}{1}_{2}".format( # Подвязка картинки к посту "photo", # тип str_public_id, # id сообщества pdi # str id картинки ), friends_only=0, # только для друзей(0=для всех) from_group=1, # от сообщества без подписи автора(1=да) publish_date=next_date # дата отправки поста ) # os.delete(path[a]) # не дописано, т.к. ещё делаю программу
0
|
|
|
5906 / 3358 / 1036
Регистрация: 03.11.2009
Сообщений: 10,008
|
||||||
| 22.07.2022, 22:16 | ||||||
Сообщение было отмечено d1n0z4ur как решение
Решение
Ну как там можно, видно ведь, что разметка вся слетает... Есть теги кода (не комментарии), которые оформляют код, чтобы он выглядел хорошо на форуме, с отступами, разукрашенный...
Так или иначе, зашел на вк (первый раз за последние лет Х), создал сообщество, написал вот это, оно работает.
1
|
||||||
|
5906 / 3358 / 1036
Регистрация: 03.11.2009
Сообщений: 10,008
|
|
| 22.07.2022, 22:17 | |
|
0
|
|
|
0 / 0 / 0
Регистрация: 21.07.2022
Сообщений: 14
|
|
| 23.07.2022, 09:21 [ТС] | |
|
Огромное спасибо, только не понимаю что я сделал не так...
0
|
|
| 23.07.2022, 09:21 | |
|
Помогаю со студенческими работами здесь
10
Error: vk_api.exceptions.ApiError Vk_api.exceptions.ApiError: [901] Can't send messages for users without permission VkApi (vk_api.exceptions.ApiError: [15] Access denied: no access to call this method) VK API saveWallPhoto error 121: Invalid hash Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
||||
|
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта
Симптом:
После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
|
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
|
Новый ноутбук
volvo 07.12.2025
Всем привет.
По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне:
Ryzen 5 7533HS
64 Gb DDR5
1Tb NVMe
16" Full HD Display
Win11 Pro
|
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
|
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
|
|
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов
На странице:
https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/
нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
|
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов.
. . .
|
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
|
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
|
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут.
В век Веб все очень привыкли к дизайну Single-Page-Application .
Быстренько разберем подход "на фреймах".
Мы делаем одну. . .
|