MediaWiki API를 사용하여 hubot에 위키
4971 단어 슬랙mediawikiHubotCoffeeScript
정보를 얻는 수단으로 MediaWiki API에서 요청을 보내 JSON 형식으로 결과를 받습니다.
MediaWiki의 공식 문서는 이쪽
htps //w w. 메아 아우키. 오 rg / uuki / api : Main_Page
MediaWiki API 사양
API를 사용하는데 필요한 최소한의 사양을 간단히 정리해 둡니다.
URL 형식
일본어 버전의 Wikipedia를 사용하려면 다음 URL로 요청을 보냅니다.
http://ja.wikipedia.org/w/api.php?パラメータ1=値1&パラメータ2=値2&...&パラメータn=値n
매개변수 유형
이번에는 다음의 파라미터를 이용합니다.
매개변수
의미
값
액션
조작
query, edit,...
format
출력 형식
json, xml, ...
prop
기사의 각 구성 요소 얻기
info, extracts, revisions,...
redirects
전송 설정
1(있음),0(없음)
exchars
문자 수
정수
explaintext
문자 수정을 제거
1(있음),0(없음)
titles
기사 제목
URL 인코딩된 문자열
소스 코드
소개 전체 소스를 붙입니다. copipe에서 작동합니다.
request 클라이언트가 없는 경우 설치하십시오.
npm install request
이하, 소스 코드
request = require('request');
module.exports = (robot) ->
robot.hear /wiki (.*)/i, (msg) ->
keyword = encodeURIComponent msg.match[1]
request.get("https://ja.wikipedia.org/w/api.php?action=query&format=json&prop=extracts&redirects=1&exchars=300&explaintext=1&titles=#{keyword}", (err, res, body) ->
if err or res.statusCode != 200
return msg.send "アクセスできなかったよ"
data = JSON.parse(body)
for id, value of data.query.pages
msg.send "#{value.extract}"
)
그러면 각 처리에 대해 설명합니다.
keyword = encodeURIComponent msg.match[1]
API로 요청할 때 일본어는 URL로 인코딩해야 하므로 입력된 키워드를 변환하고 있습니다.
request.get("https://ja.wikipedia.org/w/api.php?action=query&format=json&prop=extracts&redirects=1&exchars=300&explaintext=1&titles=#{keyword}", (err, res, body) ->
if err or res.statusCode != 200
return msg.send "アクセスできなかったよ"
실제로 요청하고 있는 것이 이 처리입니다. 위에서 소개한 파라미터를 “&”로 연결하고, titles 부분에는 URL 인코딩된 키워드를 사용합니다.
에러나 200(성공) 이외의 스테이터스 코드가 돌아왔을 경우에는 「액세스 할 수 없었다」라고 하는 메세지를 출력시킵니다.
data = JSON.parse(body)
for id, value of data.query.pages
msg.send "#{value.extract}"
데이터 획득에 성공하면 json 데이터를 구문 분석하고 변환합니다. 일본어 문자열도 올바르게 표시됩니다. 얻은 json 데이터는 for of을 사용하여 결과 부분을 빼낼 수 있습니다.
위에서 "wiki [키워드]"를 입력하면 hubot이 위키됩니다.
참고
Reference
이 문제에 관하여(MediaWiki API를 사용하여 hubot에 위키), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/yamshta/items/987853eb2b39cf6b29b6
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
http://ja.wikipedia.org/w/api.php?パラメータ1=値1&パラメータ2=値2&...&パラメータn=値n
소개 전체 소스를 붙입니다. copipe에서 작동합니다.
request 클라이언트가 없는 경우 설치하십시오.
npm install request
이하, 소스 코드
request = require('request');
module.exports = (robot) ->
robot.hear /wiki (.*)/i, (msg) ->
keyword = encodeURIComponent msg.match[1]
request.get("https://ja.wikipedia.org/w/api.php?action=query&format=json&prop=extracts&redirects=1&exchars=300&explaintext=1&titles=#{keyword}", (err, res, body) ->
if err or res.statusCode != 200
return msg.send "アクセスできなかったよ"
data = JSON.parse(body)
for id, value of data.query.pages
msg.send "#{value.extract}"
)
그러면 각 처리에 대해 설명합니다.
keyword = encodeURIComponent msg.match[1]
API로 요청할 때 일본어는 URL로 인코딩해야 하므로 입력된 키워드를 변환하고 있습니다.
request.get("https://ja.wikipedia.org/w/api.php?action=query&format=json&prop=extracts&redirects=1&exchars=300&explaintext=1&titles=#{keyword}", (err, res, body) ->
if err or res.statusCode != 200
return msg.send "アクセスできなかったよ"
실제로 요청하고 있는 것이 이 처리입니다. 위에서 소개한 파라미터를 “&”로 연결하고, titles 부분에는 URL 인코딩된 키워드를 사용합니다.
에러나 200(성공) 이외의 스테이터스 코드가 돌아왔을 경우에는 「액세스 할 수 없었다」라고 하는 메세지를 출력시킵니다.
data = JSON.parse(body)
for id, value of data.query.pages
msg.send "#{value.extract}"
데이터 획득에 성공하면 json 데이터를 구문 분석하고 변환합니다. 일본어 문자열도 올바르게 표시됩니다. 얻은 json 데이터는 for of을 사용하여 결과 부분을 빼낼 수 있습니다.
위에서 "wiki [키워드]"를 입력하면 hubot이 위키됩니다.
참고
Reference
이 문제에 관하여(MediaWiki API를 사용하여 hubot에 위키), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/yamshta/items/987853eb2b39cf6b29b6
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Reference
이 문제에 관하여(MediaWiki API를 사용하여 hubot에 위키), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/yamshta/items/987853eb2b39cf6b29b6텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)