Explorando o Robot /google/store na série Re-Loadit
Este post é a quarta parte da série que chamamos de Re-loadit. Nesta série, vamos abordar vários recursos da Transloadit que ainda não receberam uma apresentação adequada aos nossos usuários.
Assim como em outras apresentações de Robot, vamos mostrar alguns exemplos, explicar a funcionalidade principal do Robot e dar algumas dicas de como começar. Esperamos que você goste de aprender mais sobre como aproveitar a variedade de recursos da Transloadit.
O Robot /google/store
Nos últimos anos, os desenvolvedores vêm deixando os sistemas locais e migrando para a nuvem para armazenar dados. Um motivo importante para migrar para a nuvem é a melhor proteção dos seus dados, principalmente em caso de desastre natural. Alguns relatórios confirmaram isso e preveem que o mercado de armazenamento em nuvem chegará a $ 88,91 bilhões até 2022, o que representa uma enorme taxa de crescimento anual de 23,7%. Bilhões de pessoas e milhares de empresas estão optando pelo armazenamento online porque ele é confortável, conveniente, seguro e econômico. Um dos serviços de armazenamento em nuvem mais populares é o Google Cloud Storage.
Queremos garantir que nossos usuários tenham a liberdade de integrar esse serviço diretamente aos seus Templates da Transloadit.
Foi por isso que lançamos o Robot /google/store, que faz parte da família de Robots da Transloadit desde o início de 2018.

O que ele pode fazer?
O Robot /google/store exporta todos os resultados de codificação da sua Assembly para um bucket do Google Storage de sua escolha.
Assim, você poderia, por exemplo, fazer com que seus usuários enviem um vídeo e, em seguida, usar o Robot /video/thumbs para gerar miniaturas do vídeo antes de exportá-las para o Google Cloud Storage, tudo em uma única Assembly.
Vamos ver, passo a passo, como criar uma Assembly como essa!
Criando a Assembly
Antes de começar a criar nossa Assembly, precisamos obter o arquivo JSON da conta de serviço. Ele é necessário para que nossas Assemblies usem a API do Google Cloud. Para gerar o seu arquivo JSON, acesse a seção de contas de serviço do Google Cloud Console e crie uma nova conta de serviço. Depois de atribuir uma função à nova conta de serviço, na etapa final, clique em Create key e selecione JSON como tipo (a chave será baixada automaticamente).
Recomendamos fortemente que você armazene seu token de acesso nas Credenciais de Template aqui na Transloadit. Para isso, primeiro selecione Google Storage como tipo de credencial e, em seguida, preencha o ID do projeto do Google e o nome do bucket, além do arquivo JSON que baixamos antes.
Isso mantém sua chave de acesso criptografada no nosso banco de dados e ajuda a impedir que usuários mal-intencionados tenham acesso a ela. Como você pode ver na captura de tela abaixo, nomeei minha credencial do Google como my_google_cred. Vamos precisar desse nome mais adiante, quando começarmos a criar nossa Assembly.

Estas são as Assembly Instructions que usei depois de configurar corretamente minhas Credenciais de Template:
{
"steps": {
":original": {
"robot": "/upload/handle"
},
"thumbnailed": {
"use": [":original"],
"robot": "/video/thumbs",
"result": true,
"count": 1,
"ffmpeg_stack": "v7"
},
"exported": {
"use": ["thumbnailed"],
"robot": "/google/store",
"credentials": "my_google_cred",
"path": "screenshots/${file.original_basename}.${file.ext}"
}
}
}
Nos dois primeiros Steps, o Robot /upload/handle faz o upload de um arquivo de vídeo para a Transloadit e, em seguida, o Robot /video/thumbs tira capturas de tela do vídeo.
No Step seguinte, as capturas de tela são passadas ao
Robot /google/store para
exportação. O parâmetro credentials acessa a credencial do Google Storage, que
armazenei nas minhas Credenciais de Template com
o nome my_google_cred. Em seguida, o parâmetro path armazena as imagens
exportadas em uma pasta chamada screenshots no meu Google Storage e dá a cada
arquivo o seu nome original. Se você estiver preocupado com colisões, pode adicionar outras
Assembly Variables a esse caminho, como
um hash MD5 (${file.md5hash}) ou o ${unique_prefix}.
Para testar estas Assembly Instructions, execute o seguinte código Node.js no seu servidor, passando o caminho de um arquivo de vídeo local como argumento.
const { Transloadit } = require('transloadit')
const transloadit = new Transloadit({
authKey: process.env.TRANSLOADIT_AUTH_KEY,
authSecret: process.env.TRANSLOADIT_AUTH_SECRET,
})
const options = {
files: { video: process.argv[2] },
params: {
steps: {
':original': {
robot: '/upload/handle',
},
thumbnailed: {
use: [':original'],
robot: '/video/thumbs',
result: true,
ffmpeg_stack: 'v7',
count: 1,
},
exported: {
use: ['thumbnailed'],
robot: '/google/store',
credentials: 'my_google_cred',
path: 'screenshots/${file.original_basename}.${file.ext}',
},
},
},
}
transloadit.createAssembly(options)
.then((result) => console.log({ result }))
.catch((error) => {
console.error(error)
process.exitCode = 1
})
Os resultados
Nossa Assembly parece estar funcionando perfeitamente! Depois de executar o código Node.js acima, uma imagem com o mesmo nome do meu arquivo de vídeo aparece na minha pasta screenshots.

Esperamos que este post tenha esclarecido um pouco mais o que o Robot /google/store pode fazer por você e como ele pode ser implementado.
Até o próximo post da nossa série Re-loadit!
