์๋ณธ ๊ธฐ์ฌ์ ์ ์์ธ Kristรณf Litavecz ๋ 2017๋
์ ํ๋ก๊ทธ๋๋ฐ์ ๋ฐฐ์ ์ต๋๋ค. ๊ทธ์ ๊ฐ๋ฐ์ ๊ฒฝ๋ ฅ์๋ (์์ง!) ํฐ ๋ณํ๊ฐ ์์ง๋ง, ์ด ์ด์ผ๊ธฐ๋ ํ๋ก๊ทธ๋๋ฐ ๊ธฐ์ ์ด ์ผ์ ์ํ์์ ์ ์ฉํ ์ ์์์ ๋ณด์ฌ์ค๋๋ค. ์ด๋ค ์ฌ๋๋ค์ ์ฝ๋ ์์ฑ ๋ฅ๋ ฅ์ด ์ 4์ ๋ฆฌํฐ๋ฌ์๊ฐ ๋๊ณ ์๋ค๊ณ ์ฃผ์ฅํ๊ธฐ๋ ํฉ๋๋ค.
์ง๋ ์ฌ๋ฆ, ์ ์๋ด์ ๋ ์๋
๋ ์น๊ตฌ๋ฅผ ๋ฐฉ๋ฌธํ๊ธฐ ์ํด ํ๊ฐ๋ฆฌ์์ ์บ๋ฆฌํฌ๋์๋ก ๋นํ๊ธฐ๋ฅผ ํ์ต๋๋ค. ๋นํ์ ๋ชจ๋ โโ์ด๋ ค์ ์์์ ์ฐ๋ฆฌ ํญ๊ณต์ฌ๋ ๋์ค์ ์ ๋ชจ์ฐจ๋ฅผ ์์ด๋ฒ๋ ธ์ต๋๋ค. ๋น์ฉ์ ์ถฉ๋นํ๊ธฐ ์ํด ์ด๋ฉ์ผ, ํธ์ํฐ, ์ ์คํ๊ณ ๋ฌด๋กํ ์ ํ๋ฅผ ํตํด ํญ๊ณต์ฌ์ ์ฐ๋ฝํ๋ ค๋ ์๋ง์ ์๋๋ ์์ฉ์ด ์์์ต๋๋ค. ๋๋ ์ถฉ๋ถํ๋ค๋ ๊ฒ์ ๊นจ๋ซ๊ณ ๋ค๋ฅด๊ฒ ํ๋ํ๊ธฐ๋ก ๊ฒฐ์ ํ์ต๋๋ค. ๋๋ ํญ๊ณต์ฌ ๊ณ์ ์ ๋ชจ๋ ํธ์์ ์๋ตํ์ฌ ์ด๋ฏธ 3๊ฐ์ ๋์ ๊ณ๋ฅ ์ค์ธ ์ฐ๋ฆฌ ์ฌ๊ฑด์ ์๊ธฐ์ํค๋ ํธ์ํฐ ๋ด์ ๋ง๋ค์์ต๋๋ค. ๋๋ ๋ณด๋ณต์ด๋ ๋์ ๊ฐ์ทจํ ๋ชฉ์ ์ผ๋ก ์ด ์ผ์ ํ ๊ฒ์ด ์๋๋๋ค. ์๋, ์ด๋ ํ ๊ฒฝ์ฐ์๋ ๊ทธ๋ฌํ์ง ์์์ต๋๋ค. ๋๋ ์์ด๋ฒ๋ฆฐ ์ ๋ชจ์ฐจ์ ๋ํ ์ ์์ ๋ณด์์ ์ํ์ต๋๋ค. ์ด ์์ ์์ ์ ๋ ์ฝ 1๋
๋์ ํ๋ก๊ทธ๋๋ฐ์ ๊ณต๋ถํ๊ณ ์์์ผ๋ฉฐ ์ง์๊ณผ ์๊ฐ์ ์ป๊ธฐ ์ํด freeCodeCamp ์ปค๋ฎค๋ํฐ๋ฅผ ์ ๊ทน์ ์ผ๋ก ํ์ฉํ์ต๋๋ค. ๋ด๊ฐ ํ ๊ฒ
๋ด ๋ด์ ๋ณต์ฌํ๋ ค๋ฉด ํฐ๋ฏธ๋์ ๋ค์ ์ค์ ์
๋ ฅํ์ฌ ๋ด ์ ์ฅ์๋ฅผ ๋ณต์ ํ๊ธฐ๋ง ํ๋ฉด ๋ฉ๋๋ค. git clone https://github.com/krizsoo/twitterbot 2๋จ๊ณ: Twitter ๊ณ์ ๋ฐ Twitter ์ฑ ๋ง๋ค๊ธฐ ์์ง ๋ง๋ค์ง ์์ ๊ฒฝ์ฐ ํธ์ํฐ ๊ณ์ ์ด ์์ผ๋ฉด ๋ง๋์ธ์ . ์ผ๋จ ๊ฐ์
ํ๋ฉด Twitter API์ ์ก์ธ์คํ ์ ์๋ ์ ์ ํ๋ฆฌ์ผ์ด์
์ ์์ฑํ๊ณ ํ๋ก๊ทธ๋๋ฐ ๋ฐฉ์์ผ๋ก ํธ์์ ์์ฑํ ์ ์์ต๋๋ค.
์ ํ๋ฆฌ์ผ์ด์
์ด ๊ตฌ์ฑ๋๋ฉด API์ ์ก์ธ์คํ๋ ๋ฐ ํ์ํ 4๊ฐ์ ๋ณด์ ํค๋ฅผ ๋ฐ์์ต๋๋ค.
3๋จ๊ณ: Twitter Bot ์ค์ Bot์ด ํ์ํ ์์
์ ์ํํ๋์ง ํ์ธํ๊ธฐ ์ํด ๊ตฌ์ฑ์ ์กฐ์ ํด์ผ ํ์ต๋๋ค.
- ์ ๋ Cloud9 ๊ฐ๋ฐ ํด๋ผ์ฐ๋ ํ๋ซํผ์์ ์๋ก์ด ํ๊ฒฝ์ ๋ง๋ค์์ต๋๋ค( CS50 ๊ณผ์ ์ ์๊ฐํ๋ค๋ฉด ์ต์ํ ๊ฒ์ ๋๋ค - ํธ์ง์ ์ฃผ ).
- ํธ์ํฐ์ ๊ณ์ ์ ๋ง๋ค์์ต๋๋ค.
- Node.js๋ฅผ ์ฌ์ฉํ์ฌ ๊ฐ๋จํ Twitter ๋ด์ ๋ง๋ค์์ต๋๋ค.
- ๋๋ ๋งค ์๊ฐ๋ง๋ค 10๊ฐ์ ์๋ฆผ ์ค ํ๋๋ฅผ ๋ฌด์์๋ก ํธ์ํ ์ ์๋๋ก ์ค์ ํ์ต๋๋ค.
- ๊ทธ๋ฆฌ๊ณ ๊ทธ๋ ๊ทธ๊ฒ์ ์์ํ์ต๋๋ค.
๊ทธ๊ฒ์ํ๋ ๋ฐฉ๋ฒ
1๋จ๊ณ. Cloud9 IDE์์ ์ ํ๊ฒฝ ์์ฑ Cloud9 ์ ๋ก๊ทธ์ธ ํ๊ณ ์ ์์ ๊ณต๊ฐ์ ์์ฑํฉ๋๋ค. Node.js๋ฅผ ํ ํ๋ฆฟ์ผ๋ก ์ ํํฉ๋๋ค.- ์๋น์ ํค(API ํค) - ์๋น์ ํค
- ์๋น์ ๋น๋ฐ(API ๋น๋ฐ)์ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ํ ์ผ์ข ์ "๋ก๊ทธ์ธ + ๋น๋ฐ๋ฒํธ"์ ๋๋ค.
- ์ก์ธ์ค ํ ํฐ - ์ก์ธ์ค ํ ํฐ
- ์ก์ธ์ค ํ ํฐ ๋น๋ฐ - ์ก์ธ์ค ํ ํฐ ๋น๋ฐ
-
Node.js ์ข ์์ฑ ์ค์น
npm install --save twitter
- ๊ฒ์์ด ์ค์
q
- ํค์๋;count
โ ์์ฒญ์ด ๋ฐํํด์ผ ํ๋ ํธ์ ์result_type
โ ์ ๋ ฌ ๋ ผ๋ฆฌ, ์ฐ๋ฆฌ์ ๊ฒฝ์ฐ ๊ฐ์ฅ ์ต๊ทผ ํธ์์ ๋จผ์ ํ์ํฉ๋๋ค.lang
์ธ์ด(์: ์์ด)์ ๋๋ค.
// Set up your search parameters
var params = {
q: '@lostbabystroller',
count: 1,
result_type: 'recent',
lang: 'en'
};
4๋จ๊ณ: ํธ์ ์ค์ ๋ด์ ๋งค ์๊ฐ๋ง๋ค ํธ๋ฆฌ๊ฑฐ๋์์ผ๋ฉฐ ํญ์ ๊ฐ์ ๋ฉ์์ง๋ฅผ ๋ฐ๋ณตํ๋ ๊ฒ์ ์ํ์ง ์์์ต๋๋ค. ๊ทธ๋์ ํธ์์ 10๊ฐ ์ ๋ ๋ง๋ค์๊ณ , ๋งค๋ฒ ๋ด์ด ๋ฌด์์๋ก ๋ฉ์์ง๋ฅผ ์ ํํ์ต๋๋ค. ์ค์ํ: Johnny Asmar๋ ๋ต๋ณ์ ์ฌ๋์ ์ธ๊ธํ์ง ์์ ๊ฒ์ ๊ถ์ฅํฉ๋๋ค. ์ด๋ ํธ์ํฐ์ TOS์ ์๋ฐฐ๋ฉ๋๋ค. 5๋จ๊ณ. ํธ์ ๋น๋ ์ค์ ๋งค ์๊ฐ๋ง๋ค ๋ด์ด ์คํ๋๋๋ก ๊ตฌ์ฑํ์ต๋๋ค. ๋จผ์ ์๊ฐ์ ๋ฐ๋ฆฌ์ด ๋จ์๋ก ๋ํ๋ด๋ ๋ณ์๋ฅผ ๋ง๋ค์์ต๋๋ค.
//ะทะฐะดะฐะฝะธะต ะฒัะตะผะตะฝะฝะพะณะพ ะธะฝัะตัะฒะฐะปะฐ ัะฒะธัะพะฒ
var INTERVAL = 1*60*60*1000;
๊ทธ๋ฐ ๋ค์ Bot์ด ์ฌ๋ฐ๋ฅด๊ฒ ์์๋์๋์ง ํ์ธํ์ต๋๋ค.
// Start bot and timer
BotStart();
setInterval(BotStart, INTERVAL);
6๋จ๊ณ. Bot ์์ ๋ชจ๋ ๊ฒ์ด ์ค์ ๋๋ฉด Bot์ ์์ํ๊ณ ์ฐธ์์ฑ ์๊ฒ ๊ธฐ๋ค๋ ธ์ต๋๋ค.
npm run serve
GO TO FULL VERSION