Skip to Content

Automatisere din videofløye med Snapencode-API

Lær hvordan du bygger en fullstendig automatisert videostrøm, fra lastning til prosessering og levering, ved hjelp av Snapencode-klientfremmed API og et enkelt Node.js-skript.

av
Hero image for Automatisere din videofløye med Snapencode-API

I dagens innhold-drevne verden kan manuell video-opplasting og -behandling være en betydelig bremse, som sakte ned hele innholds-pipelinen din. Den sanne kraften i en plattform som Snapencode ligger i dens API-første design, som tillater deg å automatisere disse gjentatte oppgaver og gjenopprette verdifulle tid.

I denne tutorialen skal vi bygge et praktisk “vakt-mappe”-skript som overvåker en mappe etter nye videofiler, automatisk laster dem inn på Snapencode og bekrefter deres behandlingsstatus.

Målet: En “Vakt-Mappe” Opploader

Vårt mål er å opprette et Node.js-skript som oppnår følgende:

  1. Overvåker en spesiell mappe på en lokal maskin eller server.
  2. Når en ny videofil (.mp4, .mov osv.) legges til, laster den automatisk inn på en bestemt samling i Snapencode.
  3. Etter å ha lastet inn, poller den status-endepunktet til den videoen er “fått”.
  4. Når den er ferdig, logger den videoid-en og er klar for neste fil.

Dette er en perfekt løsning for arbeidsflyt hvor innhold genereres programmermæssig eller dropes inn i en delt mappe av ikke-tekniske teammedlemmer.

Forutsetninger

  • En Snapencode API-nøkkel: Generer en fra din dashboard under Innstillinger > API-Nøkler.
  • Node.js: Vi vil bruke JavaScript og Node.js runtime for vårt skript.
  • axios og chokidar: To enkle pakker for å gjøre API-anrop og overvåke filer.
npm install axios chokidar form-data

Bygging av Automatiseringsskriptet

Vi vil opprette et enkelt, komplett skript. Låt oss kalle det upload-watcher.js.

Trinn 1: Konfigurasjon av Skriptet

Først, låt oss sette opp konfigurasjonsvariablene og importere nødvendige biblioteker øverst i vårt 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'); // --- Konfigurasjon --- const API_BASE_URL = 'https://din-Snapencode-domene.com/api/client/v1'; const API_KEY = process.env.Snapencode_API_KEY || 'sk_din_api_nøkkel_her'; // Beste praksis: Bruk miljøvariabler const TARGET_FOLDER = 'rot/automatiserte-opplastinger'; // Samlingsveien i Snapencode const WATCH_DIRECTORY = './videos-to-upload'; // En sette for å holde styr på filer som nå er under behandling for å unngå dobbel-opplasting const processingFiles = new Set();

Bruk av miljøvariabler (process.env.Snapencode_API_KEY) for din API-nøkkel er mye tryggere enn å hard-kode den direkte i skriptet.

Trinn 2: Opprette de Viktigste Funksjonene

Neste, legg til de to hovedfunksjonene: en for håndtering av fil-opplasting og en annen for overvåking av behandlingsstatus.

upload-watcher.js
// (Legg til dette koden under konfigurasjonssekvensen) async function uploadVideo(filePath) { console.log(`[OPPLASTING] Starter opplasting for: ${path.basename(filePath)}`); processingFiles.add(filePath); // Mark fil som nå er 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] Opplasting godkjent! Video ID: ${response.data.data.id}`); return response.data.data.id; } catch (error) { console.error(`[FEIL] Opplastning feilet for ${path.basename(filePath)}:`, error.response?.data?.message || error.message); return null; } } async function monitorStatus(videoId, filePath) { if (!videoId) { processingFiles.delete(filePath); // Fjern fra behandlingssett på feil return; } console.log(`[OVERVÅKING] Overvåker 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) { // Fått console.log(`✅ [FÅTT] Behandling fullført for Video ID: ${videoId}!`); clearInterval(interval); processingFiles.delete(filePath); // Fjern fra sett på suksess } else if (status === 7) { // Feilet console.error(`❌ [FEILET] Behandling feilet for Video ID: ${videoId}.`); clearInterval(interval); processingFiles.delete(filePath); } else { console.log(`[STATUS] Video ID ${videoId}: ${status_text} (${status})`); } } catch (error) { console.error(`[FEIL] Kunde ikke hente status for ${videoId}:`, error.message); clearInterval(interval); processingFiles.delete(filePath); } }, 5000); // Sjekk hver femte sekund }

Dette skriptet demonstrerer en server-til-server-interaksjon. Nevr eksponer din hemmelige API-nøkkel i klient-side browser-kode.

Trinn 3: Initialisere Filsjekk

Til slutt, legg til chokidar logikken øverst i skriptet. Dette vil overvåke mappen og trigge våre funksjoner når en ny fil legges til.

upload-watcher.js
// (Legg til dette koden under konfigurasjonssekvensen) function initializeWatcher() { console.log(`--- Snapencode Vakt-Mappe Innstilt ---`); console.log(`Overvåker nye videoer i: ${path.resolve(WATCH_DIRECTORY)}`); if (!fs.existsSync(WATCH_DIRECTORY)) { console.log(`Oppretter vakt-mappe...`); fs.mkdirSync(WATCH_DIRECTORY, { recursive: true }); } const watcher = chokidar.watch(WATCH_DIRECTORY, { ignored: /(^|[\/\\])\../, // Ignorer punkt-filer persistent: true, ignoreInitial: true, // Ikke last opp filer som allerede er der på start }); watcher.on('add', (filePath) => { if (processingFiles.has(filePath)) { return; // Skip hvis allerede under behandling } console.log(`[DETEKTERT] Ny fil: ${path.basename(filePath)}`); // Vent en liten stund for å sikre at filen er fullstendig skrevet før opplasting setTimeout(async () => { const videoId = await uploadVideo(filePath); await monitorStatus(videoId, filePath); }, 2000); }); } initializeWatcher();

Trinn 4: Kjør Din Vakt-Mappe

Med upload-watcher.js-filen fullstendig, kan du kjøre den fra terminalen.

# Beste praksis: Sett API-nøkkel som en miljøvariabel export Snapencode_API_KEY="sk_din_api_nøkkel_her" # Kjør skriptet node upload-watcher.js

Nå vil noen nye videoer du dropper inn i ./videos-to-upload mappe automatisk lastes inn og behandles!