목차

pageinfo
status
Draft

<!DOCTYPE markdown>

Mediawiki Tips

개요

미디어위키를 사용하는 데에 있어 유용한 tip들의 모음.

백업

각 페이지를 따로 내보내기

아래 내용은 최신 미디어위키(1.35 이상)에 해당한다. 그 이전 내용은 여기를 참고하라.

우선, sql에 접근하여 전체 페이지의 최신 revision을 하나의 파일로 dump한다.

SELECT page_title, page_touched, old_text
FROM revision,page,text,content,slots
WHERE page.page_latest=revision.rev_id AND revision.rev_id=slots.slot_revision_id AND slots.slot_content_id=CONVERT(SUBSTRING(content.content_address,4),INT) AND CONVERT(SUBSTRING(content.content_address,4),INT)=text.old_id AND page_namespace!='6' AND page_namespace!='8' AND  page_namespace!='12'
INTO OUTFILE '/var/tmp/wikipages.csv' 
FIELDS TERMINATED BY '\n' 
ESCAPED BY ''
LINES TERMINATED BY '\n@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@\n';

그 다음, 파이썬 등의 스크립트를 통해 이를 각각의 파일로 분리한다.

with open('wikipages.csv', 'r') as f:
    alltxt = f.read().split('\n@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@\n')
 
    for row in alltxt:
        one = row.split('\n')
        name = one[0].replace('/','-')
        try:
            del one[0]
            del one[0]
        except:
            continue
        txt = '\n'.join(one)
        of = open('~/wikipages/' + name + '.txt', 'w')
        of.write(txt)
        of.close()

Backlinks