Skip to Content

Automatisering af din video-workflow med Snapencode-API'en

Lær at bygge en fuldt automatiseret video-pipeline fra opload til behandling og levering, ved hjælp af Snapencode-klient-API'en og et simpelt Node.js-skript.

af
Hero image for Automatisering af din video-workflow med Snapencode-API'en

I dagens indholdstyrede verden kan manuel videoopladning og -behandling være en betydelig bremse, der forsinker hele indholdspipelinen. Den rigtige kraft i en platform som Snapencode ligger i dens API-første design, der tillader automatisering af disse gentagne opgaver og genindføring af værdifuld tid.

I dette tutorial bygger vi en praktisk “watch folder”-skript, der overvåger en mappe for nye videofiler, automatisk uploader dem til Snapencode og bekræfter deres behandlingsstatus.

Målet: En “Watch Folder”-Uploader

Vores mål er at oprette et Node.js-skript, der opnår følgende:

  1. Overvåger en bestemt mappe på en lokal maskine eller server.
  2. Når en ny videofil (.mp4, .mov osv.) tilføjes, uploader det automatisk den til en bestemt samling i Snapencode.
  3. Efter upload, poller det status-endepunktet indtil videoen er “fuldført”.
  4. Når fuldført, logger det videoens ID og er klar til næste fil.

Dette er et perfekt løsning for workflows hvor indhold genereres programmermæssigt eller droppe i en delt mappe af ikke-tekniske teammedlemmer.

Forudsætninger

  • En Snapencode API-nøgle: Generér en fra din dashboard under Indstillinger > API-Nøgler.
  • Node.js: Vi bruger JavaScript og Node.js runtime for vores skript.
  • axios og chokidar: To simple pakker til at sende API-anmodninger og overvåge filer.
npm install axios chokidar form-data

Bygning af Automatiseringsskriptet

Vi vil oprette et enkelt, komplett skript. Lad os kalde det upload-watcher.js.

Trin 1: Konfigurere Skriptet

Først skal vi sætte op konfigurationsvariablerne og importere de nødvendige biblioteker i toppen af vores upload-watcher.js fil.

upload-watcher.js
const axios = require('axios'); const FormData = require('form-data'); const fs = require('fs'); const path = require('path'); const chokidar = require('chokidar'); // --- Konfiguration --- const API_BASE_URL = 'https://din-Snapencode-domæne.com/api/client/v1'; const API_KEY = process.env.Snapencode_API_NØGLE || 'sk_din_api_nøgle_hér'; // Bedste praksis: brug miljøvariabler const TARGET_FOLDER = 'root/automatiserede-oplægninger'; // Samlingensti i Snapencode const WATCH_DIRECTORY = './videos-to-upload'; // En sæt til at holde styr på filer, der er under behandling for at undgå dobbeltopladser const processingFiles = new Set();

Brug af miljøvariabler (process.env.Snapencode_API_NØGLE) til din API-nøgle er meget mere sikker end at hardkodde den direkte i skriptet.

Trin 2: Opret de grundlæggende Funktioner

Næste, tilføj de to hovedfunktioner: en for håndtering af filopladningen og en anden for overvågning af behandlingsstatus.

upload-watcher.js
// (Tilføj dette kode under konfigurationssektionen) async function uploadVideo(filePath) { console.log(`[UPLOADING] Start oploadning af: ${path.basename(filePath)}`); processingFiles.add(filePath); // Marker fil som under behandling 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(`[SUCCES] Oploadning accepteret! Video ID: ${response.data.data.id}`); return response.data.data.id; } catch (error) { console.error(`[FEJL] Oploadning mislykkedes for ${path.basename(filePath)}:`, error.response?.data?.message || error.message); return null; } } async function monitorStatus(videoId, filePath) { if (!videoId) { processingFiles.delete(filePath); // Fjern fra behandlingssæt på fejl return; } console.log(`[OVERVÅG] Overvåg status for Video 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) { // Fuldendt console.log(`✅ [FULDFØRT] Behandling afsluttet for Video ID: ${videoId}!`); clearInterval(interval); processingFiles.delete(filePath); // Fjern fra sæt på succes } else if (status === 7) { // Mislykkedes console.error(`❌ [FEJL] Behandlingen mislykkedes for Video ID: ${videoId}.`); clearInterval(interval); processingFiles.delete(filePath); } else { console.log(`[STATUS] Video ID ${videoId}: ${status_text} (${status})`); } } catch (error) { console.error(`[FEJL] Kunde ikke hente status for ${videoId}:`, error.message); clearInterval(interval); processingFiles.delete(filePath); } }, 5000); // Tjek hver 5 sekunder }

Dette skript demonstrerer en server-til-server-interaktion. Nevr udsæt din hemmelige API-nøgle i klient-side browserkode.

Trin 3: Initialisere Fildetektor

Endelig, tilføj chokidar logikken til slutningen af skriptet. Dette vil overvåge mappen og aktivere vores funktioner, når en ny fil tilføjes.

upload-watcher.js
// (Tilføj dette kode til slutningen af filen) function initializeWatcher() { console.log(`--- Snapencode Watch Folder Initialiseret ---`); console.log(`Overvåger nye videoer i: ${path.resolve(WATCH_DIRECTORY)}`); if (!fs.existsSync(WATCH_DIRECTORY)) { console.log(`Opretter overvågningsmappe...`); fs.mkdirSync(WATCH_DIRECTORY, { recursive: true }); } const watcher = chokidar.watch(WATCH_DIRECTORY, { ignored: /(^|[\/\\])\../, // Ignorer dotfiler persistent: true, ignoreInitial: true, // Undgå at oploade filer, der allerede er til stede ved starten }); watcher.on('add', (filePath) => { if (processingFiles.has(filePath)) { return; // Spring over hvis allerede under behandling } console.log(`[DETEKT] Ny fil: ${path.basename(filePath)}`); // Vent en øjeblik, til at sikre, at filen er fuldstændigt skrevet før oploadning setTimeout(async () => { const videoId = await uploadVideo(filePath); await monitorStatus(videoId, filePath); }, 2000); }); } initializeWatcher();

Trin 4: Kør Din Watcher

Med upload-watcher.js-filen fuldendt kan du køre den fra din terminal.

# Bedste praksis: sæt API-nøglen som en miljøvariabel export Snapencode_API_NØGLE="sk_din_api_nøgle_hér" # Kør skriptet node upload-watcher.js

Nu vil enhver nye videofil, du droppe i ./videos-to-upload-mappen, blive automatisk oploaded og behandlet!