const { google } = require('googleapis'); const fs = require('fs'); class YouTubeAutoUploader { constructor(authClient) { this.youtube = google.youtube({ version: 'v3', auth: authClient }); } async uploadVideo(videoPath, metadata) { const res = await this.youtube.videos.insert({ part: 'snippet,status,contentDetails', requestBody: { snippet: { title: metadata.title, // Max 100 chars description: metadata.description, // Max 5000 chars tags: metadata.tags, // Max 500 chars total categoryId: this.getCategoryId(metadata.category), defaultLanguage: 'hi', defaultAudioLanguage: 'hi' }, status: { privacyStatus: metadata.schedule ? 'private' : 'public', publishAt: metadata.schedule || null, selfDeclaredMadeForKids: false } }, media: { body: fs.createReadStream(videoPath) } }); return res.data; } getCategoryId(category) { const categories = { 'News': 25, 'Education': 27, 'Entertainment': 24, 'Sports': 17 }; return categories[category] || 22; // Default: People & Blogs } }