HotTrack / frontend /src /api /index.js
chanfasf's picture
Feature: add cleanup invalid videos functionality
5960aee
Raw
History Blame Contribute Delete
2.56 kB
import axios from 'axios'
const api = axios.create({
baseURL: '/api/v1',
timeout: 60000,
})
api.interceptors.response.use(
(response) => {
console.log('[API] Response:', response.config.url, 'status:', response.status, 'data length:', response.data?.length)
return response
},
(error) => {
console.error('[API] Error:', error.config?.url, error.message)
return Promise.reject(error)
}
)
export const videosApi = {
getTopViewed: (params) => api.get('/videos/top-viewed', { params }),
getTopLiked: (params) => api.get('/videos/top-liked', { params }),
getTrending: (params) => api.get('/videos/trending', { params }),
getStats: () => api.get('/videos/stats'),
cleanupInvalid: (params) => api.post('/videos/cleanup-invalid', null, { params }),
}
export const analyticsApi = {
getViral: (params) => api.get('/analytics/viral', { params }),
calculateViral: (params) => api.post('/analytics/viral/calculate', null, { params }),
getRevenue: (params) => api.get('/analytics/revenue', { params }),
getRevenueRanking: (params) => api.get('/analytics/revenue/ranking', { params }),
calculateRevenue: (params) => api.post('/analytics/revenue/calculate', null, { params }),
analyzeTitle: (data) => api.post('/ai/analyze-title', data),
analyzeNiche: (data) => api.post('/ai/analyze-niche', data),
predictTrend: (data) => api.post('/ai/predict-trend', data),
calculateRevenueAI: (data) => api.post('/ai/calculate-revenue', data),
}
export const tasksApi = {
getConfigStatus: () => api.get('/crawl/config-status'),
testYoutubeApi: () => api.get('/crawl/test-youtube-api'),
startCrawl: (platform, params) => api.post(`/crawl/${platform}`, null, { params }),
seedDemo: () => api.post('/crawl/seed-demo'),
resetAndCrawl: () => api.post('/crawl/reset-and-crawl'),
calculateRevenue: () => api.post('/crawl/calculate-revenue'),
}
export const crawlApi = {
crawlYoutubeTrending: (params) => api.post('/crawl/youtube/trending', null, { params }),
crawlYoutubeMostViewed: (params) => api.post('/crawl/youtube/most-viewed', null, { params }),
crawlYoutubeViral: (params) => api.post('/crawl/youtube/viral-candidates', null, { params }),
crawlTiktokTrending: (params) => api.post('/crawl/tiktok/trending', null, { params }),
crawlTiktokMostViewed: (params) => api.post('/crawl/tiktok/most-viewed', null, { params }),
crawlTiktokViral: (params) => api.post('/crawl/tiktok/viral-candidates', null, { params }),
crawlAll: (params) => api.post('/crawl/all', null, { params }),
}
export default api