Executando verificação de segurança...
1

Tenho uma máquina um pouco mais antiga em casa mesmo que deixei rodando o script, geralmente utilizo ela com o ubuntu server para pequenos projetos pessoais, para executar 1x por dia tem várias abordagens, você pode agendar via cron ou então deixar o código todo em um loop e e adicionar um sleep de 24 horas. Que foi a abordagem que eu utilizei, inclusive com uma pequena lógica de retry em caso de falhas, não é uma das melhores mas para o meu caso está mais do que suficiente.

Por exemplo:

async function main() {
  const allVideosFromChannel = await getAllVideosByChannelUrlAsync('https://www.youtube.com/@canal_escolhido_aqui')
  await saveOnlyNewVideos(allVideosFromChannel);
  await transcribeVideos();
  await postProcessingTranscription();
  await publishPosts();
}

while(true) {
  // 1 minute -> 60 seconds
  // 1 hour -> 3600 seconds
  // 1 day -> 86400 seconds
  const sleepingTimeInSeconds = 86400;
  let tentative = 1;
  const initialSleepingTimeToRetry = 60;
  const retry = 3;
  try {
    await main();
    console.log('Waiting to check for new videos...');
    await new Promise(resolve => setTimeout(resolve, sleepingTimeInSeconds));
    tentative = 1;
  } catch (error) {
    console.log(error);
    if (tentative === retry) {
      console.log('Max retries reached. Waiting to check for new videos...');
      await new Promise(resolve => setTimeout(resolve, sleepingTimeInSeconds));
      tentative = 1;
    }
    const backoffTime = initialSleepingTimeToRetry * (initialSleepingTimeToRetry * (2 ** (retry - 1)));
    console.log(`Retrying in ${backoffTime} seconds... (Attempt ${tentative} of ${retry})`);
    await new Promise(resolve => setTimeout(resolve, backoffTime * 1000));
    tentative++;
  }
}
Carregando publicação patrocinada...