CLIEN

본문 바로가기 메뉴 바로가기 보기설정 테마설정
톺아보기 공감글
커뮤니티 커뮤니티전체 C 모두의광장 F 모두의공원 I 사진게시판 Q 아무거나질문 D 정보와자료 N 새로운소식 T 유용한사이트 P 자료실 E 강좌/사용기 L 팁과강좌 U 사용기 · 체험단사용기 W 사고팔고 J 알뜰구매 S 회원중고장터 B 직접홍보 · 보험상담실 H 클리앙홈
소모임 소모임전체 ·굴러간당 ·주식한당 ·아이포니앙 ·MaClien ·방탄소년당 ·일본산당 ·개발한당 ·자전거당 ·안드로메당 ·이륜차당 ·육아당 ·소셜게임한당 ·소시당 ·가상화폐당 ·AI당 ·골프당 ·디아블로당 ·클다방 ·나스당 ·리눅서당 ·걸그룹당 ·야구당 ·영화본당 ·젬워한당 ·사과시계당 ·노젓는당 ·캠핑간당 ·패셔니앙 ·맛있겠당 ·IoT당 ·키보드당 ·라즈베리파이당 ·3D메이킹 ·X세대당 ·ADHD당 ·AI그림당 ·날아간당 ·배드민턴당 ·농구당 ·블랙베리당 ·곰돌이당 ·비어있당 ·FM당구당 ·블록체인당 ·보드게임당 ·활자중독당 ·볼링친당 ·냐옹이당 ·문명하셨당 ·클래시앙 ·콘솔한당 ·요리한당 ·쿠키런당 ·대구당 ·DANGER당 ·뚝딱뚝당 ·개판이당 ·동숲한당 ·날아올랑 ·전기자전거당 ·e북본당 ·갖고다닌당 ·이브한당 ·물고기당 ·도시어부당 ·FM한당 ·포뮬러당 ·안경쓴당 ·차턴당 ·총쏜당 ·땀흘린당 ·하스스톤한당 ·히어로즈한당 ·인스타한당 ·KARA당 ·꼬들한당 ·덕질한당 ·어학당 ·가죽당 ·레고당 ·LOLien ·Mabinogien ·임시소모임 ·미드당 ·밀리터리당 ·땅판당 ·헌팅한당 ·오른당 ·MTG한당 ·소리당 ·노키앙 ·적는당 ·방송한당 ·바다건너당 ·PC튜닝한당 ·찰칵찍당 ·그림그린당 ·소풍간당 ·심는당 ·패스오브엑자일당 ·품앱이당 ·리듬탄당 ·달린당 ·Sea마당 ·SimSim하당 ·심야식당 ·윈태블릿당 ·미끄러진당 ·축구당 ·나혼자산당 ·스타한당 ·스팀한당 ·파도탄당 ·퐁당퐁당 ·테니스친당 ·테스트당 ·빨콩이당 ·공대시계당 ·여행을떠난당 ·터치패드당 ·트윗당 ·창업한당 ·VR당 ·시계찬당 ·WebOs당 ·위스키당 ·와인마신당 ·WOW당 ·윈폰이당
임시소모임
고객지원
  • 게시물 삭제 요청
  • 불법촬영물등 신고
  • 쪽지 신고
  • 닉네임 신고
  • 제보 및 기타 제안
© CLIEN.NET
공지[점검] 잠시후 서비스 점검을 위해 약 30분간 접속이 차단됩니다. (금일 18:15 ~ 18:45)

팁과강좌

기타 [python] 드롭박스 공개 공유 폴더에서 파일 목록 추출, 다운로드 스크립트입니다. 2

3
2018-04-16 14:22:04 수정일 : 2018-04-16 14:25:44 106.♡.186.210
케이준감자튀김

안녕하세요, 진짜 간만에 글 작성하네요. 


최근 드롭박스에서 대량(10.0GB+, 파일수 약 28만개)의 파일을 공유받은 일이 있었습니다.

드롭박스 공유 링크에는, 이를테면 "https://www.dropbox.com/sh/foo/bar?dl=0"처럼 URL이 생성되는데 dl=1로 주면 그 파일 혹은 폴더를 바로 다운로드 받는 기능이 있긴 합니다. 그런데 저처럼 수많은 하위 디렉토리가 있고 파일의 용량 또한 큰 경우에는 제대로 동작하지 않는 문제가 있습니다. 이만한 용량을 내 드롭박스로도 가져오려고 해도 용량이 많이 필요하고, 또 이미 공개 폴더인데 이것을 위해 추가 비용을 지불하는 것도 낭비인 것 같았습니다.


드랍박스는 여러 cli 도구들이 있어서 그 쪽도 알아봤지만, 저처럼 공개 공유 폴더에 대한 작업을 해 주는 것은 살펴보지 못했습니다. 또 남의 공개 공유 폴더에 대해서는 자신의 드롭박스 폴더에 만큼 자유롭게 작업이 되지는 않고 일부 기능이 제한되더군요. 그래서, 직접 만들었어요.


준비물은 이렇습니다.

1. python 2.7+

