Skip to Content

Ohjelmistotuotantoon liittyvän videotyöntekijänsä automatisointi Snapencode API:llä

Opettele rakentamaan täysin automaattisen videotyöpajan, kuten lataaminen, prosessointi ja toimitus, käyttämällä Snapencoden asiakaspuolista API:ta ja yksinkertaista Node.js -skriptiä.

vastaan
Hero image for Ohjelmistotuotantoon liittyvän videotyöntekijänsä automatisointi Snapencode API:llä

Nykyajan sisällöntuotannon maailmassa manuaalinen video- ja prosessointi voi olla merkittävä este, hidastamassa koko sisältöpiirin. Plataformien kuten Snapencode on suurimmillaan API-pohjainen suunnittelunsa avulla voidaan automatisoida näitä toistuvia tehtäviä ja palauttaa arvokas aika.

Tämän opetusohjeen tarkoituksena on rakentaa käytännöllinen “katsoja kansi” -skripti, joka seuraa direktorioita uusille video-tiedostoille, automatisoi niiden lähetys Snapencodeen ja vahvistaa prosessointitilanteet.

Tavoite: Katsoja Kansi -Lähetin

Tavoitteemme on luoda Node.js skripti, joka saavuttaa seuraavia tavoitteita:

  1. Seuraa tietyn direktorion sisältöä paikallisella koneella tai palvelimella.
  2. Kun uusi video-tiedosto (.mp4, .mov ym.) lisätään, se automatisoi sen lähetys määritetyn kokoelman Snapencodeen.
  3. Lähetystä seuraten, se tarkistaa tilannepisteen aina kunnes video on “valmis”.
  4. Kun valmis, se kirjaa videon ID:n ja on valmis seuraavaan tiedostoon.

Tämä on täydellinen ratkaisu työmaille, joissa sisältö generoidaan ohjelmallisesti tai lisätään yhteiseen kansiin ei-tekniikkoisilla tiimiläisillä.

Edellytykset

  • Snapencode API Avain: Luo yhden uuden avaimen käyttämällä asetukset > API Avaimet.
  • Node.js: Käytämme JavaScriptia ja Node.js -ajonaikaa skriptissamme.
  • axios ja chokidar: Yksinkertaisia paketteja, jotka tekevät API-pyynnöt ja katsellessaan tiedostoja.
npm install axios chokidar form-data

Rakentaminen automaatio skripti

Luomme yhden täydellisen skriptin. Nimetään se upload-watcher.js.

Vaihe 1: Konfigurointi Skriptiä

Ensimmäisessä vaiheessa, määritämme konfiguraatiomerkinnät ja tuodaan tarvittavat kirjastot skriptin alkuun.

upload-watcher.js
const axios = require('axios'); const FormData = require('form-data'); const fs = require('fs'); const path = require('path'); const chokidar = require('chokidar'); // --- Konfiguraatio --- 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'; // Paras käytäntö: käytä ympäristön muuttujia const TARGET_FOLDER = 'root/automated-uploads'; // Kokoelman polku Snapencodeessa const WATCH_DIRECTORY = './videos-to-upload'; // Setti, joka seuraa prosessoiduissa tiedostoissa välttääksesi kaksinkertaisia lähetyskokeita const processingFiles = new Set();

Käyttämällä ympäristön muuttujia (process.env.Snapencode_API_KEY) on paljon turvallisempaa kuin koodata API avain suoraan skriptiin.

Vaihe 2: Pääfunktioiden luominen

Seuraavaksi lisätään pääfunktioita, joista yksi vastaa tiedoston lähetystä ja toinen prosessointitilanteiden seurantaa.

upload-watcher.js
// (Lisää tämä koodi konfiguraatiopohjalle) async function uploadVideo(filePath) { console.log(`[UPLOADING] Alkaa lähetys: ${path.basename(filePath)}`); processingFiles.add(filePath); // Merkata tiedosto prosessoiduksi 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(`[ONNISTUI] Lähetys hyväksytty! Video ID: ${response.data.data.id}`); return response.data.data.id; } catch (error) { console.error(`[EPIÄ] Lähetys epäonnistui tiedostolle ${path.basename(filePath)}:`, error.response?.data?.message || error.message); return null; } } async function monitorStatus(videoId, filePath) { if (!videoId) { processingFiles.delete(filePath); // Poista prosessoiduista setistä epäonnistuneilla lähetysyrityksillä return; } console.log(`[SEURATAAN] Seuraa tilannetta 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) { // Valmis console.log(`✅ [VALMIS] Prosessointi valmis Video ID: ${videoId}!`); clearInterval(interval); processingFiles.delete(filePath); // Poista prosessoiduista setistä onnistuneilla lähetysyrityksillä } else if (status === 7) { // Epiä console.error(`❌ [EPIÄ] Prosessointi epäonnistui Video ID: ${videoId}.`); clearInterval(interval); processingFiles.delete(filePath); } else { console.log(`[TILANNE] Video ID ${videoId}: ${status_text} (${status})`); } } catch (error) { console.error(`[VIRHE] Ei saatu tilannetta Video ID: ${videoId}:`, error.message); clearInterval(interval); processingFiles.delete(filePath); } }, 5000); // Tarkista joka 5 sekuntia }

Tämä skripti esittelee palvelu-palvelu - vuorovaikutuksen. Älä paljasta salasanaa selaimen puolella.

Vaihe 3: Käynnistä tiedoston seuranta

Lopulta lisätään chokidar logiikka skriptin loppuun. Tämä tarkoittaa, että direktorioita seuraa ja kutsuu funktioita uusien tiedostojen lähetysyrityksessä.

upload-watcher.js
// (Lisää tämä koodi loppuun) function initializeWatcher() { console.log(`--- Snapencode Watch Folder Initialized ---`); console.log(`Seuraa uusia video-tiedostoja: ${path.resolve(WATCH_DIRECTORY)}`); if (!fs.existsSync(WATCH_DIRECTORY)) { console.log(`Luodaan seuraamodirektorio...`); fs.mkdirSync(WATCH_DIRECTORY, { recursive: true }); } const watcher = chokidar.watch(WATCH_DIRECTORY, { ignored: /(^|[\/\\])\../, // Vältä .tiedostoja persistent: true, ignoreInitial: true, // Ei lähetä jo olemassa olevia tiedostoja käynnistyksen yhteydessä }); watcher.on('add', (filePath) => { if (processingFiles.has(filePath)) { return; // Vältä kaksinkertaisia lähetysyrityksiä } console.log(`[DETTI] Uusi tiedosto: ${path.basename(filePath)}`); // Odota hetki varmistumaan, että tiedosto on kirjoitettu kokonaan ennen lähetystä setTimeout(async () => { const videoId = await uploadVideo(filePath); await monitorStatus(videoId, filePath); }, 2000); }); } initializeWatcher();

Vaihe 4: Käynnistä seuraaja

upload-watcher.js -tiedoston valmistuttua voit käynnistää sen terminaalista.

# Paras käytäntö: aseta API avain ympäristön muuttujana export Snapencode_API_KEY="sk_your_api_key_here" # Käynnistä skripti node upload-watcher.js

Nyt, joka uuden video-tiedoston lisätään ./videos-to-upload -direktorioon seuraaja automatisoi sen lähetys ja prosessointi!