건프의 소소한 개발이야기

Dropbox 파일 업로드 스크립트 만들기 본문

개발 이야기/Python 이야기

Dropbox 파일 업로드 스크립트 만들기

건강한프로그래머 2017. 7. 11. 16:59

안녕하세요, 건프입니다.


AWS에서 원격서버로 데이터를 계속 크롤링하면서 모으다보니까

매번 FTP 나 파일질라 같은 걸로 가져와서 작업하기가 너무 귀찮아서


Dropbox 크게 하나 사놓은것이 있어, 이걸 스크립트(Script)로 자동업로드(Auto Upload) 하는 방법이 없나 찾아봤습니다.

2시간 정도 삽질했더니 이제 대충 구조는 알겠습니다.

필요한 누군가를 위해서 정리해봅니다.


1. 우선 계정에 대한 접속인증키(Access Token Key)를 받아야합니다. 

https://www.dropbox.com/developers/apps

여기로 접속하면, 

Create app  버튼을 눌러서 app 을 만듭니다.


2. App folder 로 permission access type 을 만듭니다.

이렇게하면 Dropbox 의 루트폴더 아래에 "APP" 또는 "앱" 이라는 폴더 아래에 데이터가 쌓이게 됩니다. 


3.  Name your app 을 적으면

앱폴더 아래에 app name 으로 퍼미션이 제한됩니다.


4. 이후 Generated access token 을 생성합니다.

여기서 받은 토큰값을 이용해서 앞으로 API 통신을 할 것 입니다.

잘 저장해두세요.


5. python 을 준비합니다. (나는 파이써너이니까!)

저는 python3.5 개발환경에서 진행합니다

> pip install dropbox 


6. OAuth 연결을 확인해봅니다.

"""
dropbox 에 자동으로 데이터를 업로드 하는 모듈을 정리한다
"""
import dropbox

COIN_DATA_FOLDER_TOKEN = '' # 위에서 생성한 token 값을 넣어줍니다. 외부로 배포하지 마세요

dbx = dropbox.Dropbox(COIN_DATA_FOLDER_TOKEN)
print(dbx.users_get_current_account())


7. File Uploads (파일 업로드)

사용하는 함수는 files_upload() 입니다. 이를 그냥 실행해보면 다음과 같은 메세지를 확인할 수 있습니다.

> TypeError: files_upload() missing 2 required positional arguments: 'f' and 'path'

즉 이 함수는 f, 와 path 를 필요로 하는데

API 문서를 확인한결과 f 는 올리고자하는 내용을  binary array 로 변환한 데이터를 넣어야하고,

path 는 정확히는 remote path 입니다. 


8. 예시 실행

json_text = {
'hello':'world',
'good':123
}
print(dbx.files_upload(str(json_text).encode('utf-8'), '/test.json'))

json 데이터를 업로드한다고 했을때, str로 바꿔주고, binary array 로 바꿔주는 작업을 해주고

원격지의 이름을 넣어주어야 한다.



이렇게하면 잘 올라갑니다! 

도움이 되었길 바랍니다

감사합니다 :)

Comments