2. aria2c (https://aria2.github.io/): 다운로드를 위한 유틸리티입니다. 제가 드리는 스크립트는 이 전문 유틸리티가 다운로드 받을 수 있도록 파라미터를 잘 생성하는 일입니다!


스크립트는 GIST에 올려 두었습니다. https://gist.github.com/chwnam/a97c5b6c70d274a5ecdaf97761aed6b1

댓글에 간단하게 사용법을 적어 두었는데, 이 쪽에도 같이 올려 두겠습니다.


세팅은 이렇습니다.

  • Python 2.7.14로 작성하였습니다.
  • pip install dropbox 로 드롭박스 패키지를 설치합니다.
  • 드롭박스 개발자 페이지로 가서 oauth2 access token을 발급받습니다.
  • 발급받은 토큰을 'dropbox_access_token'이란 환경 변수로 지정해 둡니다.

간단한 사용법입니다.

  1. 목록 생성하기
    python dropbox_attachments.py --command=tree --output='url_list.csv' --link='https://dropbox.com/.....'
    해당 공유 폴더를 재귀적으로 돌면서 모든 파일의 목록을 조사해 url_list.csv 파일로 추출합니다.

  2. 증분 목록 생성하기
    python dropbox_attachments.py --commend=tree --input='url_list.csv' --output='updated.csv' --link='https://dropbox.com/.....'
    해당 공유 폴더를 재귀적으로 도는 것까지는 같으나, input으로 준 파일과 대조하여, input에 없는 내용, 혹은 리비전이 변경된 (즉 더 새로운 파일) 파일만을 추출해 updated.csv 로 추출합니다.

  3. 기본/증분 목록 합치기
    python dropbox_attachments.py --commend=merge --input='url_list.csv' --incremental 'updated.csv' --output='new_url_list.csv' --link='https://dropbox.com/.....'
    기존의 url_list.csv 파일과 update.csv 파일을 합쳐 updated의 최신 내용을 url_list와 합칩니다. 결과는 new_url_list.csv로 저장합니다.

  4. aria2c 다운로드 유틸리티를 위한 input file 생성하기
    다운로드는 전문 다운로드 유틸리티에게 맡기는 것이 더욱 효율적입니다. aria2가 목록을 직접 다운로드 할 수 있도록 csv 파일을 가공하여 input-file 파라미터로 사용할 파일을 생성하도록 도와줍니다.
    python dropbox_attachments.py --command=aria2 --input 'url_list.csv' --output='aria2.txt' --link='https://dropbox.com/.....'
    이렇게 만들어진 aria2.txt는 다음처럼 사용 가능합니다.

aria2c --input-file=aria2.txt --dir='./downloads'


p.s.) 기존 스크립트에서 내용을 뚝 잘라내어 단품으로 편집한 것입니다. 충분히 테스트한 것은 아니라 군데군데 오류가 있을 수 있습니다. 급한 작업을 효율적으로 처리하려는 꼼수에서 만든 스크립트이가 목적인 만큼 아주 높은 완성도를 가진 건 아니에요. 아무튼 필요하신 분들이 계시다면 작은 도움이 되기를 바랍니다.


케이준감자튀김 님의 게시글 댓글
  • 주소복사
  • Facebook
  • X(Twitter)
댓글 • [2]
hmadoka
IP 210.♡.195.84
04-16 2018-04-16 15:28:16
·
aria2c 가 wget 하고 차이점이 뭔지 여쭤봐도 될까요?
케이준감자튀김
IP 106.♡.186.210
04-16 2018-04-16 15:51:03
·
wget 간편한데, 단순하고 aria2c는 더 강력합니다. flashget 같은 다운로드 프로그램의 CLI 버전이라고 생각하시면 됩니다. http(s), (s)ftp, 비트토렌트 등등 여러 프로토콜을 지원하고 분할 다운로드, 동시 다운로드, 이어서 다운로드 등 강력한 기능들이 많습니다.

wget을 쓰면 여러 파일을 동시에 N개 받는다는 작업을 하기 힘들지만 aria2c는 간단하죠~
새로운 댓글이 없습니다.
이미지 최대 업로드 용량 15 MB / 업로드 가능 확장자 jpg,gif,png,jpeg,webp
지나치게 큰 이미지의 크기는 조정될 수 있습니다.
목록으로
글쓰기
글쓰기
목록으로 댓글보기 이전글 다음글
아이디  ·  비밀번호 찾기 회원가입
이용규칙 운영알림판 운영소통 재검토요청 도움말 버그신고
개인정보처리방침 이용약관 책임의 한계와 법적고지 청소년 보호정책
©   •  CLIEN.NET
보안 강화를 위한 이메일 인증
안전한 서비스 이용을 위해 이메일 인증을 완료해 주세요. 현재 회원님은 이메일 인증이 완료되지 않은 상태입니다.
최근 급증하는 해킹 및 도용 시도로부터 계정을 보호하기 위해 인증 절차가 강화되었습니다.

  • 이메일 미인증 시 글쓰기, 댓글 작성 등 게시판 활동이 제한됩니다.
  • 이후 새로운 기기에서 로그인할 때마다 반드시 이메일 인증을 거쳐야 합니다.
  • 2단계 인증 사용 회원도 최초 1회는 반드시 인증하여야 합니다.
  • 개인정보에서도 이메일 인증을 할 수 있습니다.
지금 이메일 인증하기
등록된 이메일 주소를 확인하고 인증번호를 입력하여
인증을 완료해 주세요.