---
title: "Cross post на yVision"
description: "В день отлета из Алматы мне захотелось замутить кросс-постинг на yVision со своего блога. Я подумал,..."
author: "yun_man_ger"
published: "2010-06-29T08:01:27+00:00"
modified: "2010-06-29T08:01:27+00:00"
locale: "ru"
canonical_url: "https://yvision.kz/post/cross-post-na-yvision-55750"
markdown_url: "https://yvision.kz/post/cross-post-na-yvision-55750/markdown"
site_name: "Yvision.kz"
---

# Cross post на yVision

> В день отлета из Алматы мне захотелось замутить кросс-постинг на yVision со своего блога. Я подумал,...

В день отлета из Алматы мне захотелось замутить кросс-постинг на yVision со своего [блога](http://buben.kz/). Я подумал, что было бы здорово если бы у меня была, например, такая кнопочка

![Cross post на yVision](http://buben.kz/media/photologue/photos/cache/post_to_display.png)

Попытки погуглить crossposting на yVision ничего не дали. И тогда я поискал что есть у Питона по этой теме. Остановился я на [ClientCookie, ClienForm](http://wwwsearch.sourceforge.net/old/ClientForm/) библиотеках. В тот же день добился вот такого результата, с помошью которого я смог закинуть свой первый Test Post.

``` #coding: utf-8 import urllib2, cookielib import ClientCookie from ClientForm import * YVI_LOGIN = "your login" YVI_PASSWORD = "and password"

# если знаете можно указать ID своего логина

# но не обязательно. YVI_USER_ID = None

# нам надо получить куки авторизации request = ClientCookie.Request("http://yvision.kz/auth/") response = ClientCookie.urlopen(request)

# парсим все формы, на страничке forms = ParseResponse(response, backwards_compat=False)

# нам нужна вторая, первая это фома поиска form = forms[1]

# заполняем форму, меням экшн. через аякс данный отправляются именно сюда form.action = 'http://yvision.kz/ajax/auth/login.php' form['login'] = YVI_LOGIN form['password'] = YVI_PASSWORD request = form.click()

# получили куки response = ClientCookie.urlopen(request)

# теперь идем на нашу форму добавления поста request = ClientCookie.Request('http://%s.yvision.kz/manage/article/add' % YVI_LOGIN)

# если надо подрелактировать существующий пост, тогда идем сюда #POST_ID = 55019 #request = ClientCookie.Request('http://%s.yvision.kz/manage/article/edit/%s' % (YVI_LOGIN,POST_ID)) response = ClientCookie.urlopen(request)

# парсим все формы, на страничке forms = ParseResponse(response, backwards_compat=False)

# нам нужна третяя, первая это фома поиска, вторая форма логаут form = forms[2]

# заполняем форму, меням экшн. через аякс данный отправляются именно сюда form.action = 'http://%s.yvision.kz/ajax/post/article.php?publicate=1' % YVI_LOGIN form['blog_title'] = "Python-Yvi Crosspost Test" form['blog_post'] = "Python-Yvi Crosspost Test

" form['blog_tags'] = "test,crosspost" if YVI_USER_ID is not None: form.new_control('hidden','user-id',{'id':'user-id','value':YVI_USER_ID}) form.new_control('hidden','save',{'value':'Сохранить (останется скрытой)'}) form.new_control('hidden','saveexit',{'value':'Опубликовать'}) #form.controls.remove(form.find_control('publ')) #request.add_header('X-Requested-With', 'XMLHttpRequest') #request.add_header('X-Prototype-Version', '1.6.0.2')

# постим request = form.click() response = ClientCookie.urlopen(request)
```

потом начал прикручивать, это дело к своему [блогу](http://buben.kz/) и тут у меня вышли проблемы с кодировкой. когда пишешь на русском, выходит `exception`. И я не смог доделать эту фичу в тот же день. [Мы улeтели в анкару](http://www.buben.kz/2010/06/27/flying-to-ankara/).

И вот сегодня на работе, добравшись до интернета решил снова покопаться. очень долго сверлил гугл, надеясь нарваться на что-нибудь похожее. В результате нашел... :) причина оказалось в беспанотовости `urllib.quote_plus`. в общем я немного подредактировал ClientForm.py, и все заработало.

![Cross post на yVision](http://buben.kz/media/photologue/photos/cache/success_display.png)

вот тут лежит архив c библиотеками и моей реализацией задачи

[yvi_crosspost.tar.gz](http://buben.kz/media/files/uploads/admin/yvi_crosspost.tar.gz)

ну вот. как-то так. вроде работает. :)

---

Source: [https://yvision.kz/post/cross-post-na-yvision-55750](https://yvision.kz/post/cross-post-na-yvision-55750)