Skip to main content
Projects Youka में शीर्ष-स्तरीय संसाधन हैं। प्रत्येक प्रोजेक्ट अपनी source फ़ाइल, अलग किए गए stems, synced lyrics, exports, और project settings का स्वामी होता है।

एक प्रोजेक्ट बनाना

अधिकांश मामलों में, client.projects.create() का उपयोग करें — यह आपके लिए uploads संभालता है।
const operation = await client.projects.create({
  source: { type: "path", path: "./song.mp3" },
  lyricsSource: { type: "transcribe" },
});
// => ProjectOperation

Source types

डिस्क से एक फ़ाइल पढ़ता है।
source: {
  type: "path",
  path: "./song.mp3",
  contentType: "audio/mpeg", // optional, inferred if omitted
}

अन्य फ़ील्ड्स

title
string
प्रोजेक्ट का शीर्षक। डिफ़ॉल्ट रूप से source filename।
splitModel
SplitModel
Stem separation मॉडल। डिफ़ॉल्ट mdx23cSplit model reference देखें।
presetId
string
निर्माण के समय एक reusable preset लागू करें।
lyricsSource
LyricsSource
lyrics sync कॉन्फ़िगर करें। नीचे देखें।

Lyrics sources

// Transcribe lyrics from the audio
lyricsSource: {
  type: "transcribe",
  syncModel: "audioshake-transcription", // optional
  language: "en",                        // optional
}

// Align exact lyrics to the audio
lyricsSource: {
  type: "align",
  lyrics: "First line\nSecond line\n...",
  syncModel: "audioshake-alignment",
}

client.projects.create(input, options?)

client.projects.create() एक low-level inputFile source भी स्वीकार करता है जब आपके पास पहले से एक uploaded inputFileId हो।
const upload = await client.uploads.create({
  filename: "song.mp3",
  contentType: "audio/mpeg",
  contentLength: buffer.byteLength,
});

await client.uploads.upload(upload.uploadUrl, buffer, {
  contentType: "audio/mpeg",
});

const operation = await client.projects.create({
  source: {
    type: "inputFile",
    inputFileId: upload.inputFileId,
    filename: "song.mp3",
  },
  title: "My Song",
});

client.projects.quote(input, options?)

प्रोजेक्ट बनाए बिना, प्रोजेक्ट बनाने के लिए आवश्यक credits का quote निकालें।
const quote = await client.projects.quote({
  source: { type: "path", path: "./song.mp3" },
  lyricsSource: { type: "transcribe", language: "en" },
  splitModel: "mdx23c",
});

console.log(quote.creditsRequired, quote.sufficientBalance);
client.projects.quote(...) वही source forms स्वीकार करता है जो client.projects.create(...) करता है, जिसमें URL maxVideoQuality भी शामिल है। यदि आपको पहले से मीडिया duration पता है और आप quote के लिए सिर्फ़ फ़ाइल अपलोड नहीं करना चाहते, तो low-level REST shape पास करें:
const quote = await client.projects.quote({
  durationSeconds: 210,
  lyricsSource: null,
  splitModel: "mdx23c",
});

client.uploads.create(body, options?)

एक upload slot allocate करें और एक signed URL प्राप्त करें।
const upload = await client.uploads.create({
  filename: "song.mp3",
  contentType: "audio/mpeg",
  contentLength: 4_521_344,
});
// => { inputFileId, uploadUrl }

client.uploads.upload(uploadUrl, body, options?)

signed URL पर फ़ाइल bytes को PUT करें।
await client.uploads.upload(upload.uploadUrl, fileBuffer, {
  contentType: "audio/mpeg",
  signal: abortController.signal,
});
body
FetchBody
required
कोई भी fetch-compatible body: Blob, File, ArrayBuffer, Uint8Array, ReadableStream, या string
यदि upload non-2xx status लौटाता है, तो code UPLOAD_FAILED के साथ YoukaRequestError throw होता है।

client.projects.get(projectId, options?)

पूरा project state प्राप्त करें, जिसमें stems, lyrics, और exports शामिल हैं।
const project = await client.projects.get("prj_abc123");
console.log(project.title, project.stems, project.lyrics);

client.projects.update(projectId, body, options?)

प्रोजेक्ट metadata को patch करें।
const project = await client.projects.update("prj_abc123", {
  title: "Updated title",
  artists: ["Artist name"],
});
title या artists में से कम-से-कम एक पास करें।

client.projects.list(options?)

authenticated account के स्वामित्व वाले हर प्रोजेक्ट की सूची दें।
const projects = await client.projects.list();
projects.forEach((p) => console.log(p.id, p.title));
project list items का एक array लौटाता है (getProject की तुलना में एक leaner shape)।

client.projects.delete(projectId, options?)

एक प्रोजेक्ट और उससे जुड़े सभी stems, lyrics, और exports हटाएँ।
await client.projects.delete("prj_abc123", {
  idempotencyKey: "delete-prj_abc123",
});
deletion स्थायी है। retries सुरक्षित रखने के लिए idempotency key के साथ जोड़ें।

आगे क्या

  • Stems — stem separation फिर से चलाएँ
  • Lyrics sync — lyrics को फिर से sync करें
  • Exports — तैयार वीडियो render करें
  • Tasksclient.projects.wait के साथ project operations का इंतज़ार करें