티스토리 뷰
파이썬으로 구글 드라이브 폴더 안의 파일들 다운로드(/w Google Drive API)
tech_curioso 2024. 1. 16. 15:49
구글 드라이브에 있는 파일들이 여러 개인 경우 한꺼번에 선택해서 다운로드를 선택하면 하나의 압축파일로 만들어져 다운로드되는 과정을 기다려야 하거나 너무 오래 걸려서 포기한 적이 있다.
파일 몇 개 정도는 클릭을 몇번하면 별도의 파일로 다운로드할 수 있으나 이게 수백개가 되니 먼가 대안을 찾기 시작했다.
프로그래밍으로 자동화 해결책으로 파이썬 라이브러리 gdown을 이용한 예제가 몇 개 보였고 이를 시도해 보았는데 여러가지 문제로 원하는 결과를 얻을 수 없었다.
시도 끝에 성공한 방법을 여기에 적어두고자 한다.
성공한 방법은 google cloud의 drive api를 이용하여 폴더의 id를 기준으로 위치한 파일들을 다운로드 하는 방법이다.
사용한 언어는 파이썬 기반이다.
구글 클라우드 drive api 환경 세팅
아래 링크에 파이썬 기반 Drive API를 사용하기 위한 기초 문서가 있다.
https://developers.google.com/drive/api/quickstart/python?hl=ko
문서의 헤드라인만 간단히 요약하면
1. API 요약 설정
2. OAuth 동의화면 구성
3. 데스트톱 애플리케이션의 사용자 인증 정보 승인
- 여기서 json파일을 다운로드
- 파이썬 코드에서 불러서 확인하므로 개발환경에 가져다 놓으면 된다.
4. 구글 클라이언트 라이브러리 설치
- 개발환경(파이썬)에 라이브러리를 설치해야 함
pip install --upgrade google-api-python-client google-auth-httplib2 google-auth-oauthlib
주의할 점 기본 요건에 python 버전이 높은 편(3.10.7이상)이다. 이에 맞게 파이썬 패키지를 설치해 주는 것도 필요하다.
위 문서에 quickstart.py파일을 실행시켜 보면 처음에 링크가 나타나서 브라우저로 띄우면 우리가 흔히 구글 드라이브 계정을 선택하는 메뉴가 나오는데 여기에 앞서 api 세팅하면서 넣었던 구글 계정을 선택하면 해당 계정에 해당하는 기본 파일, 폴더 리스트 정보가 출력되는 것을 알 수 있다.
이 파일에서 위에서 다운로드 받은 json파일명을 맞춰주어야 한다.
구글 드라이브 폴더 안의 파일들 다운로드 받기
이제 개발 환경은 구축이 되었으니 구글 드라이브 속 폴더의 파일들을 다운로드 받을 차례이다.
다음 블로그의 있는 내용을 참조하여 실행하였다.
아래 깃헙 링크에 있는 코드 중 download.py에 원하는 기능이 들어 있는 코드이다.
https://github.com/hansheng0512/google-drive-and-python
download.py코드를 개발 환경에 옮겨두거나 코드를 복사 해두고 내부의 인증정보 json파일명을 수정해 준다.
코드 상단의 CLIENT_SECRET_FILE에 해당 파일명을 입력해둔다.
CLIENT_SECRET_FILE = "xxxx.json"
폴더 아이디 알아내기
구글 드라이브에 폴더 아이디는 폴더 공유 정보 링크 안에 있으니 잘라서 사용하면 된다.
'링크가 있는 모든 사용자'가 억세스 가능하도록 공유링크를 만들어 복사 한 후 메모장에 붙여 놓고 보면
아래와 같이 'folders/'와 '?usp=sharing'사이에 아이디 코드가 있는데 이 부분만 잘라 둔다.
https://drive.google.com/drive/folders/[폴더 ID]?usp=sharing
파일들 다운로드
download.py를 실행시킬 때 잘라둔 폴더 아이디를 아규먼트로 넣어 실행 시킨다.
python download.py -i [폴더 ID 정보]
처음 실행시키는 경우 역시 억세스를 위해 링크가 나타나면 브라우저에서 열어 필요한 구글 계정을 연결해 준다. 그러면 파이썬 코드에 파일이 하나씩 하나씩 다운로드 되는 과정을 다음과 같이 볼 수 있다.
개인적으로 1000개 가까운 zip파일들을 이 코드로 자동으로 다운로드 받아둘 수 있었다.
'Programming > python' 카테고리의 다른 글
Streamlit 데모 Face GAN 설치 및 실행 시켜보기 (0) | 2020.10.21 |
---|---|
Streamlit 설치하고 시작하기 (0) | 2020.10.20 |
OpenCV imread/imwrite 한글 파일/경로 명 읽기 (0) | 2020.05.06 |
opencv-python 설치 시 오류 해결 (0) | 2020.01.06 |
파이썬 프로젝트 레이아웃/구조 (0) | 2019.09.26 |
- Total
- Today
- Yesterday
- Linux
- Maker
- cura
- conda
- WSL
- 메이커
- nodejs
- tensorflow
- opencv
- Arduino
- git
- 단축키
- ssh
- MicroBit
- Stable Diffusion
- Streamlit
- vvvv
- ubuntu
- 파이썬
- nvidia
- docker
- Fusion360
- 우분투
- fablab
- CAD
- 한글
- 3d프린터
- Python
- comfyUI
- vscode
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |