Spaces:
Sleeping
Sleeping
| import axios from 'axios'; | |
| const API_BASE = '/api'; | |
| const api = axios.create({ | |
| baseURL: API_BASE, | |
| timeout: 600000, // 10 min timeout for long operations | |
| }); | |
| export const ingestUrl = async (url) => { | |
| const response = await api.post('/ingest/url', { url }); | |
| return response.data; | |
| }; | |
| export const ingestUpload = async (file, onProgress) => { | |
| const formData = new FormData(); | |
| formData.append('file', file); | |
| const response = await api.post('/ingest/upload', formData, { | |
| headers: { 'Content-Type': 'multipart/form-data' }, | |
| onUploadProgress: (progressEvent) => { | |
| const percent = Math.round((progressEvent.loaded * 100) / progressEvent.total); | |
| if (onProgress) onProgress(percent); | |
| }, | |
| }); | |
| return response.data; | |
| }; | |
| export const getSessionStatus = async (sessionId) => { | |
| const response = await api.get(`/session/${sessionId}/status`); | |
| return response.data; | |
| }; | |
| export const analyzeVideo = async (sessionId, numClips = 5) => { | |
| const response = await api.post(`/session/${sessionId}/analyze`, { num_clips: numClips }); | |
| return response.data; | |
| }; | |
| export const generateClips = async (sessionId, clips) => { | |
| const response = await api.post(`/session/${sessionId}/generate`, { clips }); | |
| return response.data; | |
| }; | |
| export const getClipsStatus = async (sessionId) => { | |
| const response = await api.get(`/session/${sessionId}/clips`); | |
| return response.data; | |
| }; | |
| export const getConfig = async () => { | |
| const response = await api.get('/config'); | |
| return response.data; | |
| }; | |
| export const deleteSession = async (sessionId) => { | |
| const response = await api.delete(`/session/${sessionId}`); | |
| return response.data; | |
| }; | |
| export const getClipDownloadUrl = (clipId) => `${API_BASE}/clip/${clipId}/download`; | |
| export default api; | |