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ä.

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:
- Seuraa tietyn direktorion sisältöä paikallisella koneella tai palvelimella.
- Kun uusi video-tiedosto (
.mp4
,.mov
ym.) lisätään, se automatisoi sen lähetys määritetyn kokoelman Snapencodeen. - Lähetystä seuraten, se tarkistaa tilannepisteen aina kunnes video on “valmis”.
- 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
jachokidar
: 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.
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.
// (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ä.
// (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!