Отправка сообщения в LiveJournal на PHP

vovan, 1 декабря 2008, 15:50 Рубрики:

Особо объяснять нечего. Пробуйте.

<?
$username 
"testuser";
$password "testpassword";
$title "Заголовок сообщения";
$text "Проверочное сообщение";
$year date("Y");
$month date("m");
$day date("d");
$hour date("H");
$min date("i");

$query '<?xml version="1.0"?>
<methodCall>
  <methodName>LJ.XMLRPC.postevent</methodName>
  <params>
    <param>
      <value>
        <struct>
          <member>
            <name>username</name>
            <value>
              <string>'
.$username.'</string>
            </value>
          </member>
          <member>
            <name>password</name>
            <value>
              <string>'
.$password.'</string>
            </value>
          </member>
          <member>
            <name>event</name>
            <value>
              <string><![CDATA['
.$text.']]></string>
            </value>
          </member>
          <member>
            <name>subject</name>
            <value>
              <string>'
.$title.'</string>
            </value>
          </member>
          <member>
            <name>lineendings</name>
            <value>
              <string>pc</string>
            </value>
          </member>
          <member>
            <name>year</name>
            <value>
              <int>'
.$year.'</int>
            </value>
          </member>
          <member>
            <name>mon</name>
            <value>
              <int>'
.$month.'</int>
            </value>
          </member>
          <member>
            <name>day</name>
            <value>
              <int>'
.$day.'</int>
            </value>
          </member>
          <member>
            <name>hour</name>
            <value>
              <int>'
.$hour.'</int>
            </value>
          </member>
          <member>
            <name>min</name>
            <value>
              <int>'
.$min.'</int>
            </value>
          </member>
        </struct>
      </value>
    </param>
  </params>
</methodCall>'
;

file_put_contents("temp.txt",$query);
$headers "POST /interface/xmlrpc HTTP/1.0\r\n"
$headers .= "User Agent: XMLRPC Client 1.0\r\n"
$headers .= "Host: www.livejournal.com\r\n"
$headers .= "Connection: Close\r\n"
$headers .= "Content-Type: text/xml\r\n"
$headers .= "Content-Length:".filesize("temp.txt")."\r\n";
$headers .= "\r\n";
$fp fsockopen("www.livejournal.com"80$errno$errstr5); 
if(
$fp)
{
    
fwrite($fp$headers.$query); 
    
$s '';
    while (!
feof($fp)) {
        echo 
fgets($fp128);
        
flush();
    }
    
fclose($fp);
}
?>

Постовой

Jaguar X-TYPE

Автомобили Одесса

Особенности временной работы

Реклама как способ убеждения

CorelDRAW Graphics Suite 12 Русская версия

Adobe Illustrator CS3

Добавить пост в:
Добавить на Habr

sj, 01:59, 2 декабря 2008

как сделать чтобы отправлялось в много жж блогов одним скриптом?

vovan, 07:09, 2 декабря 2008

:)

А это нужно немножко скрипт доработать. Если php не знаешь, пиши на vovanmozg@gmail.com обсудим.

capner, 06:59, 2 декабря 2008

Предлагаю модули распознавания капчи. В наличии много движков, в частности google, yahoo, mail.ru, myspace, vkontakte.ru, recaptcha.com, icq, DLE. Возможно написание распознавалки под ваш проект. Также пишем софт на си++ для win, nix

icq: 5-786-656
mail: captcher@gmail.com

Петя, 05:31, 19 декабря 2008

Подскажите пожалуйста, почему у меня такая ошибка появляется? заранее спасибо за помощь

<?xml version="1.0" encoding="UTF-8"?>faultStringApplication failed during request deserialization:
not well-formed (invalid token) at line 23, column 31, byte 570 at /usr/lib/perl5/XML/Parser.pm line 187
faultCodeClientHTTP/1.0 200 OK
Date: Fri, 19 Dec 2008 05:28:27 GMT
Server: Apache
Set-Cookie: ljuniq=i6B9Ns4od5g5zeT:1229664507:pgstats0:m0; expires=Tuesday, 17-Feb-2009 05:28:27 GMT; domain=.livejournal.com; path=/
Content-Length: 425
Content-Type: text/xml
SOAPServer: SOAP::Lite/Perl/0.60
Connection: close

vovan, 04:28, 20 декабря 2008

Это означает, что сервер считает, что в отправленных данных присутствуют символы, которых нет в кодировке UTF-8. У меня такая проблема появлялась, когда размер данных в заголовке (Content-Length) не соотвествовал реальному размеру отправляемых данных.
Попробуй отправить сообщение на английском языке.

Артем, 02:02, 17 февраля 2009

наше закрытое сообщество (на livejournal.com) читают посторонние, как это делается и как с этим можно бороться?
или лучше установить на своем сервере какойто скрипт? возможно чтото посоветуете из скриптов блогов?
заранее большое спасибо!

пс: извиняюсь за коммент не по теме)

vovan, 02:25, 18 февраля 2009

не компетентен в этом вопросе.

Иван, 03:38, 16 марта 2009

Спасибо огромное, съэкономил кучу времени!
А то все каких-то мутантов пишут. KISS рулит!

Иван, 03:49, 16 марта 2009

Я тут вот на радостях забыл совсем спросить :)
1) Как сделать чтобы можно было при изменениях на сайте (ну очепятка там какая) не добавлять а изменить этот уже добавленный пост в ЖЖ. Трекить локольно ийди назначенный ЖЖм посту, например, и слать его где-нибудь в качестве агрумента... Я просто шибко не хочу ковырять апи жжешный...
2) Ну и идеально было бы, конечно, в комьюнити разные постить...
Еще раз спасибо, славный скриптик, в моем вкусе :)

vovan, 23:50, 16 марта 2009

редактирование не приходилось делать. Копай в сторону LJ.XMLRPC.editevent

Вообще я использовал вот эту доку:
http://www.sixapart.com/developers/product_documentation/livejournal/

greensunj, 08:01, 17 апреля 2009

скажи плиз, а нельзя ли както обойтись без создания файла?

vovan, 16:02, 18 апреля 2009

Думаю, без создания файла обойтись можно. Но нужно разобраться с проблемой.
Способ с использованием файла сработал, поэтому я прекратил эксперименты по улучшению кода и оставил скрипт в том виде, который можно наблюдать в этом посте.

Пася, 14:57, 3 мая 2009

Привет.
Кроме логина и пароля не нужно ничео менять?
Все сделал, а он не работает. Ничего не постит :(

Купите мотик http://usedauto.com.ua/Yamaha_fzr250r_14856.html :)

vovan, 00:36, 4 мая 2009

Напиши больше информации об ошибке.

dimka, 17:48, 6 июля 2009

Все отлично отправляет. А есть ли похожие решения для других блогов?

Анонимный, 15:42, 30 июля 2009

нет, не работает. ничего не постит. ошибок не выдает (

defs, 20:02, 13 августа 2009

Блин Вовка, ты гений! Я уже тыкаю во все платные ссылки у тебя тут, надеюсь это внесёт мою маленькую лепту в возмещение твоих стараний )) Проверил - всё работает, без доработок, отличный простой скрипт. Именно то что искал, спасибо! Ну а у кого не работает - видимо экземпляр бракованный попался, требуйте замены! )))) А если серьёзно - 1) сокеты откройте, 2) файл скрипта в utf без bom...

vovan, 22:58, 13 августа 2009

Спасибо на добром слове :)

Andrey K., 11:55, 1 сентября 2009

Вов, спасибо огромное за решение.

А по поводу создания файла - можно использовать strlen($query)

vovan, 22:28, 2 сентября 2009

с strlen не работало. Это связано с мультибайтовыми кодировками. Возможно стоило попробовать mb_strlen

Andrey K., 18:58, 4 сентября 2009

У меня сейчас твой скрипт один в один, но со strlen. И все прекрасно работает)) На php5

Виталий, 10:39, 13 ноября 2009

