-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathapp.js
92 lines (78 loc) · 2.56 KB
/
app.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
const axios = require("axios");
require("dotenv").config();
const apiKey = process.env.FIREFLIES_API_KEY; // add your Fireflies API in .env file
const subscription = process.env.FIREFLIES_SUBSCRIPTION; // add your Fireflies subscription tier in .env file
// check if Fireflies API key is present
if (!apiKey) {
console.error("API Key is missing. Please check your .env file.");
process.exit(1);
}
// array of audio files to upload
const allAudio = [
// format
// { title: "audio title", url: "audio url" },
// example
// { title: "Meeting with John", url: "https://example.com/audio1.mp3" },
// add audio titles and URLs to files below
];
const url = "https://api.fireflies.ai/graphql";
const headers = {
"Content-Type": "application/json",
Authorization: `Bearer ${apiKey}`,
};
// function to upload audio
async function uploadAudio(title, audio_url) {
// Encoding the URL to handle spaces
const encodedAudioUrl = encodeURI(audio_url);
const input = {
url: encodedAudioUrl, // Use the encoded URL
title: title,
attendees: [
{
displayName: process.env.FIREFLIES_DISPLAY_NAME || "Anon",
email: process.env.FIREFLIES_EMAIL || "",
phoneNumber: process.env.FIREFLIES_PHONE || "",
},
],
};
const data = {
query: `
mutation($input: AudioUploadInput) {
uploadAudio(input: $input) {
success
title
message
}
}
`,
variables: { input },
};
try {
const response = await axios.post(url, data, { headers: headers });
console.log("Response:", JSON.stringify(response.data));
} catch (error) {
console.error("Error:", error?.response?.data?.errors || error.message || "Unknown error");
}
}
// function to handle rate limit delay based on subscription tier
async function uploadAudioWithDelay() {
let delay;
switch (subscription) {
case "Free":
case "Pro":
delay = (1000 * 60 * 60 * 24) / 50; // 50 requests per day / 1 request per 28.8 minutes
break;
case "Business":
case "Enterprise":
delay = 1000 * 1; // 60 requests per minute translates to 1 request per second
break;
default:
console.warn("Unsupported subscription tier. Defaulting to Free tier limits.");
delay = (1000 * 60 * 60 * 24) / 50; // for 50 requests per day
}
for (const audio of allAudio) {
await uploadAudio(audio.title, audio.url);
await new Promise((resolve) => setTimeout(resolve, delay));
}
}
uploadAudioWithDelay(); // start uploading audio files with delay to Fireflies.ai platform