Массовый постинг в Wordpress с помощью POST запроса.

Vikvas

Client
Регистрация
29.08.2015
Сообщения
3
Благодарностей
1
Баллы
3
Приветствую форумчане.
Возникла необходимость загрузить большое количество статей на сайт на Wordpress (>400). Понял, что самым правильным и быстрым способом будет сделать это с помощью POST запроса. Но вот только я в этом мягко сказать не бельмеса. Я понимаю, что это не сложный шаблон, но увы не знаю как. Может у кого есть такой шаблончик, или кто-нибудь поможет написать его?
 

rostonix

Известная личность
Регистрация
23.12.2011
Сообщения
29 067
Благодарностей
5 715
Баллы
113

jonvy

Client
Регистрация
28.11.2015
Сообщения
305
Благодарностей
17
Баллы
18

jonvy

Client
Регистрация
28.11.2015
Сообщения
305
Благодарностей
17
Баллы
18

jonvy

Client
Регистрация
28.11.2015
Сообщения
305
Благодарностей
17
Баллы
18
При выполнении этого кода прога вылетает. Кто знает как исправить?

WordPressSiteConfig wordPressSiteConfig = new WordPressSiteConfig();
wordPressSiteConfig.BaseUrl = "http://мой сайт.ru/xmlrpc.php"; // Путь к xmlrpc
wordPressSiteConfig.Username = "логин"; // Логин
wordPressSiteConfig.Password = "пароль"; // Пароль
wordPressSiteConfig.BlogId = 1;

using (var client = new WordPressClient(wordPressSiteConfig))
{
var post = new Post
{
PostType = "post", // "post" или "page"
Title = "Заголовок",
Content = "Контент записи, <a> А тут html код)</a>",
PublishDateTime = DateTime.Now, // Дата публикации
Status = "publish" // "draft" или "publish" (draft это черновик)
};

var id = Convert.ToInt32(client.NewPost(post)); // ID поста

}



System.Diagnostics.Process.Start("https://vk.com/zennoprof");
 

rostonix

Известная личность
Регистрация
23.12.2011
Сообщения
29 067
Благодарностей
5 715
Баллы
113
Если падает, запустите Diagnostic.exe в папке программы после падения и приложите репорт полученный.
 

jonvy

Client
Регистрация
28.11.2015
Сообщения
305
Благодарностей
17
Баллы
18
Если падает, запустите Diagnostic.exe в папке программы после падения и приложите репорт полученный.
Выключил комп, на утро включил всё работает. Скорее всего после добавления этих библиотек нужно комп перезагружать.
В этом способе есть один недостаток - в коде нельзя использовать переменные. Как можно массово постить без использования переменных?
 

rostonix

Известная личность
Регистрация
23.12.2011
Сообщения
29 067
Благодарностей
5 715
Баллы
113
В коде можно использовать переменные

вместо
wordPressSiteConfig.Username = "логин";
например так
wordPressSiteConfig.Username = project.Variables["login"].Value;
где login - имя переменной в которой лежит занчение нужное
 

jonvy

Client
Регистрация
28.11.2015
Сообщения
305
Благодарностей
17
Баллы
18
В коде можно использовать переменные

вместо
wordPressSiteConfig.Username = "логин";
например так
wordPressSiteConfig.Username = project.Variables["login"].Value;
где login - имя переменной в которой лежит занчение нужное
вот это оно отправляет Content = "Контент записи, <a> А тут html код)</a>",

А вот это никак не хочет

<iframe src="http://playreplay.me/framevideo/80040.8f71cf8dca03f3593aa907bf798f?width=640&amp;height=360" width="640" height="360" frameborder="0" allowfullscreen="allowfullscreen"></iframe>
project.Variables["diskrip"].Value

Источник: <a href="project.Variables["url_youtube"].Value" target="_blank">взято от сюда</a>
 

jonvy

