Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save alexandre/7b9fae9893bf9084cf6921f6d24d7425 to your computer and use it in GitHub Desktop.
Save alexandre/7b9fae9893bf9084cf6921f6d24d7425 to your computer and use it in GitHub Desktop.
script para baixar arquivos com fins estatisticos do censo 2010
#lang racket
(require racket/system)
(require net/ftp)
(define conn (ftp-establish-connection "ftp.ibge.gov.br"
21
"anonymous"
""))
(ftp-cd conn (string-append "Censos/"
"Censo_Demografico_2010/"
"Cadastro_Nacional_de_Enderecos_Fins_Estatisticos"))
(ftp-directory-list conn)
(define states (for/list ([item (ftp-directory-list conn)]
#:when (equal? (car item) "d"))
(list-ref item 2)))
(define (get-all-zipfiles-names zipfiles)
(map (lambda (alist) (list-ref alist 2)) zipfiles))
(define ((download-zipfile zipfile) [local-path "."])
(println (string-append "Baixando arquivo: " zipfile))
(ftp-download-file conn local-path zipfile))
(for/list ([state states])
(println (string-append "Acessando diretório: " state))
(system (string-append "mkdir -p " state))
(ftp-cd conn state)
(let ((zipfiles (ftp-directory-list conn)))
(println "Executando download dos arquivos, bear with me")
(for/list ([zipfile (get-all-zipfiles-names zipfiles)])
((download-zipfile zipfile) (string-append "./" state))
(ftp-cd conn ".."))))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment