2012-09-27 2 views
2

, 내가 사용할 수 on cpan 수있는 좋은 작은 펄 스크립트어떻게 Perl Text-MediawikiFormat을 사용하여 mediawiki를 xhtml로 변환합니까? 우분투 플랫폼에서

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

를 설치했습니다. 필자는 perl에 익숙하지 않고이 라이브러리를 사용하여 mediawiki 파일을 html 파일로 변환하는 perl 스크립트를 작성하는 방법을 모릅니다. 예 : 난 그냥

./my_convert_script input.wiki > output.html 

은 (아마도 또한 기본 URL 등을 지정)과 같은 I을 실행할 수있는 스크립트를 가지고 좋아하지만 어디서부터 시작 모를 것입니다. 어떤 제안?

답변

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도 도움이 될 것입니다.

Markdown과 같은 다른 마크 업 언어는 단일 파일 변환을 더 잘 지원합니다. Markdown은 특히 기술 문서 및 미러링 전자 메일 규칙에 적합합니다. (또한,이 위치에 사용된다.) 우분투 저장소에


libfoo-bar-perl 패키지 펄 모듈을 미리 컴파일된다. 일반적으로 이들은 cpan 또는 cpanm을 통해 설치됩니다. 이러한 라이브러리 중 일부는 스크립트를 포함하지만 대부분은 독립 실행 형 응용 프로그램이 아닙니다.

+0

답변 해 주셔서 감사합니다. 나는 그 바로 그 질문과 대체 MediaWiki 프로세서의 목록으로 시작했지만, 작동하지 않거나 미디어 위키 구문의 일부 하위 세트 만 지원하면 몇 가지 시도를 한 후에 다른 곳에서 더 잘 볼 생각입니다. (그로부터의 다른 답변은 pandoc이 mediawiki를 위해서만 한 방향으로 만 가기 때문에 유용하지 않습니다.) – cboettig

+0

나는 markdown이 더 좋아질 것이라는 데 전적으로 동의합니다. 여기 내 목표는 내 오래된 미디어 위키 페이지에서 모든 오래된 콘텐츠를 꺼내서이 모든 이유 때문에이 모든 것을 markdown으로 변환하는 것입니다.마크 다운보다 훨씬 오래되었다는 점을 고려하면 미디어 위키 도구를 찾는 것이 더 쉽지 않다는 것은 놀라운 일입니다. – cboettig

+1

@cboettig 가능한 한 가지 이유는 wikitext를 markdown으로 변환 할 실제 방법이 없다는 것입니다. 기껏해야 위키 텍스트의 일부를 마크 다운으로 변환 할 수 있으며 위키 텍스트가 정의 된 마크 업 언어가 아니기 때문에 여전히 어려울 것입니다. [Parsoid] (https://www.mediawiki.org/wiki/Parsoid)를 사용하면 wikitext 구문 분석을 "과학적"으로 만들면 더 쉬울 수도 있습니다. – Nemo

3

나는 @amon이 내가 perl 라이브러리에서 내가 언급 한 내용이 내가 제안한 작업에 적합한 도구가 아니라고 생각한다.

proposed on the list의 대체 파서보다 훨씬 안정적인 것으로 밝혀진 mediawiki 엔진을 사용하여 HTML로 변환하려면 "구문 분석"작업과 함께 mediawiki API을 사용했습니다. (필자는 pandoc을 사용하여 내 html을 마크 다운으로 변환했습니다.) mediawiki API는 카테고리 및 기타 메타 데이터 추출도 처리하며 내부 URL과 페이지 링크에 기본 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

MediaWiki 파서를 재발 명하지 않기 위해 거대한 +1. :) – Nemo