Как периодически создавать страницу с помощью вики-бота

Моя главная цель — получить страницу, разобрать текст и периодически создавать подстраницу в зависимости от текста. Чтобы получить страницу, создать и войти, у меня есть следующий код .Php версия-5.3.3, сервер: localhost

private function login($username, $password, $wiki) {
$response = $this->postAPI($wiki, 'api.php?', 'action=login&lgname=' . urlencode($username) . '&lgpassword=' . urlencode($password));
if ($response['login']['result'] == "Success") {
//Unpatched server, all done
} elseif ($response['login']['result'] == "NeedToken") {
//Patched server, going fine
$token = $response['login']['token'];
$newresponse = $this->postAPI($wiki, 'api.php?', 'action=login&lgname=' . urlencode($username) . '&lgpassword=' . urlencode($password) . '&lgtoken=' . $token);
if ($newresponse['login']['result'] == "Success") {
//All done
} else {
echo "Forced by server to wait. Automatically trying again.<br />\n";
sleep(10);
$this->login($username, $password, $wiki);
}
} else {
//Problem
if (isset($response['login']['wait']) || (isset($response['error']['code']) && $response['error']['code'] == "maxlag")) {
echo "Forced by server to wait. Automatically trying again.<br />\n";
sleep(10);
$this->login($username, $password, $wiki);
} else {
die("Login failed: " . $response . "\r<br />\n");
}
}
}

Функция для получения страницы:

  public function get_page($page, $wiki = "")//get page's content
{
$response = $this->callAPI($wiki, 'api.php?action=query&prop=revisions&titles=' . urlencode($page) . '&rvprop=content');
if (is_array($response)) {
$array = $response['query']['pages'];
$array = array_shift($array);
$pageid = $array["pageid"];
return $response['query']['pages'][$pageid]['revisions'][0]["*"];
} else {
echo "Unknown get_page error.<br />\n";
return false;
}
}

У меня проблема с логином. Я всегда заставляю сервер ждать. Автоматически повторная попытка независимо от моего пароля и идентификатора верна. Infact URI работает правильно, если задано вручную. И если я пытаюсь создать страницу или получить категорию, я получаю следующую ошибку:

Невозможно изменить информацию заголовка — заголовки уже отправлены (вывод запущен по адресу serverlocation / Phpwikibot.php: 188) в расположении сервера / includes / WebResponse.php

Может ли кто-нибудь помочь мне с этим вопросом?

0

Решение

Вы говорите «localhost», поэтому у вас есть доступ на стороне сервера, и вы должны использовать внутренний PHP API, а не веб-API. В частности, для редактирования страницы вы можете использовать maintenance/edit.php, Увидеть пример из реального мира Я использовал для некоторых вики Викимедиа:

#!/bin/bash
{
# Stuff
# Fetch stuff
echo -e $stuff
} | php edit.php --user "FuzzyBot" \
--bot --summary "Update stats" "Meta:Babylon/Translation_stats"
0

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector