Жизнь это - мгновения, промежутки. Ночь ушла, солнце скоро взойдет. Сделайте эти промежутки настолько прекрасными насколько это возможно - наполненными молчанием, наполненными благодарностью к существованию, которое дало вам шанс, благодарностью по отношению ко всем тем, кто вам помог. И ждите.


Показаны сообщения с ярлыком автопостинг. Показать все сообщения
Показаны сообщения с ярлыком автопостинг. Показать все сообщения

1 мая 2017 г.

Как опубликовать пост в WordPress через xml-rpc?

Как опубликовать пост в WordPress через xml-rpc?

Нужен удобный и легкий инструмент, чтобы публиковать посты на блоге, основанном на WordPress.

Может быть есть инструменты на каких-либо языках? Каких - не важно, главное, чтобы просто.
  • Вопрос задан 
  •  
  •  3215 просмотров
РЕШЕНИЯ ВОПРОСА 2
Пригласить эксперта
ОТВЕТЫ НА ВОПРОС 2

Скрипт постинга в инстаграм

Скрипт постинга в инстаграм


Author Роман Чернышов    Category PHP     Tags  Комментариев 0 Дата 2 Янв
instagram Скрипт постинга в инстаграмПриветствую! Как много в этом мире интересного, особенно интересных товаров, которые так и просятся что-бы их купили, но увы за всем не уследишь, всё не изучишь и уж тем более не купишь. По этому в погоне за вниманием потенциальных покупателей, клиентов и вообще за публикой, используются все доступные способы. В том числе широкое освещения своей продукции или своей личности в социальных сетях. Если раньше больше всего были актуальны ВК и Одкл, то сегодня популярность постепенно завоевывает Instagram, которому все больше и больше уделяется внимания пользователей, в ущерб иным соцсетям. На этом фоне, среди торговцев стало актуальным, размещение в инстаграм фотографий продаваемых ими товаров, что несомненно очень удобно и хорошо для повышения числа продаж.
Но как автоматизировать процесс публикации фотографий в инстаграм, например с сайта интернет магазина? Для этого подойдет хорошее решение, скрипт PHP для постинга фотографий в инстаграм в автоматическом режиме с нужным описанием и хештегами. Мною был разработан и написан такой скрипт, который легко интегрируется в любой действующий сайт, и в последующем позволяет публиковать контент в Instagram, как в автоматическом режиме по расписанию, так и в ручном.
Данное решение также можно интегрировать в сайты совместных покупок, интернет магазины, блоги и так далее. Все технические моменты я как всегда беру на себя, все что вам остается сделать — это оформить заказ на его интеграцию.
Более того, данное решение можно использовать автономно без сайта и каталога товаров. При желании есть возможность реализовать постинг данных из Excel таблицы (ссылка на фото, описание, хештеги). Таким образом скриптом может пользоваться любой желающий, публикуя большие объемы контента в автоматическом режиме прямиком в инстаграм.
Если вам нужен простой скрипт постинга фото, то с ним вы можете ознакомиться ниже:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
 time(), 
                        'photo' => '@'.$filename);
        return $post_data;
    }
}
 
 
// Set the username and password of the account that you wish to post a photo to
$username = 'ig_username';
$password = 'ig_password';
 
// Set the path to the file that you wish to post.
// This must be jpeg format and it must be a perfect square
$filename = 'pictures/test.jpg';
 
// Set the caption for the photo
$caption = "Test caption";
 
// Define the user agent
$agent = GenerateUserAgent();
 
// Define the GuID
$guid = GenerateGuid();
 
// Set the devide ID
$device_id = "android-".$guid;
 
/* LOG IN */
// You must be logged in to the account that you wish to post a photo too
// Set all of the parameters in the string, and then sign it with their API key using SHA-256
$data ='{"device_id":"'.$device_id.'","guid":"'.$guid.'","username":"'.$username.'","password":"'.$password.'","Content-Type":"application/x-www-form-urlencoded; charset=UTF-8"}';
$sig = GenerateSignature($data);
$data = 'signed_body='.$sig.'.'.urlencode($data).'&ig_sig_key_version=4';
$login = SendRequest('accounts/login/', true, $data, $agent, false);
 