Client
Регистрация
28.11.2015
Сообщения
305
Благодарностей
17
Баллы
18
И вот ещё проблема
После того как отработает код мне в переменную приходит значение ок, а хотелось бы что бы приходило ид созданного поста.
Чтоб получить этот ид я отснифил запрос которым создаётся пост

<?xml version="1.0"?>
<methodCall>
<methodName>wp.newPost</methodName>
<params>
<param>
<value>
<i4>1</i4>
</value>
</param>
<param>
<value>
<string>логин</string>
</value>
</param>
<param>
<value>
<string>пароль</string>
</value>
</param>
<param>
<value>
<struct>
<member>
<name>post_type</name>
<value>
<string>post</string>
</value>
</member>
<member>
<name>post_title</name>
<value>
<string>{-Variable.title-}</string>
</value>
</member>
<member>
<name>post_status</name>
<value>
<string>publish</string>
</value>
</member>
<member>
<name>post_date</name>
<value>
<dateTime.iso8601>20160105T19:37:22</dateTime.iso8601>
</value>
</member>
<member>
<name>post_content</name>
<value>
<string>Контент записи, &lt;a&gt; А тут html код)&lt;/a&gt;</string>
</value>
</member>
<member>
<name>comment_status</name>
<value>
<string>open</string>
</value>
</member>
</struct>
</value>
</param>
</params>
</methodCall>

и повторил это post запросом в зенке, заменив

Контент записи, &lt;a&gt; А тут html код)&lt;/a&gt; на нужный мне код
<iframe src="http://playreplay.me/framevideo/{-Variable.id_video-}?width=640&amp;height=360" width="640" height="360" frameborder="0" allowfullscreen="allowfullscreen"></iframe>
{-Variable.diskrip-}
Источник: <a href="{-Variable.url_youtube-}" target="_blank">взято от сюда</a>

получив таким способом id созданного поста. Но и таким способом я не могу опубликовать нужный мне html код корректно.
Вобщем и короче помогите решить проблему. Что это за язык (код) который я повторяю post запросом? как в него вписать нужный мне html код так чтобы он опубликовался на вордпрессе корректно?
 

rostonix

Известная личность
Регистрация
23.12.2011
Сообщения
29 067
Благодарностей
5 715
Баллы
113
Советую изучить базовый синтаксис языка.
Если вы групируете фиксированные текстовые данные и переменные, то делать это нужно так

@"текст"+project.Variables["diskrip"].Value+@" другой текст"+project.Variables["dytytytrip"].Value+@" и еще текст"
 

jonvy

Client
Регистрация
28.11.2015
Сообщения
305
Благодарностей
17
Баллы
18

rostonix

Известная личность
Регистрация
23.12.2011
Сообщения
29 067
Благодарностей
5 715
Баллы
113
На котором сниппет пишете) C#
 

jonvy

Client
Регистрация
28.11.2015
Сообщения
305
Благодарностей
17
Баллы
18
Сомнительная какая то простота Zennoposter + Wordpress = XMLRPC Если для этого ещё и язык нужно выучить))
 

jonvy

Client
Регистрация
28.11.2015
Сообщения
305
Благодарностей
17
Баллы
18
Доброго времени суток.
Вопрос созрел помогите разобраться куда копать:

пытаюсь задать миниатюру к записи post запросом
-----------------------------7e035c430584 (что это за цифры? от куда они берутся я так и не нашёл)
Content-Disposition: form-data; name="name"

{-Variable.name_photo-}.png
-----------------------------7e035c430584
Content-Disposition: form-data; name="action"

upload-attachment
-----------------------------7e035c430584
Content-Disposition: form-data; name="_wpnonce"

{-Variable.wpnonce-}
-----------------------------7e035c430584
Content-Disposition: form-data; name="post_id"

{-Variable.id_post-}
-----------------------------7e035c430584
Content-Disposition: form-data; name="async-upload"; filename="{-Variable.name_photo-}.png"
Content-Type: image/png

