사용자:Dus2000/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건씩
특수기능:Whatlinkshere에 대응
  • 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
특수기능:contributions에 대응
  • 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

바깥 고리편집

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에 의해 완전히 새로 작성되면서 나머지 기능과 메타 정보, 다양한 출력 포맷이 지원되었습니다.