Skip to Content

Automatizace Vašeho video workflowu pomocí rozhraní API Snapencode

Naučte se stavět plně automatizovaný tok videa, od nahrání po zpracování a doručování, pomocí klienta rozhraní API Snapencode a jednoduchého skriptu Node.js.

při
Hero image for Automatizace Vašeho video workflowu pomocí rozhraní API Snapencode

V dnešním světě zaměřeném na obsah je ruční nahrávání a zpracování videa významným zátěží, která zpomaluje celý proces obsahu. Skutečná síla platformy jako Snapencode spočívá v její API-first designu, který umožňuje automatizovat tyto opakované úkoly a získat zpět cenný čas.

V tomto tutoriálu budeme budovat praktický skript “watch folder”, který sleduje adresář pro nové soubory videa, automaticky je nahrává do Snapencode a potvrzuje jejich stav zpracování.

Cíl: Skript “Watch Folder” pro Nahrávání

Naším cílem je vytvořit Node.js skript, který dosahuje následujících cílů:

  1. Sleduje konkrétní adresář na lokálním počítači nebo serveru.
  2. Když do něj přidáte nový soubor videa (.mp4, .mov atd.), automaticky jej nahrávejte do určené kolekce v Snapencode.
  3. Po nahrání sleduje stav endpointem, dokud video není “dokončeno.”
  4. Jakmile je dokončeno, zaznamená ID videa a je připraveno na další soubor.

Toto je ideální řešení pro workflowy, kde obsah se generuje programově nebo je přidáván do sdíleného adresáře nezávislými členy týmu.

Předpoklady

  • API klíč Snapencode: Generujte jeden z vašeho panelu pod Nastavení > API klíče.
  • Node.js: Použijeme JavaScript a runtime Node.js pro skript.
  • axios a chokidar: Dva jednoduché balíky pro vytváření požadavků na API a sledování souborů.
npm install axios chokidar form-data

Budování Skriptu pro Automatizaci

Vytvoříme jeden kompletní skript. Nazvěme ho upload-watcher.js.

Krok 1: Konfigurace Skriptu

Začněme nastavením konfiguračních proměnných a importem potřebných knihoven na začátku našeho souboru upload-watcher.js.

upload-watcher.js
const axios = require('axios'); const FormData = require('form-data'); const fs = require('fs'); const path = require('path'); const chokidar = require('chokidar'); // --- Konfigurace --- const API_BASE_URL = 'https://your-Snapencode-domain.com/api/client/v1'; const API_KEY = process.env.Snapencode_API_KEY || 'sk_your_api_key_here'; // Nejlepší praxe: použijte proměnné prostředí const TARGET_FOLDER = 'root/automated-uploads'; // Cesta kolekce v Snapencode const WATCH_DIRECTORY = './videos-to-upload'; // Sada pro sledování souborů aktuálně zpracovávaných, aby se zabránilo dvojnásobnému nahrávání const processingFiles = new Set();

Používání proměnných prostředí (process.env.Snapencode_API_KEY) pro váš API klíč je mnohem bezpečnější než jeho přímé ukládání do skriptu.

Krok 2: Vytvoření hlavních funkcí

Následně přidejte dvě hlavní funkce: jednu pro zpracování nahrávání souborů a druhou pro sledování stavu zpracování.

upload-watcher.js
// (Přidejte tento kód pod sekci konfigurace) async function uploadVideo(filePath) { console.log(`[NÁHRÁVÁNÍ] Začínáme nahrávat soubor: ${path.basename(filePath)}`); processingFiles.add(filePath); // Označíme soubor jako zpracovávaný const form = new FormData(); form.append('video', fs.createReadStream(filePath)); form.append('folder', TARGET_FOLDER); try { const response = await axios.post(`${API_BASE_URL}/uploads`, form, { headers: { ...form.getHeaders(), 'Authorization': `Bearer ${API_KEY}` }, }); console.log(`[ÚSPĚŠNÉ] Nahrání přijato! ID videa: ${response.data.data.id}`); return response.data.data.id; } catch (error) { console.error(`[NEÚSPĚŠNÉ] Nahrání pro soubor ${path.basename(filePath)} selhalo:`, error.response?.data?.message || error.message); return null; } } async function monitorStatus(videoId, filePath) { if (!videoId) { processingFiles.delete(filePath); // Odstraní z sady zpracovávaných souborů při selhání return; } console.log(`[MONITOROVÁNÍ] Sledujeme stav videa ID: ${videoId}`); const interval = setInterval(async () => { try { const response = await axios.get(`${API_BASE_URL}/uploads/${videoId}`, { headers: { 'Authorization': `Bearer ${API_KEY}` }, }); const { status, status_text } = response.data.data; if (status === 6) { // Dokončeno console.log(`✅ [DOKONČENO] Zpracování dokončeno pro Video ID: ${videoId}!`); clearInterval(interval); processingFiles.delete(filePath); // Odstraní z sady při úspěchu } else if (status === 7) { // Selhalo console.error(`❌ [SELHALO] Zpracování selhalo pro Video ID: ${videoId}.`); clearInterval(interval); processingFiles.delete(filePath); } else { console.log(`[STAV] Video ID ${videoId}: ${status_text} (${status})`); } } catch (error) { console.error(`[CHYBA] Nemohu získat stav pro ${videoId}:`, error.message); clearInterval(interval); processingFiles.delete(filePath); } }, 5000); // Zkontrolujte každých 5 sekund }

Tento skript demonstruje interakci server-server. Nikdy neposkytněte svůj tajný API klíč v klient-side kódu.

Krok 3: Inicializace sledování souborů

Nakonec přidejte logiku chokidar na konec skriptu. Toto sleduje adresář a spouští naše funkce, když do něj přidáte nový soubor.

upload-watcher.js
// (Přidejte tento kód na konec souboru) function initializeWatcher() { console.log(`--- Snapencode Watch Folder Initialized ---`); console.log(`Sledujeme nové soubory videa v: ${path.resolve(WATCH_DIRECTORY)}`); if (!fs.existsSync(WATCH_DIRECTORY)) { console.log(`Vytváříme sledovaný adresář...`); fs.mkdirSync(WATCH_DIRECTORY, { recursive: true }); } const watcher = chokidar.watch(WATCH_DIRECTORY, { ignored: /(^|[\/\\])\../, // Ignorujte soubory začínající tečkou persistent: true, ignoreInitial: true, // Nahrávejte soubory, které jsou již v adresáři na startu }); watcher.on('add', (filePath) => { if (processingFiles.has(filePath)) { return; // Přehlédněte, pokud je již zpracováván } console.log(`[DETEKTUJE] Nový soubor: ${path.basename(filePath)}`); // Čekáme na chvíli, aby se soubor naplno napsal před nahráním setTimeout(async () => { const videoId = await uploadVideo(filePath); await monitorStatus(videoId, filePath); }, 2000); }); } initializeWatcher();

Krok 4: Spuštění Vašeho Sledovatele

S kompletním souborem upload-watcher.js můžete spustit skript z vaší terminálu.

# Nejlepší praxe: nastavte API klíč jako proměnnou prostředí export Snapencode_API_KEY="sk_your_api_key_here" # Spusťte skript node upload-watcher.js

Teď, jakmile přidáte nový soubor video do adresáře ./videos-to-upload, bude automaticky nahrán a zpracován!