[google app script] wiki ์œ„ํ‚ค ๋ฐฑ๊ณผ API๋กœ ๋ฐ์ดํ„ฐ ๊ฐ€์ ธ์˜ค๊ธฐ
๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๋””์ง€ํ„ธ ๊ฟ€ํŒ

[google app script] wiki ์œ„ํ‚ค ๋ฐฑ๊ณผ API๋กœ ๋ฐ์ดํ„ฐ ๊ฐ€์ ธ์˜ค๊ธฐ

by ์ผ์ƒ์„ ๊ณต์œ ํ•ฉ๋‹ˆ๋‹ค 2022. 5. 25.

ํ‹ฐ์Šคํ† ๋ฆฌ ๊ฒŒ์‹œ๊ธ€์„ ์ž๋™ ๋ฐœํ–‰ํ•˜๊ธฐ ์œ„ํ•ด ํ•ด ๋ณธ ์ž๋™ํ™” ์ž‘์—…์ž…๋‹ˆ๋‹ค. ํŠนํžˆ ์Œ์•…์— ๋Œ€ํ•ด ๋งค์ผ ํฌ์ŠคํŒ…ํ•˜๋Š” ๊ฒƒ์„ ๊ณ„ํšํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๋‹ค๋“ค ์œ„ํ‚ค๋ฐฑ๊ณผ์— ๋Œ€ํ•ด ์ž˜ ์•Œ๊ณ  ์žˆ๊ฒ ์ง€๋งŒ, ๊ตฌ๊ธ€์—์„œ ๊ฒ€์ƒ‰ ์‹œ ์ œ์ผ ๋จผ์ € ์ •๋ณด์— ๋Œ€ํ•ด ํ™•์ธํ•  ์ˆ˜ ์žˆ๋Š” ์ธํ„ฐ๋„ท ๋ฐฑ๊ณผ์‚ฌ์ „์ž…๋‹ˆ๋‹ค.

์‚ฌ์ „ ์ž‘์—…

  • ๋ณธ๋ฌธ ์ž‘์—…์„ ์œ„ํ•œ wiki API ์—ฐ๋™
  • ์‹ ๊ทœ ๊ณก ๋˜๋Š” ์†Œ๊ฐœํ•  ์Œ์›์„ ์†Œ๊ฐœํ•˜๊ธฐ ์œ„ํ•œ spotify API ์—ฐ๋™ (ํ˜„์žฌ๋Š” 3๊ฐœ์›” ๋ฌด๋ฃŒ๋กœ ์‚ฌ์šฉ)

์œ„ ๋‘ ์ž‘์—…์€ ๋‹ค ์ง„ํ–‰ํ•˜์˜€๊ณ , ๊ตฌ์„ฑ์„ ์งœ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ์ „์— wiki ์—ฐ๋™์€ ์‰ฝ๊ฒŒ ํ•  ์ˆ˜ ์žˆ์–ด์„œ ๋จผ์ € ๊ณต์œ ํ•˜๊ณ ์ž ํ•ฉ๋‹ˆ๋‹ค. ๋‹ค๋ฅธ API์™€๋Š” ๋‹ค๋ฅด๊ฒŒ ์˜คํ”ˆ๋œ ์ •๋ณด์—ฌ์„œ ๊ทธ๋Ÿฐ์ง€ ์†์‰ฝ๊ฒŒ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ tistory์— ์—…๋กœ๋“œํ•˜๋ ค๋ฉด HTML์ด ๋“ค์–ด๊ฐ„ ๋ณธ๋ฌธ์ผ์ˆ˜๋ก ๋” ๊ฐ€๊ณตํ•˜๊ธฐ ์‰ฝ์Šต๋‹ˆ๋‹ค.
(๊ตญ๋‚ด ์Œ์› ์‚ฌ์ดํŠธ๋Š” ์•„์ง ์ œ๊ณตํ•˜์ง€ ์•Š๋Š” ๊ฒƒ์œผ๋กœ ๋ณด์—ฌ spotify๋ฅผ ํ™œ์šฉํ•˜๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.)

์œ„ํ‚ค ์‚ฌ์ดํŠธ ๋ฐ ํšŒ์›๊ฐ€์ž…

๋ณ„๋„ ์ธ์ฆ ์ ˆ์ฐจ๊ฐ€ ์—†์ง€๋งŒ ๋‚˜๋Š” ํšŒ์›๊ฐ€์ž…์„ ํ–ˆ์Šต๋‹ˆ๋‹ค. ์‹ค์ œ๋กœ ๋น„ํšŒ์›์ผ ๋•Œ ํ•ด๋‹น ๋‚ด์šฉ์„ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ž˜๋„ ๋‚˜๋Š” ํ˜น์‹œ ๋ชฐ๋ผ์„œ ๋” ๋งŽ์€ ์ •๋ณด๋ฅผ ์•Œ ์ˆ˜ ์žˆ์„ ๊ฒƒ ๊ฐ™์•„ ํšŒ์› ๊ฐ€์ž…์„ ํ–ˆ์Šต๋‹ˆ๋‹ค.  ํ•ด๋‹น API ์—ฐ๋™์€ ๋ฌด๋ฃŒ ์„œ๋น„์Šค์ž…๋‹ˆ๋‹ค.

 

