last day (15 days later) » 

09:03
0
Q: Загрузка фотографии vk_api

Тимофей ПанфилийСобственно, вот мой код: # -*- coding: utf-8 -*- import vk_api, time, urllib, os, requests, json from bs4 import BeautifulSoup from urllib2 import urlopen from re import escape html_doc = urlopen('http://joyreactor.cc/').read() soup = BeautifulSoup(html_doc, "lxml") login, password = 'выопав...

После photo = r.json()['photo'] сотрите следующие три строчки
А там каша подается и тогда неправильно обрабатывает.
@ТимофейПанфилий вы пробовали стереть эти три строчки и запустить?
Конечно. Ничего не выходит вообще. Там в документации еще что-то про экранирование написано
09:03
@ТимофейПанфилий а какую ошибку пишет без этих трёх строчек?
@Alban, это же загрузка в альбом? Мне нужно на стену сразу
@Хэш-инвалид, но я гуглил. Он эту ошибку выдает часто, независимо от хэша.
Странно, должно было работать, подумаю ещё
@ТимофейПанфилий я это прекрасно знаю
@ТимофейПанфилий А в чем проблема? Загрузите в альбом, а потом киньте её на стану.
09:03
@Alban Вручную или можно просто подать в message ссылку на изображение вк?
@ТимофейПанфилий vk.com/dev/wall.post поле attachments
@ТимофейПанфилий Слушайте, вы меня обманули. Я взял ваш скрипт, стёр эти три строчки, запустил у себя (заменив логин, пароль и id группы на свои) — и всё превосходно работает! Пожалуйста, перепроверьте ещё сотню раз, что у вас осталась только строчка photo = r.json()['photo'] и следующих трёх строчек нету. Никаких инвалид-хэшей нет, фотография прекрасно загружается.
@andreymal везде обман
@andreymal Простите! У меня не работало и я понял почему. Я тестил до того, как ручками добавил в параметры group_id...
@andreymal извините за глупый вопрос, но откуда мне взять цифры для attachmetns?
@ТимофейПанфилий какие цифры?
09:03
@Alban После успешной загрузки фотографии Вы можете разместить её на стене, опубликовав запись с помощью метода wall.post и указав идентификатор фотографии в формате "photo"+{owner_id}+"_"+{photo_id} (например, photo12345_654321) в параметре attachments. В {owner_id} необходимо указывать то же значение, которое пришло Вам в ответе от метода photos.saveWallPhoto.
@ТимофейПанфилий ну так в чем проблема?
@ТимофейПанфилий вот такая строка — 'photo{}_{}'.format(wallphoto[0]['owner_id'], wallphoto[0]['id'])
@ТимофейПанфилий ну так суньте её туда
@andreymal vk_api.exceptions.ApiError: [100] One of the parameters specified was missing or invalid: invalid message param Вот как я запихал: vk.wall.post(owner_id = '-152811311', from_group = '1', attachemnts = 'photo{}_{}'.format(wallphoto[0]['owner_id'], wallphoto[0]['id']))
@ТимофейПанфилий опечатка в слове attachments
09:03
Спасибо вам огромное!
Замечание первое: не работай под рутом!!! Если какой-то жалкий скрипт загрузки фоточек может писать файлы в каталог /root, значит у вас всё отвратительно с безопасностью. Запускайте скрипт от имени обычного пользователя и пишите файлы в какой-нибудь специальный временный каталог типа /tmp
Замечание второе: можно вообще избавиться от временного файла foo.jpg, загрузив картинку в переменную: photodata = requests.get(foo).content — и затем запихнув эту переменную в requests.post: files = {'photo': ('photo.jpg', photodata)} (ВК требует обязательно указать имя файла, не знаю почему). Это потребляет немного больше оперативной памяти, но в случае картинок в максимум несколько мегабайт ничего страшного

last day (15 days later) »