@pipedream/assemblyai
Version:
Pipedream AssemblyAI Components
123 lines (119 loc) • 2.96 kB
JavaScript
import { axios } from "@pipedream/platform";
import {
LANGUAGE_CODE_OPTIONS, SUBTITLE_FORMAT_OPTIONS,
} from "./common/constants.mjs";
export default {
type: "app",
app: "assemblyai",
propDefinitions: {
transcriptId: {
type: "string",
label: "Transcript",
description: "Identifier of a transcript",
async options({ prevContext }) {
const config = {};
if (prevContext?.prevUrl) {
config.url = prevContext.prevUrl;
}
const {
transcripts, page_details: pageDetails,
} = await this.listTranscripts(config);
const options = transcripts.map(({ id }) => id );
return {
options,
context: {
prevUrl: pageDetails?.prev_url,
},
};
},
},
languageCode: {
type: "string",
label: "Language Code",
description: "The language of your audio file. The default value is `en_us`.",
options: LANGUAGE_CODE_OPTIONS,
default: "en_us",
optional: true,
},
subtitleFormat: {
type: "string",
label: "Subtitle Format",
description: "Format used for subtitles or closed captioning",
options: SUBTITLE_FORMAT_OPTIONS,
},
},
methods: {
_baseUrl() {
return "https://api.assemblyai.com/v2";
},
_headers() {
return {
"authorization": `${this.$auth.api_key}`,
};
},
async _makeRequest({
$ = this,
path,
url,
...args
}) {
return axios($, {
url: url || `${this._baseUrl()}${path}`,
headers: this._headers(),
...args,
});
},
getTranscript({
transcriptId, ...args
}) {
return this._makeRequest({
path: `/transcript/${transcriptId}`,
...args,
});
},
listTranscripts(args = {}) {
return this._makeRequest({
path: "/transcript",
...args,
});
},
createTranscript(args = {}) {
return this._makeRequest({
path: "/transcript",
method: "POST",
...args,
});
},
createCaptions({
transcriptId, format, ...args
}) {
return this._makeRequest({
path: `/transcript/${transcriptId}/${format}`,
...args,
});
},
async paginateTranscripts(args = {}) {
const config = {
...args,
};
let prevUrl;
const results = [];
const afterId = args.params?.after_id;
do {
const {
transcripts, page_details: pageDetails,
} = await this.listTranscripts(config);
for (const transcript of transcripts) {
if (transcript.id === afterId) {
return results;
}
results.push(transcript);
}
config.params.after_id = undefined;
prevUrl = pageDetails.prev_url;
config.url = prevUrl;
} while (prevUrl);
return results;
},
},
};