Transferência eficiente de arquivos do Dropbox para SFTP com otimização

Na última parte da série Re-loadit, apresentei um exemplo usando o Robot /dropbox/store. Desta vez, quero importar arquivos do meu Dropbox pessoal. Então, seguindo com o tema Dropbox, chegou a hora de o Robot /dropbox/import brilhar!
O Robot /dropbox/import
Ao contrário do Robot /dropbox/store, o Robot /dropbox/import permite importar diretórios diretamente do seu armazenamento no Dropbox para que sejam repassados a outros Steps dentro de uma Assembly.

Imagens estão entre os tipos de arquivo mais populares armazenados no Dropbox. Do ponto de vista pessoal, além de guardar minhas faturas, uso o Dropbox principalmente para armazenar várias imagens e compartilhá-las com amigos e família. Dito isso, o Dropbox como serviço nem sempre é ideal. Pessoalmente, me sinto mais à vontade guardando alguns dos meus arquivos no meu próprio servidor SFTP. Principalmente porque o meu espaço no Dropbox está começando a acabar e o meu orçamento de estudante não comporta uma assinatura do Dropbox 😉
Então, neste exemplo, vou apresentar uma Assembly que me permite mover as imagens de uma das minhas pastas do Dropbox para o meu servidor SFTP, que roda no meu próprio Raspberry Pi. Como etapa extra, também quero reduzir o tamanho dessas imagens, já que o cartão SD do meu Raspberry Pi tem apenas 8 GB.
Para os curiosos, a pasta do Dropbox com as imagens que eu quero é assim. Há uma mistura de arquivos de mídia aqui, então também vou precisar de uma forma de filtrar os arquivos indesejados.

Vamos ver exatamente como montar uma Assembly assim. Fique à vontade para acompanhar!
Criando a Assembly
Para esta tarefa, vou usar quatro Robots:
- O Robot /dropbox/import para buscar o que preciso na minha pasta media/;
- O Robot /file/filter para garantir que eu filtre quaisquer tipos de arquivo indesejados;
- O Robot /image/optimize para reduzir o tamanho das imagens importadas; e
- Por fim, o Robot /sftp/store vai me permitir armazenar tudo no meu próprio servidor SFTP.
É uma boa quantidade de Robots realizando tarefas bastante complexas. Confira o Template que criei abaixo:
{
"steps": {
"imported": {
"robot": "/dropbox/import",
"result": true,
"credentials": "my_dropbox_credentials",
"path": "media/"
},
"filtered_images": {
"use": ["imported"],
"robot": "/file/filter",
"result": true,
"accepts": [["${file.mime}", "regex", "image/(jpeg|png|svg|tiff)"]]
},
"optimize": {
"use": ["filtered_images"],
"robot": "/image/optimize",
"priority": "compression-ratio",
"progressive": false,
"preserve_meta_data": false,
"fix_breaking_images": true
},
"exported": {
"use": ["optimize"],
"robot": "/sftp/store",
"credentials": "my_sftp_credentials",
"path": "/home/pi/sftp/images/${file.original_basename}.${file.ext}"
}
}
}
Como de costume, prefiro manter as credenciais, tanto o meu token de acesso ao Dropbox quanto os
dados do SFTP (como o hostname), protegidas na seção Credenciais de Template da
Transloadit. A partir do Step inicial, o Robot
/dropbox/import importa todos os arquivos especificados pelo parâmetro
path, neste caso a minha pasta media/. Essa pasta contém várias imagens, mas também
alguns arquivos diversos, como documentos e mp3s.
Nem todos esses arquivos são relevantes, então uso o Robot /file/filter para filtrar tudo o que não for jpeg, png, svg ou tiff. Em seguida, o impressionante Robot /image/optimize pega essas imagens e ajuda a reduzir o tamanho delas mantendo a qualidade. Por fim, exporto os resultados para o meu servidor SFTP, onde eles ficam confortavelmente no meu Raspberry Pi.
Os resultados
Depois de uma verificação rápida no sistema de arquivos do meu Pi, os resultados parecem ótimos! Todas as imagens que estavam na minha pasta media/ do Dropbox agora também estão no meu servidor SFTP. E, como um belo bônus, consegui reduzir o tamanho de alguns arquivos também! 😍

Fique de olho na próxima parte da nossa série Re-loadit!