C:\Users\1\YandexDisk\спам\сплоги\мой сайт.ru\ютуб\{-Variable.name_photo-}.png

экшен отрабатывает без ошибок, но картинка ни в качестве миниатюры, ни вообще на хостинге блога так и не появляется. Что я делаю не так? Помогите разобраться
Я отснифил запрос который отправляет экшен во время работы. там присутствуют "крякозыбры" вместо ссылки на фото. Я так понимаю картинка уходит с компа, но до хостинга она не доходит

Куки использую те что получил после авторизации. Т.к. после запроса на создание нового поста новых кук не присылается

Вроде ж ни чего сложного, отловил запросы которыми переругивается браузер и вордпресс, повторил их в зенке и не надо никаких языков программирования)), а на практике.... мозги вывихнуть можно))
 
Последнее редактирование:

doc

Client
Регистрация
30.03.2012
Сообщения
8 684
Благодарностей
4 641
Баллы
113
Эти цифры ты генерируешь сам, это что-то вроде идентификатора. А что касается самой проблемы, кракозябры не показатель. Что приходит в ответе? И пробовал ли ты проделать всё тоже самое с использованием браузера для проверки, а вдруг всё же проблема в куки?
 

jonvy

Client
Регистрация
28.11.2015
Сообщения
305
Благодарностей
17
Баллы
18
Эти цифры ты генерируешь сам, это что-то вроде идентификатора. А что касается самой проблемы, кракозябры не показатель. Что приходит в ответе? И пробовал ли ты проделать всё тоже самое с использованием браузера для проверки, а вдруг всё же проблема в куки?
Через браузер всё работает и отправляется
Вот это приходит в ответе

HTTP/1.1 200 OK
Date: Wed, 06 Jan 2016 21:01:10 GMT
Content-Type: text/html; charset=UTF-8
Connection: close
Server: Jino.ru/mod_pizza
Expires: Wed, 11 Jan 1984 05:00:00 GMT
Cache-Control: no-cache, must-revalidate, max-age=0
Pragma: no-cache
X-Frame-Options: SAMEORIGIN
X-Content-Type-Options: nosniff
Content-Length: 2


-1

А цифры эти както же отловить надо и запихнуть в переменные? Где их искать? Через поиск снифера они находятся только в этом запросе
 

doc

Client
Регистрация
30.03.2012
Сообщения
8 684
Благодарностей
4 641
Баллы
113
цифры генерируй сам и в запрос суй как-то так
------------{-Variable.boundary-}
bla bla
------------{-Variable.boundary-}
...

А про браузер я имел ввиду в проджект мейкере. Если зайти на сайт через страничку в прождект мейкере, и тогда отработать этот пост-экшн, в таком раскладе картинка зальется?
 

jonvy

Client
Регистрация
28.11.2015
Сообщения
305
Благодарностей
17
Баллы
18
цифры генерируй сам и в запрос суй как-то так
------------{-Variable.boundary-}
bla bla
------------{-Variable.boundary-}
...

А про браузер я имел ввиду в проджект мейкере. Если зайти на сайт через страничку в прождект мейкере, и тогда отработать этот пост-экшн, в таком раскладе картинка зальется?
Через встроенный в зенку браузер тоже работает.
Я шаблон автопостинга в вордпресс уже делал с использованием веб интерфейса. Всё работает и загружается куда надо
Сейчас пытаюсь повторить то же самое post get запросами. И вот затык с загрузкой миниатюры для записи

Так это может дело в этих цифрах? Я же уже публиковал запись с этими цифрами (руками когда запросы отлавливал) вот оно и пытается не допустить повторений?
 

doc

Client
Регистрация
30.03.2012
Сообщения
8 684
Благодарностей
4 641
Баллы
113
мне кажется, мы снова не опняли друг друга. Если ты войдешь на сайт через веб интерфейс, зайдешь на страницу, откуда производится загрузка и сделаешь этот пост запрос через экшн пост-запрос
-----------------------------7e035c430584 (что это за цифры? от куда они берутся я так и не нашёл)
Content-Disposition: form-data; name="name"

{-Variable.name_photo-}.png
-----------------------------7e035c430584
Content-Disposition: form-data; name="action"

upload-attachment
-----------------------------7e035c430584
Content-Disposition: form-data; name="_wpnonce"

{-Variable.wpnonce-}
-----------------------------7e035c430584
Content-Disposition: form-data; name="post_id"

{-Variable.id_post-}
-----------------------------7e035c430584
Content-Disposition: form-data; name="async-upload"; filename="{-Variable.name_photo-}.png"
Content-Type: image/png

C:\Users\1\YandexDisk\спам\сплоги\мой сайт.ru\ютуб\{-Variable.name_photo-}.png
в таком случае картинка загрузится?
 

jonvy

Client
Регистрация
28.11.2015
Сообщения
305
Благодарностей
17
Баллы
18
мне кажется, мы снова не опняли друг друга. Если ты войдешь на сайт через веб интерфейс, зайдешь на страницу, откуда производится загрузка и сделаешь этот пост запрос через экшн пост-запрос

в таком случае картинка загрузится?
Если я тебя правильно понял


То нет, не загружает
 

doc

Client
Регистрация
30.03.2012
Сообщения
8 684
Благодарностей
4 641
Баллы
113
Сюда бы отсниференный запрос еще, когда удачно заливается
 

jonvy

Client
Регистрация
28.11.2015
Сообщения
305
Благодарностей
17
Баллы
18
Сюда бы отсниференный запрос еще, когда удачно заливается
POST /wp-admin/async-upload.php HTTP/1.1
Accept: */*
Content-Type: multipart/form-data; boundary=---------------------------7e035c430584
Referer: http://мой сайт.ru/wp-admin/post-new.php
Accept-Language: ru-RU
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/5.0 (Windows NT 6.1; Trident/7.0; rv:11.0) like Gecko
Host: мой сайт.ru
Content-Length: 151307
DNT: 1
Connection: Keep-Alive
Cache-Control: no-cache
Cookie: тут куки полученные при авторизации

-----------------------------7e035c430584
Content-Disposition: form-data; name="name"

2egfo8.png
-----------------------------7e035c430584
Content-Disposition: form-data; name="action"

upload-attachment
-----------------------------7e035c430584
Content-Disposition: form-data; name="_wpnonce"

2b0dc99dc2
-----------------------------7e035c430584
Content-Disposition: form-data; name="post_id"

1014
-----------------------------7e035c430584
Content-Disposition: form-data; name="async-upload"; filename="2egfo8.png"
Content-Type: image/png

‰PNG тут крякозябры. Они почему то не копируются
 
Последнее редактирование:

jonvy

Client
Регистрация
28.11.2015
Сообщения
305
Благодарностей
17
Баллы
18
POST /wp-admin/async-upload.php HTTP/1.1
Accept: */*
Content-Type: multipart/form-data; boundary=---------------------------7e035c430584
Referer: http://мой сайт.ru/wp-admin/post-new.php
Accept-Language: ru-RU
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/5.0 (Windows NT 6.1; Trident/7.0; rv:11.0) like Gecko
Host: мой сайт.ru
Content-Length: 151307
DNT: 1
Connection: Keep-Alive
Cache-Control: no-cache
Cookie: тут куки полученные при авторизации

-----------------------------7e035c430584
Content-Disposition: form-data; name="name"

2egfo8.png
-----------------------------7e035c430584
Content-Disposition: form-data; name="action"

upload-attachment
-----------------------------7e035c430584
Content-Disposition: form-data; name="_wpnonce"

2b0dc99dc2
-----------------------------7e035c430584
Content-Disposition: form-data; name="post_id"

