티스토리 뷰

728x90
반응형

 

구글 드라이브에 있는 파일들이 여러 개인 경우 한꺼번에 선택해서 다운로드를 선택하면 하나의 압축파일로 만들어져 다운로드되는 과정을 기다려야 하거나 너무 오래 걸려서 포기한 적이 있다.

파일 몇 개 정도는 클릭을 몇번하면 별도의 파일로 다운로드할 수 있으나 이게 수백개가 되니 먼가 대안을 찾기 시작했다.

 

프로그래밍으로 자동화 해결책으로 파이썬 라이브러리 gdown을 이용한 예제가 몇 개 보였고 이를 시도해 보았는데 여러가지 문제로 원하는 결과를 얻을 수 없었다. 

 

시도 끝에 성공한 방법을 여기에 적어두고자 한다. 

 

성공한 방법은 google cloud의 drive api를 이용하여 폴더의 id를 기준으로 위치한 파일들을 다운로드 하는 방법이다.

사용한 언어는 파이썬 기반이다. 

 

구글 클라우드 drive api 환경 세팅

아래 링크에 파이썬 기반 Drive API를 사용하기 위한 기초 문서가 있다.

https://developers.google.com/drive/api/quickstart/python?hl=ko

 

Python 빠른 시작  |  Google Drive  |  Google for Developers

이 페이지는 Cloud Translation API를 통해 번역되었습니다. Switch to English 의견 보내기 Python 빠른 시작 컬렉션을 사용해 정리하기 내 환경설정을 기준으로 콘텐츠를 저장하고 분류하세요. 빠른 시작에

developers.google.com

 

문서의 헤드라인만 간단히 요약하면

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파일명을 맞춰주어야 한다. 

 

 

구글 드라이브 폴더 안의 파일들 다운로드 받기 

 

이제 개발 환경은 구축이 되었으니 구글 드라이브 속 폴더의 파일들을 다운로드 받을 차례이다.

다음 블로그의 있는 내용을 참조하여 실행하였다.

https://hansheng0512.medium.com/download-folders-and-files-using-google-drive-api-and-python-1ad086e769b#c279

 

Download Folders and Files using Google Drive API and Python

Before everything, let’s create an OAuth 2.0 token for authentication at the Google API Console.

hansheng0512.medium.com

 

아래 깃헙 링크에 있는  코드 중 download.py에 원하는 기능이 들어 있는 코드이다.

https://github.com/hansheng0512/google-drive-and-python

 

GitHub - hansheng0512/google-drive-and-python

Contribute to hansheng0512/google-drive-and-python development by creating an account on GitHub.

github.com

 

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파일들을 이 코드로 자동으로 다운로드 받아둘 수 있었다. 

728x90
반응형
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/12   »
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
글 보관함