Автоматическое создание статей из базы данных

LiStopaD

Осваивается
Регистрация
11.11.2016
Сообщения
7
Реакции
1
Здравствуйте! Установил Mediawiki.
Существует потребность размещения в Вики своего словаря терминов. Термины в базе данных mysql. Подскажите, как можно автоматически загрузить мои данные из базы данных в Вики. Т.е. создать на каждый термин - свою статью.
Вики размещена на сервере, на котором нет интернета.
 
Два варианта:
  • Ручками
  • Написать скрпит, который оптимизирует базу данных под базу данных mediawiki
 
Готовых инструментов нет? А не подскажите где можно узнать структуру базы данных Вики? Или скрипт, который добавляет в ВИКИ статью?
 
Как вариант, можно выгрузить данные из базы данных в текстовый файл, а затем с помощью бота создать страницы с этими данными.
 
Ну и через API вполне можно написать мостик.
 
Попробовал использовать API:EDIT
Пока в тестовом режиме.
Создал файл php

<?php
echo '<form action="api.php" method="post">
<p>action=edit <input type="text" name="action" /></p>
<p>title=TestPage <input type="text" name="title" /></p>
<p>section=new <input type="text" name="section" /></p>
<p>summary=Hello%20World <input type="text" name="summary" /></p>
<p>text=Hello%20everyone! <input type="text" name="text" /></p>
<p>watchlist=watch<input type="text" name="watch" /></p>
<p>basetimestamp=2016-12-13T12:58:50Z<input type="text" name="basetimestamp" /></p>
<p>token=d0563cd6dda7c5c3006124cba44e04e2584ff08a%2B%5C<input type="text" name="token" /></p>
<p><input type="submit" /></p>
</form>'
?>

Перед запуском скрипта запускаю скрипт Вики на получение токена

api.php?action=query&prop=info%7Crevisions&intoken=edit&titles=TestPage

Получаю на выходе это

{
"batchcomplete": "",
"warnings": {
"info": {
"*": "The intoken parameter has been deprecated."
}
},
"query": {
"pages": {
"-1": {
"ns": 0,
"title": "TestPage",
"missing": "",
"contentmodel": "wikitext",
"pagelanguage": "ru",
"pagelanguagehtmlcode": "ru",
"pagelanguagedir": "ltr",
"starttimestamp": "2016-12-13T12:58:50Z",
"edittoken": "d0563cd6dda7c5c3006124cba44e04e2584ff08a+\\"
}
}
}
}


После этого запускаю свой скрипт с добавлением соответственно из этого запроса переменных

starttimestamp": "2016-12-13T12:58:50Z
edittoken": "d0563cd6dda7c5c3006124cba44e04e2584ff08a+\

В токене, как описано в мануале вместо +\ вставляю %2B%5C

Но на выходе получаю такой ответ

This is the HTML representation of the JSON format. HTML is good for debugging, but is unsuitable for application use.

Specify the format parameter to change the output format. To see the non-HTML representation of the JSON format, set format=json.

See the complete documentation, or the API help for more information.

{
"warnings": {
"edit": {
"*": "The watch parameter has been deprecated."
}
},
"error": {
"code": "badtoken",
"info": "Invalid token",
"*": "See http://10.21.24.78/mediawiki/api.php for API usage"
}
}


В форму вставляю переменные из названия и отправляю данные. Пробовал через curl


// Задаем адрес удаленного сервера
$curl = curl_init("http://10.21.24.78/mediawiki/api.php");
// Передача данных осуществляется методом POST
curl_setopt($curl, CURLOPT_POST, 1);
// Задаем POST-данные
$data = 'title=TestPage&section=new&summary=Hello%20World&text=Hello%20everyone!&watch&basetimestamp=2016-12-13T12:51:49Z&token=00fe5d1c96685a051ff24437f2a8e930584feee5%2B%5C';
curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
// Выполняем запрос и выводим ответ в браузер
curl_exec($curl);
// Закрываем CURL соединение
curl_close($curl);


Ничего не получилось.
Подскажите, что я не так делаю.
 
Параметр токена устаревший. Неверный токен.
Верно понял сообщение?
Но в чём проблема?
Я запускал сначала код на получение параметров. Их копировал и вставлял в скрипт отправки POST запроса в api.php.
Может время не надо было вставлять?
 
Всем привет!
Решил я проблему.
Был предновогодний перерыв, и вот после праздников решил довести дело до конца))))))
Попробовал боты и то, что рекомендовали выше. Но не смог быстро всё это осилить в аспекте моей задачи.
В ходе поисков наткнулся на этот ресурс http://mwcsvimport.pronique.com/
Но мне он не понравился тем, что в бесплатной версии можно только 15 строк перевести в xml.
Подсмотрел структуру выходного файла (он же входной для импорта в медиавики).
Ну а там делов на 5 минут - написал скрипт на php, который создавал файлик из базы данных. Этот файлик скормил потом медиавики. Все отображается. Все статьи в медиавики.
Хочу поблагодарить всех, кто помог мне!!!
 
Назад
Верх