$params = array("username" => $login, "password" => $password,
"event" => $body, "subject" => $title, "lineendings" => "unix",
"year" => date("Y"), "mon" => date("n"), "day" => date("j"), "hour" => date("G"), "min" => date("i"));
$request = xmlrpc_encode_request('LJ.XMLRPC.postevent', $params);
$curl = curl_init("http://www.livejournal.com/interface/xmlrpc");
curl_setopt($curl, CURLOPT_POSTFIELDS, $request);
curl_setopt($curl, CURLOPT_HTTPHEADER, array("Content-Type: text/xml"));
curl_setopt($curl, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($curl, CURLOPT_TIMEOUT, 30);
curl_exec($curl);
curl_close($curl);

vovan, 05:44, 14 ноября 2009

Спасибо за альтернативный вариант. С первого раза запустилось (правда возникла небольшая проблема с наличиемо модулей CURL и XMLRPC, и с кодировкой, но это всё легко исправилось). Спасибо.

Serg, 05:21, 20 ноября 2009

Доброго времени суток. Подскажите, пожалуйста, проблема такая:
Поменял только логин и пароль.
Выдает следующую ошибку
Warning: fsockopen(): unable to connect to www.livejournal.com:5222

Serg, 05:23, 20 ноября 2009

Сорри, порт тоже не менял
Warning: fsockopen(): unable to connect to www.livejournal.com:80

Serg, 05:29, 20 ноября 2009

Также еще $errno и $errstr в следующей строке
$fp = fsockopen("www.livejournal.com", 80, $errno, $errstr, 5);
принимают следующие значения
$errno=1 и $errstr=Operation not permitted

Помогите, пожалуйста

vovan, 14:27, 22 ноября 2009

Хм, странно. Можно попробвать запустить с другого компа. Или попробовать вариант, который прислал Виталий в комментарии чуть выше.

Serg, 16:13, 23 ноября 2009

Воспользовался вашим советом, отправил с другого компа, все заработала. Спасибо)

Serg, 19:31, 30 ноября 2009

Добрый вечер. Не могли бы вы подсказать, пожалуйста, как сделать следующее: Есть массив типа (заголовок, текст), я пытался отправить все в цикле, а выходит так, что первый пост из цикла отправляется нормально, а остальные нет. Сервер возвращает такой ответ:
HTTP/1.0 200 OK Date: Mon, 30 Nov 2009 19:24:29 GMT Server: Apache Set-Cookie: ljuniq=cBUsOBPOb0LMTNE:1259609069:pgstats0:m0; expires=Friday, 29-Jan-2010 19:24:29 GMT; domain=.livejournal.com; path=/ Content-Length: 410 Content-Type: text/xml SOAPServer: SOAP::Lite/Perl/0.60 Connection: close faultStringApplication failed during request deserialization: no element found at line 66, column 2, byte 1582 at /usr/lib/perl5/XML/Parser.pm line 187 faultCodeClient .

Если возможно, подскажите, пожалуйста.

vovan, 11:26, 1 декабря 2009

Добрый вечер. Есть такая проблема, но я не стал с ней разбираться. Скрипт за один раз почему-то отправляет один пост.

Cykooz, 10:15, 4 декабря 2009

Скажите, а кто нибудь потом побывал редактировать добавленный пост через веб-интерфейс ЖЖ?
У меня выдаёт ошибку на странице редактирования:
-----
Client error: Invalid text encoding: Cannot display this post. Please see http://www.livejournal.com/support/encodings.bml for more information.
-----
При этом пост нормально отображается на других страницах и ни каких проблем с кодировками нету.

Я правда скрипт делал не на PHP, а на Python и использовал для этого стандартный модуль xmlrpclib, но мне кажется что дело не в этом.

Dim Wap, 15:09, 5 марта 2010

Да, было такое. Это у вас в настройке ЖЖ не выставлена кодировка по умолчанию. После этого пост станет виден и его можно удалять/редактировать. Кодировки просто не соответствуют.

Cykooz, 07:45, 8 декабря 2009

Всё, спасибо, разобрался сам. Я не указал в запросе параметр 'ver'. Задал его значение в 1 и всё стало нормально.
http://livejournal.com/doc/server/ljp.csp.versions.html

Сергей Смирно, 14:57, 8 февраля 2010

Что заменить в коде, что бы постинг шел не в журнал, а в сообщество?

vovan, 12:37, 18 февраля 2010

Готового решения не дам, но могу посоветовать поковырять API LJ.

Org, 06:44, 10 февраля 2010

В Мазилле Ф. есть отличный плагин Depest ... Отлично справляется с отправкой в LJ

Отправить комментарий

Содержание этого поля является приватным и не предназначено к показу.
  • Адреса страниц и электронной почты автоматически преобразуются в ссылки.
  • Allowed HTML tags: <a> <em> <strong> <cite> <code> <ul> <ol> <li> <dl> <dt> <dd>
  • Строки и параграфы переносятся автоматически.

Подробнее о форматировании

КАПЧА
Защита от людей
9 + 4 =
Решите эту простую математическую задачу и введите результат. То есть для 1+3, введите 4.