Twitter Project - Github Actions를 이용 학식 자동 트윗 봇
excerpt
tweeting University Cafeteria’s Lunch Menus in twitter for myself. And learning how to crawl the data with python, and how to use a api.
Info
프로젝트명 | 공주대(천안) 학식봇 | 제작기간 | 2022.04.03 ~ 2022.04.06 (4일) |
참여인원 | 1명 | 개발환경 | Python, Twitter API, Tweepy, Selenium, Github Action |
목적 |
| ||
구현내용 |
| ||
기타 | 개인 프로젝트 | 결과물 | @KNU_Lunch_Menu |
[Twitter Project] 공주대 학식 자동트윗봇
먼저 이 프로젝트를 처음으로 트위터 api를 사용했다. 꽤 복잡하고 어려웠지만 하다보니 할만했던 것 같다. 밤새 코딩하면서 재미를 느낄 수 있었다.
Twitter Developer
트위터 봇을 만드려면 트위터 디벨로퍼의 승인을 받은 트위터 계정이 필요하다. 승인 받는 방법은 구글링을 통해 따로 알아보길 바란다. 트위터 디벨로퍼 승인받은 당시의 소감
Twitter api & Tweepy
봇을 만들기 위해선 4개의 키가 필요하다.
- Api Key
- Api Key Secret
- Access Token
- Access Token Secret
나는 이번 프로젝트에서 Tweepy, Selenium, Chrome Driver를 사용하였다. 그런데, 자동봇을 만들기 위해 파이썬으로 코딩하여 트윗을 작성하면 알겠지만 개발자 계정에 트윗이 된다. 매번 봇을 만들 때마다 승인을 받는건 여간 귀찮은 일이 아니다. 따라서 트위터 디벨로퍼에서 발급받은 저 4개의 키를 이용해 자동봇 계정의 Access Token과 Access Token Secret을 만들 것이다. 해당 내용에 대해선 블로그에 자세히 적어놓았다.
Github Environment
내 깃허브 코드를 보면 알겠지만 Api key나 Access token이 드러나있지 않고 Environment를 이용하여 환경에서 변수를 받아왔다. 해당 4개의 키를 그대로 드러내기엔 계정의 중요한 정보라 거부감이 든다.
따라서 나는 Secret에 인증키들을 등록하는 방법을 사용하였다.
workflow
나는 workflow를 윈도우 버전으로 작성하였다. 매일 UTC 00:00 기준으로 트윗이 올라가게끔 작성하였으며 트윗할 때마다 크롬 드라이버를 다운받아 unzip한 뒤 사용하도록 만들었다. 프로젝트의 더 자세한 코드는 이곳에서 볼 수 있다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
# This workflow will install Python dependencies, run tests and lint with a variety of Python versions
# For more information see: https://help.github.com/actions/language-and-framework-guides/using-python-with-github-actions
name: Python package
on:
schedule:
- cron: '0 0 * * *'
push:
branches: [ main ]
pull_request:
branches: [ main ]
jobs:
build:
runs-on: windows-latest
#strategy:
#fail-fast: false
#matrix:
#python-version: ["3.8", "3.9", "3.10"]
steps:
- uses: actions/checkout@v3
- name: Set up Python 3.10
uses: actions/setup-python@v3
with:
python-version: 3.10
- name: Install dependencies
run: |
python -m pip install --upgrade pip
pip install -r requirements.txt
#if [ -f requirements.txt ]; then pip install -r requirements.txt; fi
- name: Download chromedriver
run: |
(New-Object System.Net.WebClient).DownloadFile('https://chromedriver.storage.googleapis.com/100.0.4896.60/chromedriver_win32.zip', 'chromedriver.zip')
Expand-Archive .\chromedriver.zip .
#tar -zxvf [chromedriver.zip] -C [chromedriver]
- name: Tweets
run: |
python3 "main.py"
env:
TWITTER_API_KEY: $
TWITTER_API_SECRET: $
TWITTER_ACCESS_TOKEN: $
TWITTER_ACCESS_TOKEN_SECRET: $