Изменить викитекст из Викисловаря на читаемый текст

Как заменить викитекст (как показано в исходном коде Викисловаря) на читаемый текст (как показано на веб-сайте Викисловаря).

Итак, этот источник:

{{ru-verb|ходи́ть|impf|pf=сходи́ть}}

Следует рассматривать как:

ходи́ть • (xodítʹ) impf (perfective сходи́ть)

В Викитексте он называется «Шаблон», но как преобразовать этот шаблон в удобочитаемый текст, я не могу найти в документации.

У кого-нибудь была похожая проблема раньше?


person phoenix84    schedule 07.03.2020    source источник


Ответы (1)


Используйте API анализа для получения вывода HTML.

Вы можете отобразить HTML, передав его в свой браузер...

Я не думаю, что MediaWiki может напрямую генерировать простой текстовый вывод, но если это то, что нужно, можно использовать стороннюю библиотеку. В Python и с использованием Beautiful Soup и его get_text код выглядит следующим образом:

>>> BeautifulSoup(
        requests.get(
            'https://en.wiktionary.org/w/api.php?action=parse&text=%7B%7Bru-verb|%D1%85%D0%BE%D0%B4%D0%B8%CC%81%D1%82%D1%8C%7Cimpf|pf=%D1%81%D1%85%D0%BE%D0%B4%D0%B8%CC%81%D1%82%D1%8C%7D%7D&prop=text&title=page_title&formatversion=2&format=json'
        ).json()['parse']['text']
    ).get_text(strip=True)
'ходи́ть•(xodítʹ)impf(perfectiveсходи́ть)'

Обновление:

Используйте strip_tags и html_entity_decode в PHP:

$ php -a
Interactive mode enabled

php > $json = file_get_contents('https://en.wiktionary.org/w/api.php?action=parse&text=%7B%7Bru-verb|%D1%85%D0%BE%D0%B4%D0%B8%CC%81%D1%82%D1%8C%7Cimpf|pf=%D1%81%D1%85%D0%BE%D0%B4%D0%B8%CC%81%D1%82%D1%8C%7D%7D&prop=text&title=page_title&formatversion=2&format=json');
php > $json = json_decode($json, TRUE);
php > $html = $json['parse']['text'];
php > $pain_text = strip_tags(html_entity_decode ($html));
php > echo $pain_text;
ходи́ть • (xodítʹ) impf (perfective сходи́ть)
person AXO    schedule 08.03.2020
comment
спасибо, я не знаю, как использовать его в PHP :). Я постараюсь узнать или дождусь другого ответа, но большое спасибо, это, вероятно, поможет мне. Спасибо! - person phoenix84; 10.03.2020