๊ธฐ์—ฌํ•˜๋Š” ๋ฐฉ๋ฒ• - MediaWiki

How-to guides and walkthroughs for MediaWiki and Wikimedia technologies ๊ธฐํƒ€ ์œ ์šฉํ•œ ์ •๋ณด ์ปค๋ฎค๋‹ˆ์ผ€์ด์…˜ ์œ„ํ‚ค๋ฏธ๋””์–ด ์ปค๋ฎค๋‹ˆํ‹ฐ์™€ ์†Œํ†ตํ•  ์ˆ˜ ์žˆ๋Š” ์—ฌ๋Ÿฌ ๊ฐ€์ง€ ๋ฐฉ๋ฒ• ๋ฏธ๋””์–ด์œ„ํ‚ค์—์„œ ํŽธ์ง‘ํ•˜๊ณ  ํ† ๋ก ํ•˜๊ธฐ ๋ฏธ๋””์–ด์œ„ํ‚ค๋ฅผ

www.mediawiki.org

์†Œ์Šค ์ฝ”๋“œ

function getWikiData(search)
{
  var url = "http://ko.wikipedia.org/w/api.php?action=parse&page="
  + search + "&prop=wikitext&formatversion=2&format=json";

  var response = UrlFetchApp.fetch(url,
  { 
    method: "GET",
    headers:{
      "contentType": "application/json"
    }
  });


  var json = response.getContentText();
  var data = JSON.parse(json);

  console.log(data.parse.wikitext);
  var content = data.parse.wikitext;
  
  //html ๋ถ™์—ฌ์•ผ ํ•˜๋Š”์ง„ test ํ•ด๋ด์•ผํ•จ
  if(content.length > 10000){
    content = content.substring(0,10000);
  }

  return content;
}

google app script์— ํ•ด๋‹น ๋‚ด์šฉ์„ ๋„ฃ๊ณ  google spread sheet๋กœ ํ˜ธ์ถœํ•˜๋ฉด ์•„๋ž˜์™€ ๊ฐ™์ด ๊ฒฐ๊ณผ๊ฐ€ ๋‚˜์˜ต๋‹ˆ๋‹ค. ๊ฒ€์ƒ‰๋‹จ์–ด๋Š” ๋ฐฉํƒ„์†Œ๋…„๋‹จ, ์†Œ๋…€์‹œ๋Œ€๋กœ ์ •ํ–ˆ์Šต๋‹ˆ๋‹ค. ์•„๋ž˜ ์ฝ˜ํ…์ธ ๋ฅผ ํ™œ์šฉํ•˜์—ฌ ํ‹ฐ์Šคํ† ๋ฆฌ ๋ณธ๋ฌธ์„ ์ž‘์„ฑํ•  ์˜ˆ์ •์ž…๋‹ˆ๋‹ค. ๊ธ€์ž ์ˆ˜๊ฐ€ 50000์ž๊ฐ€ ๋งŽ๊ธฐ ๋•Œ๋ฌธ์— ์œ„์— 10000์ž๋กœ ์ œํ•œํ–ˆ์ง€๋งŒ, ์•ˆ์— ๋ฐ์ดํ„ฐ๋ฅผ ์–ด๋–ป๊ฒŒ ํ™œ์šฉํ• ์ง€๋Š” ์Šค์Šค๋กœ ๊ฒฐ์ •ํ•˜๋ฉด ๋  ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

๋‹ค์Œ ํŽธ์—๋Š” ์Šคํฌํ‹ฐํŒŒ์ด API ์—ฐ๋™์„ ๊ณต์œ ํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ์•„๋งˆ ๋‹ค์Œ ์ฃผ๋ฉด ๋งค์ผ 1๊ฐœ์”ฉ ์Œ์•… ๊ธ€์ด ํ‹ฐ์Šคํ† ๋ฆฌ์— ์ž๋™์œผ๋กœ ์—…๋กœ๋“œ๋  ์˜ˆ์ •์ž…๋‹ˆ๋‹ค. ์ด๋ ‡๊ฒŒ ํ•˜๋‚˜์”ฉ ๋ชจ๋“  ์„œ๋น„์Šค ์—ฐ๋™์„ ํ•˜๋‹ค ๋ณด๋ฉด ๋‚ด PC๋Š” ํ”„๋กœ๊ทธ๋žจ ๋Œ๋ฆฌ๋‹ค ๋๋‚  ๊ฒƒ ๊ฐ™์ง€๋งŒ ๊ทธ๋ž˜๋„ ๊ต‰์žฅํžˆ ๋ฟŒ๋“ฏํ•œ ์ž‘์—…์ด๋„ค์š”. ๋‹ค๋ฅธ ๋ถ„๋“ค์—๊ฒŒ๋„ ๋„์›€์ด ๋˜์—ˆ์œผ๋ฉด ์ข‹๊ฒ ์Šต๋‹ˆ๋‹ค.

๋Œ“๊ธ€