2012-09-27 42 views
2

在Ubuntu平臺上,我安裝了漂亮的小perl腳本如何使用Perl Text-MediawikiFormat將mediawiki轉換爲xhtml?

libtext-mediawikiformat-perl - Convert Mediawiki markup into other text formats 

它可on cpan。我不熟悉perl,也不知道如何去使用這個庫來編寫一個perl腳本來將mediawiki文件轉換爲html文件。例如我想只是有一個劇本,我可以運行諸如

./my_convert_script input.wiki > output.html 

(也許還指定基本URL等),但不知道從哪裏開始。有什麼建議麼?

回答

1

Perl庫Text::MediawikiFormat並非真正用於獨立使用,而是作爲大型應用程序中的格式化引擎。

documentation at CPAN實際上確實展示瞭如何使用該庫的方法,並且確實注意到其他模塊可能會爲一次性轉換提供更好的支持。

你可以試試這個(未經測試)的單行

perl -MText::MediawikiFormat -e'$/=undef; print Text::MediawikiFormat::format(<>)' input.wiki >output.html 

雖然這違背了該模塊的整點(和定製能力)。

我確定有人已經想出了一種更好的方法來轉換單個MediaWiki文件,因此這裏是mediawiki網站上的list of alternative MediaWiki processors。這SO question coud也有幫助。

其他標記語言(如Markdown)可更好地支持單個文件轉換。 Markdown特別適合技術文檔和鏡像電子郵件約定。 (另外,它是用來在此網站。)


在Ubuntu倉庫的libfoo-bar-perl包被預編譯Perl模塊。通常,這些將通過cpancpanm進行安裝。儘管其中一些庫包含腳本,但大多數不包含腳本,並不意味着獨立應用程序。

+0

感謝您的回答。我開始討論這個問題以及一系列可選的MediaWiki處理器,但是在嘗試了一些不起作用或者僅支持mediawiki語法的一些子集之後,我想我最好去別的地方看看。 (從SO中得到的其他答案也沒有用,因爲pandoc只能用於mediawiki的一種方式)。 – cboettig

+0

我完全同意減價會更好 - 我的目標是將所有舊的內容從舊的mediawiki頁面中提取出來,並將其全部轉換爲降價。令人驚訝的是,找到這樣的mediawiki工具並不容易,因爲它比降價要早得多。 – cboettig

+1

@cboettig一個可能的原因是,沒有真正的方法來將wikitext轉換爲降價。最多隻能將維基文本的一個子集轉換爲降價,並且這仍然很困難,因爲wikitext不是定義的標記語言。使用[Parsoid](https://www.mediawiki.org/wiki/Parsoid)可以讓事情變得更容易,這使得wiki文本解析更加「科學化」。 – Nemo

3

我相信@amon是正確的,我在這個問題中引用的perl庫不是我提出的任務的正確工具。

我最終使用帶有action =「parse」的mediawiki API使用mediawiki引擎轉換爲HTML,結果比我試過的任何替代解析器都更可靠proposed on the list。 (然後,我使用pandoc將我的html轉換爲markdown。)mediawiki API也處理類別和其他元數據的提取,並且我只需將基礎url附加到內部圖像和頁面鏈接。

鑑於頁面標題和基礎url,我最終將其寫爲R函數。

wiki_parse <- function(page, baseurl, format="json", ...){ 
    require(httr) 
    action = "parse" 
    addr <- paste(baseurl, "/api.php?format=", format, "&action=", action, "&page=", page, sep="") 
    config <- c(add_headers("User-Agent" = "rwiki"), ...) 
    out <- GET(addr, config=config) 
    parsed_content(out) 
} 
+0

巨大的+1不重新發明MediaWiki分析器。 :) – Nemo