if(strpos($login[1], "Sorry, an error occurred while processing this request.")) {
    echo "Request failed, there's a chance that this proxy/ip is blocked";
} else {            
    if(empty($login[1])) {
        echo "Empty response received from the server while trying to login";
    } else {            
        // Decode the array that is returned
        $obj = @json_decode($login[1], true);
 
        if(empty($obj)) {
            echo "Could not decode the response: ".$body;
        } else {
            // Post the picture
            $data = GetPostData($filename);
            $post = SendRequest('media/upload/', true, $data, $agent, true);    
 
            if(empty($post[1])) {
                 echo "Empty response received from the server while trying to post the image";
            } else {
                // Decode the response 
                $obj = @json_decode($post[1], true);
 
                if(empty($obj)) {
                    echo "Could not decode the response";
                } else {
                    $status = $obj['status'];
 
                    if($status == 'ok') {
                        // Remove and line breaks from the caption
                        $caption = preg_replace("/\r|\n/", "", $caption);
 
                        $media_id = $obj['media_id'];
                        $device_id = "android-".$guid;
 
                        $data = '{"device_id":"'.$device_id.'",
    "guid":"'.$guid.'",
    "media_id":"'.$media_id.'",
    "caption":"'.trim($caption).'",
    "device_timestamp":"'.time().'",
    "source_type":"5",
    "filter_type":"0",
    "extra":"{}",
    "Content-Type":"application/x-www-form-urlencoded; charset=UTF-8"}';   
 
                        $sig = GenerateSignature($data);
                        $new_data = 'signed_body='.$sig.'.'.urlencode($data).'&ig_sig_key_version=4';
 
                       // Now, configure the photo
                       $conf = SendRequest('media/configure/', true, $new_data, $agent, true);
 
                       if(empty($conf[1])) {
                           echo "Empty response received from the server while trying to configure the image";
                       } else {
                           if(strpos($conf[1], "login_required")) {
                                echo "You are not logged in. There's a chance that the account is banned";
                            } else {
                                $obj = @json_decode($conf[1], true);
                                $status = $obj['status'];
 
                                if($status != 'fail') {
                                    echo "Success";
                                } else {
                                    echo 'Fail';
                                }
                            }
                        }
                    } else {
                        echo "Status isn't okay";
                    }
                }
            }
        }
    }
}
?>
Инстаграм — по статистике одна из самых быстрорастущих соцсетей, в российском сегменте интернета занимающая 5 место по числу пользователей, и данный показатель только растет. Чем не могут похвастаться другие популярные соцсети который уже были на пике своей успешности и на текущий момент показывают отрицательную динамику роста, возможно отчасти это связано с развитием мобильного сегмента интернет.

PHP скрипт автоматического постинга в LiveJournal (ЖЖ)

Опять-же, аналогично автопостингу в WordPress, я перерыл половину инета, чтоб найти нормальный php-скрипт постинга в ЖЖ. И опять-же, оказалось, что надо не искать, а самому разобраться с библиотекой XMLRPC, с помощью которой возможно постить как в WordPress, так и в LiveJournal.

Оказалось, это еще проще, чем писать оснастку для постинга в WP. Качаем XML-RPC библиотеку и смотрим код:
01
02//входные данные
03$login 'crawler';
04$passw 'i-love-leksus';
05$subj 'Тестовый пост в ЖЖ';
06$text 'Если вы читаете этот текст у себя в ЖЖ - значит, тест прошел! ура!';
07 
08// включаем библиотеку XML-RPC
09include("lib/xmlrpc.inc");
10 
11// Задаем кодировку
12$xmlrpc_internalencoding 'UTF-8';
13 
14// Задаем время поста (А не время постинга! Учтите, что пост будет опубликован сразу!)
15$date = time();
16$year date("Y"$date);
17$mon date("m"$date);
18$day date("d"$date);
19$hour date("G"$date);
20$min date("i"$date);
21 
22// Перед формированием массива данных, нужно удостовериться, что данные subj и text находятся в правильной кодировке! Если кодировка не та, конвертируем в UTF-8
23 
24// заполняем массив с необходимыми переменными
25$post array(
26  "username" => new xmlrpcval($login"string"),
27  "password" => new xmlrpcval($passw"string"),
28  "event" => new xmlrpcval($text"string"),
29  "subject" => new xmlrpcval($subj"string"),
30  "lineendings" => new xmlrpcval("unix""string"),
31  "year" => new xmlrpcval($year"int"),
32  "mon" => new xmlrpcval($mon"int"),
33  "day" => new xmlrpcval($day"int"),
34  "hour" => new xmlrpcval($hour"int"),
35  "min" => new xmlrpcval($min"int"),
36  "ver" => new xmlrpcval(2, "int")
37);
38 
39// на основе массива создаем структуру
40$post2 array(
41  new xmlrpcval($post"struct")
42);
43 
44// создаем XML сообщение для сервера
45$f new xmlrpcmsg('LJ.XMLRPC.postevent'$post2);
46 
47// описываем сервер
48$c new xmlrpc_client("/interface/xmlrpc""www.livejournal.com", 80);
49$c->request_charset_encoding = "UTF-8";
50 
51// по желанию смотрим на XML-код того что отправится на сервер
52//echo nl2br(htmlentities($f->serialize()));
53 
54// отправляем XML сообщение на сервер
55$r $c->send($f);
56         
57// анализируем результат
58if(!$r->faultCode()) {
59  // сообщение принято успешно и вернулся XML-результат
60  $v = php_xmlrpc_decode($r->value());
61  print_r($v);
62else {
63  // сервер вернул ошибку
64  print "An error occurred: ";
65  print "Code: ".htmlspecialchars($r->faultCode());
66  print "Reason: '".htmlspecialchars($r->faultString())."'\n";
67}
68?>