-
Notifications
You must be signed in to change notification settings - Fork 0
/
upload_to_github.py
57 lines (45 loc) · 1.88 KB
/
upload_to_github.py
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
47
48
49
50
51
52
53
54
55
56
57
import requests
import os
from dotenv import load_dotenv
from get_date import get_date
from exit import exit_program
from animated_loader import Loader
load_dotenv()
github_username = os.environ.get('GITHUB_USER_NAME')
github_repo_name = os.environ.get('GITHUB_REPO_NAME')
github_branch_name = os.environ.get('GITHUB_BRANCH')
folder_path = os.environ.get('FOLDER_PATH')
image_path = os.environ.get('IMAGE_PATH')
folder_name = get_date()
md_filename = f"{get_date()}.md"
githubAPIURL = f"https://api.github.com/repos/{github_username}/{github_repo_name}/contents/{folder_path}{folder_name}/"
def upload_image_to_github(encode_data, image_name):
upload_to_github(encode_data, f"{image_path}{image_name}")
def upload_to_github(encode_data, filename):
headers = {
"Authorization": f"Bearer {os.environ.get('GITHUB_TOKEN')}",
"Content-type": "application/vnd.github+json",
}
data = {
"message": f"{get_date()} TIL",
"content": encode_data.decode('utf-8'),
"branch": f"{github_branch_name}"
}
url = githubAPIURL
url += filename
loader = Loader('github에 업로드 중...')
loader.start()
response = requests.put(url, headers=headers, json=data)
if response.status_code in range(200, 299):
loader.stop(f"🆗 '{filename}' 업로드 성공!")
else:
message = response.json()["message"]
# 이미 파일명이 존재하면 sha 를 api에 같이 보내야 합니다.
# sha는 github api에서 조회 가능합니다.
if message == 'Invalid request.\n\n"sha" wasn\'t supplied.':
print("이미 존재하는 파일 이름입니다!!")
# 401 Bad Credentials -> github 토큰 만료.
print(f"상태 코드 : {response.status_code}")
print(f"메시지 : {response.json()}")
loader.stop(f"❌ '{filename}' 업로드 실패!")
exit_program()