์ง๋๋ฒ์๋ wiki ๋ฐฑ๊ณผ api๋ก ๋ฐ์ดํฐ ๋ถ๋ฌ์ค๋ ๊ฒ์ ์๋ํํ์๋๋ฐ์. ์ด๋ฒ์๋ ํฐ์คํ ๋ฆฌ ๊ฒ์๊ธ์ ์๋์ผ๋ก ๋ฐํํด๋ณด๋ ค๊ณ API๋ฅผ ํตํด ๊ฒ์๊ธ ์์ฑํ๋ ๋ฐฉ๋ฒ์ ์ ๋ฌํฉ๋๋ค.
์ฐ์ ์ง๋๋ฒ ์๋๋ฐํ ๋จ๊ณ ์ค ๊ตฌ๊ธ ์ฑ ์คํฌ๋ฆฝํธ๋ก "ํฐ์คํ ๋ฆฌ ๊ฒ์๊ธ์ ๋ถ๋ฌ์ค๊ธฐ" ๋ผ๋ ํฌ์คํ ์ด ์์๋๋ฐ์. ์๋ ๊ฒ์๊ธ์ ํตํด ์ ๊ทผ ๊ฐ๋ฅํ token ๊ฐ์ ๋จผ์ ์์ฑํ๊ณ ์ค์ ์ผ ํฐ์คํ ๋ฆฌ ๊ฒ์๊ธ์ ๋ฑ๋กํ ์ ์์์ ์ ๋ฌ๋๋ฆฝ๋๋ค.
ํฐ์คํ ๋ฆฌ access_code ๊ฐ์ ธ์ค๋ ๋ฐฉ๋ฒ
ํฐ์คํ ๋ฆฌ API ์ฐ๋ ์ฝ๋
- ์๋ ๋ฐํ ๋ชฉ์ : ์์ ์ฌ์ดํธ ์คํฌํฐํ์ด(Spotify)์ ์ ํ๋ธ(youtube)๋ฅผ ์ฐ๋ํ์ฌ ์๋ก์ด ์จ๋ฒ ๋ฐ ๊ฐ์์ ๋ํ ์ ๋ณด๋ฅผ ๋งค์ผ ํฌ์คํ ํ๋ ค ํฉ๋๋ค. ๊ทธ๋์ ์ํค๋ฐฑ๊ณผ๋ ์ฐ๋ํ์ฌ, ๋ณธ๋ฌธ์ ๊ตฌ์ฑํ์๊ณ ๋ณ๋๋ก html๋ก ๋ง๋ค์์ต๋๋ค.
- ํฐ์คํ ๋ฆฌ Open API URL : https://www.tistory.com/apis/post/write
function writeTistoryContent(){
var accToken = "ํฐ์คํ ๋ฆฌ ํ ํฐ";
var title = "[playlist]" + title ;
var content = makeHtmlContent(title, contents,imgUrl,genres,spotifyopenurl);;
var password ="1111"; //์์
var url = "https://www.tistory.com/apis/post/write";
var response = UrlFetchApp.fetch(url,
{
method: "POST",
header : {
"User-Agent" : "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/102.0.5005.61 Safari/537.36",
contentType: "application/json"
},
payload : {
"access_token": accToken,
"output": "json",
"blogName" : "odaily",
"title" : String(title),
"content" : String(content),
"visibility" : 0, //0 : ๋น๋ฐ , 1: ๋ณดํธ , 3 :๋ฐํ
"category" : ์นดํ
๊ณ ๋ฆฌ ์์ด๋,
"slogan": String(title),
"tag" : "playlist",
"acceptComment" : 1,
"password" : String(password)
},
muteHttpExceptions: true
}
);
}
400์๋ฌ๊ฐ ๋ฐ์ํ๋ค๋ฉด?
์ ์์ค์์ user-agent ๋ฐ content-type์ ๋นผ๋จน์ผ๋ฉด 400์๋ฌ access_token์ด ์ ํจํ์ง ์๋ค๋ ์๋ฌ๊ฐ ๋ฐ์ํฉ๋๋ค. header๋ถ๋ถ์ ๊ผญ ์ฃผ์ํด์ฃผ์๊ธฐ ๋ฐ๋๋๋ค. (google app script๊ฐ ์๋ ๋ชจ๋ ์ธ์ด์์ ๋ฐ์ ๊ฐ๋ฅํฉ๋๋ค.) ๋ฌผ๋ก access_token์ ์๋ชป ๋ฐ๊ธํ์ จ์ ์๋ ์์ต๋๋ค.
์ํค๋ฐฑ๊ณผ API ์ฐ๋
์ํค๋ฐฑ๊ณผ ์ฐ๋์ ๋ค๋ฅธ ์ฐ๋์ ๋นํด ํจ์ฌ ์์ํฉ๋๋ค. ๋ค๋ง ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์์ ๋์๋ ์ ์ ๋์ด ์์ง ์์ ์ฌ์ฉ์ด ๋ถํธํ ์ ์์ต๋๋ค.
์ ํ๋ธ API ์ฐ๋
์ ํ๋ธ ์ฐ๋์ ํ๋ฃจ ํธ์ถ ํ์๊ฐ ์ ํด์ ธ ์์ต๋๋ค. ์กฐ๊ธ ๋ฌด๋ฆฌ๋ค ์ถ์ผ๋ฉด ํ ์คํธ ํ๋ ๊ธฐ๊ฐ๋์์๋ ๋ค๋ฅธ url๋ก ๋์ฒด ํ์ฌ ์ฌ์ฉํ๋ ๊ฒ์ ๊ถ์ฅ๋๋ฆฝ๋๋ค.
ํฐ์คํ ๋ฆฌ ์ ๋ก๋ ๊ฒฐ๊ณผ
์ํค๋ฐฑ๊ณผ๋ฅผ ์๋ฌธ ์ํค์์ ๊ฐ์ ธ์ค๋ ์ ์๋ชป๊ฐ์ ธ์๋ค์. ๋น ๋ฅธ ์์ผ ๋ด์ ํ๊ตญ์ด๋ก ์ ํํ์ฌ ๊ฒ์๊ธ์ ์ ๋ก๋ ํ๋๋ก ํ๊ฒ ์ต๋๋ค. ํ์ฌ ํ๋ ค๋๊น 406 content-type ์๋ฌ๊ฐ ๋ฐ์ํฉ๋๋ค. ์์ ๋๋ ์ฆ์ ํด๊ฒฐ๋ฐฉ์๊ณผ ํจ๊ป ๊ฒ์๊ธ ์ ๋ฐ์ดํธ ํ๊ฒ ์ต๋๋ค. ์ถ๊ฐ์ ์ผ๋ก ์ ํ๋ธ ์ฐ๋์ ๊ฒ์๊ฒฐ๊ณผ๊ฐ ์๋์ ๊ฐ์ด ์์น ์๋ ์์์ ๊ฐ์ ธ์ฌ ์ ์์ผ๋ ์ถฉ๋ถํ ๊ฒ์ด ๋ถํ๋๋ฆฝ๋๋ค.
์คํฌํฐํ์ด(Spotify) ์ธ์๋ ๊ตญ๋ด ์์ ์ฌ์ดํธ์์ API๋ฅผ ์ ๊ณตํด์ฃผ๋ ๊ณณ์ด ์๋ ๊ฒ ๊ฐ์ต๋๋ค.(๋ฉ๋ก , ์ง๋, ๋ฒ ์ค ๋ฑ) ๋ฌผ๋ก ํฌ๋กค๋ง์ผ๋ก๋ ์ ๊ท ๋ฆด๋ฆฌ์ฆ ๋ ์จ๋ฒ๋ชฉ๋ก์ ๊ฐ์ง๊ณ ์ฌ ์ ์์ง๋ง, ์ข ๋ ์์ ํ ๋ฐฉ๋ฒ์ ์ํด ์์ ๊ฐ์ด ํ์์ต๋๋ค.
์์ฌ์ด ๋ถ๋ถ์ ์ด๋ ๊ฒ ์ฝํ ์ธ ๋ฅผ ๋ฑ๋ก ํ์์ ๋, ๋ํ ์ด๋ฏธ์ง๋ฅผ ์ง์ ํ ์ ์๋ ๋ถ๋ถ์ธ๋ฐ์. ์ด ๋ถ๋ถ์ ๋ํด ์ ๊ฐ ์์๋ธ๋ค๋ฉด ๊ผญ ํฌ์คํ ํ๋๋ก ํ๊ฒ ์ต๋๋ค. ๋ค์ ํธ์๋ ์คํฌํฐํ์ด(Spotify) ์ฐ๋ํ๋ ๋ฐฉ๋ฒ์ ๊ฐ์ง๊ณ ์ค๊ฒ ์ต๋๋ค. ์ด์ ๊ตฌ๊ธ ์ฑ ์คํฌ๋ฆฝํธ๋ก ํฐ์คํ ๋ฆฌ OPEN API๋ก ๊ฒ์๊ธ ์๋ ๋ฐํ ๋ฐฉ๋ฒ์ด์์ต๋๋ค.
์ด์ธ์๋ ์ฒญ์ฝ ์ ๋ณด๋ ์๋์ผ๋ก ๋ฐํ์ด ๊ฐ๋ฅํฉ๋๋ค
๋๊ธ