사용자:Dus2000/query.php
위키백과 ― 우리 모두의 백과사전.
이 문서는 미디어위키 API 추가 기능인 query.php의 설명서를 번역해 둔 것입니다. 한국어 위키백과 query.php의 주소는 http://ko.wikipedia.org/w/query.php입니다. |
- 현재 mw:API를 보시면 공식적인 API가 api.php를 통해 지원되고 있습니다. Yuri씨의 사용자 문서에도 서서히 api.php로 query.php가 흡수되고 있다는군요. 조만간 api.php도 번역해 놓을테니 누가 재미있는 어플리케이션 좀 만들어주세요~ (전 php-0 OTL)
목차 |
[편집] 요약
이 API는 당신의 어플리케이션이 미디어위키 서버에서 직접적으로 정보를 제공받을 수 있게 합니다. 하나 이상의 사이트나 페이지 목록에 대한 정보가 전송됩니다. 정보는 xml, json, php, yaml, wddx 등 기계 판독, 또는 사람이 읽을 수 잇는 형식으로 제공됩니다. 쿼리 한 번에 하나 이상의 정보를 요구할 수 있습니다.
[편집] 사용법
query.php ? format=... & what=...|...|... & titles=...|...|... & ...
[편집] 주 파라메터
- format - 결과물의 포맷을 지정. 가능한 포맷은 아래를 참조하세요.
- what - 전송받을 정보를 지정. 가능한 명령어 목록은 아래를 참조하세요.
파이프 '|'을 구분자로 사용해 두 개 이상의 명령어 결과값을 동시에 전송받을 수 있습니다. (이하 모든 '구분자'는 "|"을 지칭합니다.) - titles - 제목, 구분자 사용
- pageids - 문서 ID, 구분자 사용
- revids - 판 번호, 구분자 사용
추가 정보는 아래를 참조하세요. - noprofile - 제공되는 정보에서 sql 결과값 나오는 시간(execution time)을 숨깁니다.
- proxysite - Access alternative site (wikipedia/wikinews/wikiquote/...)
- proxylang - Access alternative language (en/ru/he/commons/...)
- 프록시는 브라우저 기반 스크립트를 위한 보안 회피책이지만 가급적 사용하지 마세요. 사용자는 익명으로 처리되며, 같은 클러스터에서 호스팅하는 사이트와 언어만 가능합니다.
[편집] 예시
query.php?what=links|templates&titles=User:Dus2000
이 쿼리는 User:Dus2000 문서에 사용된 모든 틀과 링크의 목록을 요청합니다.
query.php?what=revisions&titles=위키백과:대문&rvlimit=100&rvstart=20060401000000&rvcomments
대문의 최근 편집 100회를 편집 요약과 함께 요청하되, 2006년 4월 1일 00:00:00부터의 것으로 한정.
query.php?what=revisions&revids=1&rvcomments
(Get revision 1 with some of its properties) 뭔소린지 모르겠는데 Access Denied까지 떠서 GG.
[편집] Notes
[느림]이라고 표시된 쿼리는 데이터베이스에 부하를 주는 것으로 알려져 있습니다. 사용 빈도를 최적화해주세요.
어떤 명령어는 결과값 끝에 <query> 엘리먼트를 추가합니다. 예를 들어
query.php?what=allpages&aplimit=3
는 엘리먼트
<query> <allpages next="$" /> </query>
가 맨 끝에 덧붙습니다. 이는 결과값 개수 제한에 의해 목록이 잘렸으며 잘린 결과값은 $ 부터라는 의미입니다. 다음 페이지를 요청하려면 '__from' 쿼리를 주면 됩니다.
query.php?what=allpages&aplimit=3&apfrom=$
<query> 엘리먼트는 데이터베이스와 전체 프로세스에 최적화를 요청할 수 있도록 ms 단위의 시간을 추가로 요구합니다.
[편집] 지원 명령어
[편집] 전체 사이트
- info - 전체 사이트 정보
- query.php?what=info
- namespaces - 이름공간 정보
- query.php?what=namespaces
- userinfo - 현재 사용자의 정보. 'name' 엘리먼트는 항상 나오게 되며, 해당사항이 있다면 'anonymous'나 'bot' 플래그도 항상 출력된다.
- uiisblocked - 차단된 사용자나 IP라면 'blocked' 플래그 추가.
- uihasmsg - 대기중인 메시지가 있다면 'messages' 플래그 추가.
- uiextended - 권한이나 사용자 그룹 등 부가 정보 엘리먼트 추가. ('groups', 'rights')
- uioptions - 사용자 환경 설정 중에서 지정한 옵션의 결과값 추가. 구분자 사용. 옵션의 전체 목록은 user.php 소스 참조.
- query.php?what=userinfo
- query.php?what=userinfo&uiisblocked&uihasmsg&uiextended
- query.php?what=userinfo&uioptions=timecorrection|skin === 사용자의 타임존(timezone)과 사용중인 스킨 값을 추가.
- recentchanges - 최근 바뀜을 출력.
- rcfrom - 타임스탬프를 입력해 그 시간 이후의 기여만 반영. 역순으로 정렬됨. (이라고는 하는데 정렬 안 되는 듯. The list order reverses)
- rclimit - 받을 결과값 수. 페이지가 여러번 바뀐다면 작게 할 수 있음.
- rchide - 실제 최근 바뀜에서의 '숨기기' 기능에 대응. minor(잔글), bots(봇), anons(익명 사용자), liu(로그인한 사용자) anons와 liu를 동시에 입력할 수는 없음. (...당연한 거 아닌가.)
- query.php?what=recentchanges&rchide=liu|bots === 로그인한 사용자와 봇의 기여를 제외
- allpages - 전체 문서 목록을 출력.
- aplimit - 받을 결과값 수
- apfrom - 어디부터 출력할 지 지정
- apnamespace - 검색범위 이름공간 지정. 기본값은 0 (일반) (ID로 지정해야 합니다.)
- apfilterredir - 넘겨주기 문서 필터. 기본값은 'all', redirects(넘겨주기만) nonredirects(넘겨주기 제외)
- query.php?what=allpages&aplimit=50
처음부터 50개 - query.php?what=allpages&aplimit=20&apnamespace=10&apfrom=C&apfilterredir=nonredirects
틀 이름공간, C부터, 넘겨주기 제외
- nolanglinks - 인터위키 없는 문서 목록을 출력. 넘겨주기 문서는 알아서 걸러냄.
- nllimit - 받을 결과값 수
- nlfrom - 어디부터 출력할 지 지정
- nlnamespace - 검색범위 이름공간 지정. 기본값은 '0' (일반)
- query.php?what=nolanglinks&nllimit=10&nlfrom=A
- category - 분류 목록을 출력.
- cptitle - 분류 이름, '분류:' 이름공간 덧머리는 붙여도 안 붙여도 됨.
- cplimit - 받을 결과값 수
- cpfrom - 어디부터 출력할 지 지정. 기본값은 처음부터.
- cpnamespace- 검색범위 이름공간 지정. 기본값은 전체.
- cpextended - sortkey와 타임스탬프 등 부가 정보 추가.
- query.php?what=category&cptitle=날짜
- query.php?what=category&cptitle=시간&cpnamespace=14 === 분류 '시간'의 하위 분류 ('cptitle=분류:시간'으로 입력해도 똑같이 동작)
- users - 사용자 목력을 출력.
- usfrom - 어디부터 출력할 지 지정
- uslimit - 받을 결과값 수
- query.php?what=users&usfrom=Y
[편집] 특정 문서에만 적용
- redirects - 넘겨주기 문서라면 문서 ID와 이중 넘겨주기 등 부가정보를 제공.
- query.php?what=redirects&titles=백:사
- query.php?what=recentchanges|redirects === 최근 바뀜 문서 중에 넘겨주기 문서가 있다면 부가정보를 제공할 것.
- permissions - 편집 권한이 있는지 부가정보를 제공. 결과값은 true/false로 나옴.
- prcanmove - 이동 권한도 함께 확인.
- query.php?what=permissions&titles=Main_page|User%20Talk:Yurik
- query.php?what=recentchanges|permissions&prcanmove === 최근 바뀜 문서들의 편집, 이동 권한 유무를 제공할 것.
- links - 문서에 들어있는 링크 목록을 출력.
- query.php?what=links&titles=MediaWiki|Wikipedia
- langlinks - 인터위키 목록을 출력
- query.php?what=langlinks&titles=MediaWiki|Wikipedia
- templates - 문서에 사용된 틀 목록을 출력
- query.php?what=templates&titles=Main_Page
- categories - 문서가 속한 분류 목록을 출력
- clextended - sortkey와 타임스탬프 등 부가 정보 추가
- query.php?what=categories&titles=Albert%20Einstein&clextended
- revisions - 문서 편집 내력 - 여러 문서가 지정된 경우 각 문서마다 출력
- rvuniqusr - 한 기여자가 여러 번 기여한 경우 마지막 한 번만 출력. (원문 직역-#rvlimit을 '기여자'에 적용) [느림]
- rvcomments - 편집 요약 함께 출력. (comment=)
- rvcontent - 각 판의 본문 쌩으로 출력. (출력 대상인 이전판을 전부. 너무 많은 걸 요구하면 뻗어버리기도;;) [느림]
- rvlimit - 각 문서마다 받을 결과값 수. 기본값은 10, 'revids'를 지정했을 경우 0.
- rvoffset - 결과가 너무 길어지면 이것으로 페이징할 수 있습니다. [폐물] 곧 사라집니다.
- rvstart/rvend - 타임스탬프로 검색범위 시간을 지정.
- rvrbtoken - 관리자가 이 옵션을 지정할 경우, 편집 취소 토큰을 함께 출력.
- query.php?what=revisions&titles=위키백과:대문&rvlimit=10&rvcomments === 대문 편집 내력 마지막 10건
- query.php?what=revisions&titles=위키백과:대문&rvuniqusr&rvlimit=3&rvcomments === 마지막으로 편집한 3명의 마지막 편집 1건씩
- backlinks - 단순 링크만 걸려있는 글의 목록.
- blfilter - Of all given pages, which should be queried: 'redirects', 'nonredirects', 'existing' (blue links, default), or 'all' (red links)
- blnamespace - 검색범위 이름공간 지정. 기본값은 전체.
- bllimit - 받을 결과값 수
- blcontfrom - 어디부터 출력할 지 지정.
- query.php?what=backlinks&titles=Main%20Page&bllimit=10
- embeddedin - 이 문서를 포함하는 글을 검색. (틀처럼)
- eifilter - Of all given pages, which should be queried: 'redirects', 'nonredirects', 'existing' (blue links, default), or 'all' (red links)
- einamespace - 검색범위 이름공간 지정. 기본값은 전체.
- eilimit - 받을 결과값 수
- eicontfrom - 어디부터 출력할 지 지정.
- query.php?what=embeddedin&titles=Template:Stub&eilimit=10
- imagelinks - 이 이미지를 사용하는 문서를 검색.
- ilfilter - Of all given images, which should be queried: 'existing', 'all' (default, includes non-existent or those stored on Wikimedia Commons)
- ilnamespace - 검색범위 이름공간 지정. 기본값은 전체.
- illimit - 받을 결과값 수
- ilcontfrom - 어디부터 출력할 지 지정.
- query.php?what=imagelinks&titles=Image:HermitageAcrossNeva.jpg&illimit=10
- usercontribs - 사용자 기여 내역 - 여러 사용자가 지정된 경우 각 사용자마다 출력. (이 명령어만 단독으로 쓸 때는 사용자 명단을 titles=user:xxx로 지정할 수도 있음.)
- uccomments - 편집 요약 함께 출력.
- uclimit - 각 사용자마다 받을 결과값 수.
- uctop - 최신 필터. 'all' (기본값), 'only' (문서의 현재 상태인 편집만), 'exclude' (현재 상태가 아닌 편집만)
- ucstart/ucend - 타임스탬프로 검색범위 시간 지정.
- ucrbtoken - 관리자가 이 옵션을 지정할 경우, 편집 취소 토큰을 함께 출력.
- query.php?what=usercontribs&titles=User:YurikBot&uclimit=20&uccomments
- contribcounter - 사용자 기여 카운터
- query.php?what=contribcounter&titles=User:Yurik
- imageinfo - 그림 목록 출력. 그림 크기와 올린 사람, 타임스탬프와 코멘트.
- iiurl - 그림 URL 추가
- iihistory - 과거 버전의 그림도 함께 출력. (iiurl과 함께 쓰면 충돌 발생)
- iishared - Include image info from the shared image repository (commons)
- query.php?what=allpages|imageinfo&apnamespace=6&aplimit=10&iiurl === 모든 문서 목록, 그림 이름공간으로 한정, 처음 10개의 이미지 | 그림 정보를 URL과 함께 출력
- content - 문서 내용 전체를 출력. [느림] 서버 부하를 막기 위해 사용 횟수를 최적화해주십시오.
- revisions와 rvcontent를 이용해 같은 결과를 얻을 수 있음
- query.php?what=content&titles=위키백과:대문
[편집] 지원 포맷
- xmlfm - HTML 내 XML (기본값)
- indent시키고 구문강조를 준 XML로 출력됨.
- nousage 파라메터를 주지 않으면 에러 발생시 설명서를 출력하므로 주의.
- query.php?what=info&format=xmlfm
- jsonfm - HTML 내 JSON
- query.php?what=info&format=jsonfm
- yamlfm - HTML 내 YAML
- query.php?what=info&format=yamlfm
- txt - PHP의 print_r() 결과값 쌩으로 출력 (HTML) [1]
- query.php?what=info&format=txt
- dbg - var_export()를 이용한 PHP 소스코드 (HTML) [2]
- query.php?what=info&format=dbg
- xml
- 'xmlindent' 파라메터로 indent를 줄 수 있음.
- nousage 파라메터를 주지 않으면 에러 발생시 설명서를 출력하므로 주의.
- 인터넷 익스플로러는 text/xml 출력시 많은 문제를 야기하는 것으로 알려져 있습니다. 어플리케이션의 디버그 등을 할 때는 다른 웹 브라우저를 쓰거나 xmlfm 파라메터를 써 주세요.
- query.php?what=info&format=xml
- php - serialize()를 사용한 serialize된 PHP [3]
- query.php?what=info&format=php
- wddx - WDDX (Web Distributed Data eXchange format)
- query.php?what=info&format=wddx
- json: query.php?what=info&format=json
- yaml: query.php?what=info&format=yaml
[편집] 바깥 고리
- en:User:Yurik/Query_API-홈페이지
- en:User talk:Yurik/Query_API-건의
- [SVN-변동내역과 익스텐션 다운로드
[편집] Credit
이 기능은 Yuri Astrakhan이 작성하고 유지중입니다. 코멘트와 건의는 en:User talk:Yurik으로 해 주시면 됩니다.
이 추가 기능은 Yuri Astrakhan (en:User:Yurik)), Tim Starling (en:User:Tim Stariling), Daniel Kinzler(de:User:Duesentrieb)의 IRC 채팅의 결과물입니다. 처음에는 Tim에 의해 인터위키 링크와 문서 역사 요약(summary-편집 요약?)이 제공되었고, 나중에 Yuri에 의해 완전히 새로 작성되면서 나머지 기능과 메타 정보, 다양한 출력 포맷이 지원되었습니다.