1014
-----------------------------7e035c430584
Content-Disposition: form-data; name="async-upload"; filename="2egfo8.png"
Content-Type: image/png

‰PNG тут крякозябры. Они почему то не копируются
вот после работы экшена загрузки

POST /wp-admin/async-upload.php HTTP/1.1
Content-Type: multipart/form-data; boundary=-----------------------------7e035c430584
User-Agent: Mozilla/5.0 (Windows NT 6.1; Trident/7.0; rv:11.0) like Gecko
Referer: http://мой сайт.ru/wp-admin/post-new.php
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Encoding: gzip, deflate
Accept-Language: en-US,en;q=0.5
Cookie: ---\\---
Host: мой сайт.ru
Content-Length: 162561

-------------------------------7e035c430584
Content-Disposition: form-data; name="name"

8kxeqx.png
-------------------------------7e035c430584
Content-Disposition: form-data; name="action"

upload-attachment
-------------------------------7e035c430584
Content-Disposition: form-data; name="_wpnonce"

e301558da5
-------------------------------7e035c430584
Content-Disposition: form-data; name="post_id"

1091
-------------------------------7e035c430584
Content-Disposition: form-data; name="async-upload"; filename="8kxeqx.png"
Content-Type: image/png

‰PNG
 

iulius

Client
Регистрация
01.10.2011
Сообщения
57
Благодарностей
3
Баллы
8
То на что вы даёте ссылку не работает
Добрый день, та же ошибка добавления WordpressSharp.dll. при добавлении CookComputing.XmlRpcV2.dll появляется пространство using CookComputing и xmlrpc но нет WordPressSharp.

ссылка на результат diagnostic.exe http://iuli.us/report.zip
подскажите пожалуйста друзья как решить задачу?
заранее примного благодарен.
 

jonvy

Client
Регистрация
28.11.2015
Сообщения
305
Благодарностей
17
Баллы
18
Добрый день, та же ошибка добавления WordpressSharp.dll. при добавлении CookComputing.XmlRpcV2.dll появляется пространство using CookComputing и xmlrpc но нет WordPressSharp.

ссылка на результат diagnostic.exe http://iuli.us/report.zip
подскажите пожалуйста друзья как решить задачу?
заранее примного благодарен.
Пиши сразу в базу.
 
  • Спасибо
Реакции: iulius

iulius

Client
Регистрация
01.10.2011
Сообщения
57
Благодарностей
3
Баллы
8
Пиши сразу в базу.
с радостью, но как с категориями обыграть момент?
вижу один вариант:
- записать пост в wp_posts с автоматическим ID -> считать последнюю запись, узнать ID -> записать строку в wp_term_relationships ?

или есть более элегантный метод?

всетаки предпочтителнее xmlrpc
 
Последнее редактирование:

jonvy

Client
Регистрация
28.11.2015
Сообщения
305
Благодарностей
17
Баллы
18
с радостью, но как с категориями обыграть момент?
вижу один вариант:
- записать пост в wp_posts с автоматическим ID -> считать последнюю запись, узнать ID -> записать строку в wp_term_relationships ?

или есть более элегантный метод?

всетаки предпочтителнее xmlrpc
Считывай id не последней записи, а строку с соответствующем тайтлом записи. Так нужно для работы при многопотоке.
про рубрики всё верно, записать в wp_term_relationships
object_id – id поста
term_taxonomy_id – id рубрики.

Но в начале сделай проверку существует ли рубрика, если нет, то создай
в wp_term_taxonomy, заполни строку:
term_taxonomy_id – ничего не пиши, тут автоинкремент
term_id – id записи из wp_terms
taxonomy – название рубрики
 
  • Спасибо
Реакции: iulius

iulius

Client
Регистрация
01.10.2011
Сообщения
57
Благодарностей
3
Баллы
8
спасибо друг
 

Кто просматривает тему: (Всего: 1, Пользователи: 0, Гости: 1)