Уведомления

Группа в Telegram: @pythonsu

#1 Окт. 22, 2012 17:46:30

Mozart
От:
Зарегистрирован: 2011-12-12
Сообщения: 66
Репутация: +  0  -
Профиль   Отправить e-mail  

Загрузка изображения Вконтакте

Появилась потребность постить некоторые изображения на стену, для того что бы их прикрепить к посту, как я понял, они сначала загружаются на сервер контакта.
С авторизацией я уже разобрался, использую библиотеки urllib и urllib2 для выполнения всех операций.
Раньше я никогда не сталкивался с загрузкой файлов на сервер и с multipart/form-encode, поэтому хочу попросить у вас некоторой помощи.

Я соснифал запросы идущие на сервер при загрузке фото с компьютера, вот что получается:

1) Вот что идет в заголовках при загрузки картинки на сервер - http://gyazo.com/44ed1e5e4e917d502d2bb925c28831e8
Т.е. как я понял загрузка идет на сервер cs309426.vk.com

2) Вот то что отправляется постом в этом же запросе - http://gyazo.com/67ee37176e1060e5082176313c2274b4
Как я понимаю это какое то представление картинки.

3) Но самое интересное это то, что в ответ я ничего не получаю:
http://gyazo.com/07ca90a26fcb5875d727e48a834b8080
Т.е. я думал что в ответ я получу ссылку на картинку, но ответ пуст, т.е. как бы картинка загружена и все …

4) Но потом идет следующий запрос на al_photos.php вот с такими заголовками - http://gyazo.com/2c5b88009e79aa309fee70b3870a13c4
и таким постом - http://gyazo.com/3375c8aa88d6ed2f4aa9c0b903aeb43b
где в параметре “photos” много непонятных значений, и откуда они берутся ума не приложу.
И вот уже в этом запросе я получаю ответ с двумя ссылками на свою загруженную картинку -
http://gyazo.com/03e837a7e0a00f3c0bb77637cb6d5b25

———————————–

Исходя из этого хотелось бы спросить, каким образом мне загружать картинки на сервер, я склоняюсь к методу описанному в низу этой статьи - http://www.doughellmann.com/PyMOTW/urllib2/, тем более находил тут на форуме такие же решения, правда для твиттера. Но даже если у меня получится загрузить фото на сервер то как получить ссылку на него, ведь в ответе этого запроса ничего не отдается?

Спасибо за советы …



Отредактировано Mozart (Окт. 22, 2012 17:47:07)

Офлайн

#2 Окт. 22, 2012 22:24:25

odnochlen
Зарегистрирован: 2012-06-28
Сообщения: 794
Репутация: +  14  -
Профиль   Отправить e-mail  

Загрузка изображения Вконтакте

Выкинь urllib и возьми requests или grab.

HttpFox ты уже поставил, щелкни на вкладке post data на raw, скопируй запрос в блокнтот и вырежи данные картинки, потом оттуда сможешь восстановить post запрос.

Офлайн

#3 Окт. 23, 2012 15:04:08

Mozart
От:
Зарегистрирован: 2011-12-12
Сообщения: 66
Репутация: +  0  -
Профиль   Отправить e-mail  

Загрузка изображения Вконтакте

В смысле здесь - http://gyazo.com/b930e3f09481e9ccf0ae816200b27c28
кликнуть на Copy Row и вставить то что скопировалось в блокнот?

И что значит вырезать данные картинки? Название файла и open(img, “rb”) ?

Насчет requests и grab посмотрю, спасибо



Отредактировано Mozart (Окт. 23, 2012 15:04:35)

Офлайн

#4 Окт. 23, 2012 19:57:27

odnochlen
Зарегистрирован: 2012-06-28
Сообщения: 794
Репутация: +  14  -
Профиль   Отправить e-mail  

Загрузка изображения Вконтакте

Copy all rows. После “photo”;filename и до следующего ———————- по идее должно идти содержание картинки, его вырезаешь, чтобы экран не засоряло.

Офлайн

#5 Окт. 23, 2012 20:21:56

GaiveR
От:
Зарегистрирован: 2011-08-13
Сообщения: 122
Репутация: +  16  -
Профиль   Отправить e-mail  

Загрузка изображения Вконтакте

К слову у вк есть api, используйте его - vk api



Отредактировано GaiveR (Окт. 23, 2012 20:23:03)

Офлайн

#6 Окт. 23, 2012 21:30:36

Mozart
От:
Зарегистрирован: 2011-12-12
Сообщения: 66
Репутация: +  0  -
Профиль   Отправить e-mail  

Загрузка изображения Вконтакте

Нужно именно так разобраться как заливать изображения на сервер, без api …



Офлайн

#7 Окт. 24, 2012 16:03:02

Mozart
От:
Зарегистрирован: 2011-12-12
Сообщения: 66
Репутация: +  0  -
Профиль   Отправить e-mail  

Загрузка изображения Вконтакте

Выбор пал на библиотеку Grab, но сразу же возникла проблема при установке:

Автор рекомендует скачивать именно ихнюю сборку pycurl, вот отсюда - http://grablib.org/static/pycurl-ssl-7.19.0.win32-py2.7.msi

Но проблема в том, что под мой компьютер подходят только win-amd64 приложения, другие не работают.
Естественно после установки pycurl'a и попытки его импорта я получаю вот такую простыню - http://gyazo.com/c5ed07d63525f35c89f3e09a80fae798

lxml я установил вот эту - lxml-3.0.1.win-amd64-py2.7.‌exe
Либа прекрасно работает

Grab я так же установил, но из за того что не работает pycurl получаю тоже самое - http://gyazo.com/4cf1d5fb74c0b99295f89556ef4e98dd


Так то я могу скачать нужную мне сборку pycurl вот отсюда же - http://www.lfd.uci.edu/~gohlke/pythonlibs/, но автор говорит что нужна именно его сборка, поэтому я в растерянности …

Может кто нибудь подсказать решение проблемы?
Заранее спасибо.



Отредактировано Mozart (Окт. 24, 2012 16:10:01)

Офлайн

#8 Окт. 24, 2012 21:52:13

odnochlen
Зарегистрирован: 2012-06-28
Сообщения: 794
Репутация: +  14  -
Профиль   Отправить e-mail  

Загрузка изображения Вконтакте

Попробуй, мож получится. Или можешь requests взять, у него функционал очень похожий.

А почему под x64 не ставятся 32 битные модули?

Отредактировано odnochlen (Окт. 24, 2012 21:52:42)

Офлайн

#9 Окт. 24, 2012 22:08:03

reclosedev
От: Н.Новгород
Зарегистрирован: 2012-03-29
Сообщения: 870
Репутация: +  173  -
Профиль   Отправить e-mail  

Загрузка изображения Вконтакте

odnochlen
А почему под x64 не ставятся 32 битные модули?
Python видимо 64 битный.
Mozart
Чтобы избежать таких проблем, и если в будущем понадобится создание *.exe, то лучше сразу поставить 32 битный Python и использовать 32 битные модули. Проверено, работает на Win7 x64.

Офлайн

#10 Окт. 26, 2012 19:06:27

Mozart
От:
Зарегистрирован: 2011-12-12
Сообщения: 66
Репутация: +  0  -
Профиль   Отправить e-mail  

Загрузка изображения Вконтакте

Поставил pycurl amd64, Grab воспринял его нормально вроде, отослал несколько пост запросов на разные сайты, данные не теряются, все работает, вроде бы все в порядке :)



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version