Spaces:
Running
Running
| // Video data structure for recommendations | |
| const videoData = [ | |
| { | |
| id: 'XsLIkggkcw4', | |
| title: 'Farming Techniques 101', | |
| description: 'A quick overview of modern farming techniques to boost productivity.', | |
| keywords: ['farming techniques', 'modern farming', 'productivity', 'basics', 'introduction'] | |
| }, | |
| { | |
| id: 'QxK4YbPrWXk', | |
| title: 'Organic Farming', | |
| description: 'Learn how to switch to organic methods for sustainable agriculture.', | |
| keywords: ['organic', 'sustainable', 'natural farming', 'eco-friendly'] | |
| }, | |
| { | |
| id: 'Z9HAy9EYKKs', | |
| title: 'Irrigation Systems', | |
| description: 'Explore different irrigation systems and their benefits.', | |
| keywords: ['irrigation', 'water management', 'watering systems', 'farm water'] | |
| }, | |
| { | |
| id: 'XeNA6XdMoF8', | |
| title: 'Crop Rotation Strategies', | |
| description: 'Understanding the importance of crop rotation for soil health.', | |
| keywords: ['crop rotation', 'soil health', 'farming strategy', 'sustainable farming'] | |
| }, | |
| { | |
| id: 'L14woJZEJnk', | |
| title: 'Soil Fertility', | |
| description: 'Tips to improve soil fertility using natural and chemical methods.', | |
| keywords: ['soil', 'fertility', 'soil health', 'nutrients', 'fertilizers'] | |
| } | |
| ]; | |
| class ChatBot { | |
| constructor() { | |
| this.chatHistory = []; | |
| } | |
| // Process user input and return relevant recommendations | |
| processInput(userInput) { | |
| const input = userInput.toLowerCase(); | |
| const matches = []; | |
| // Search through videos and calculate relevance score | |
| videoData.forEach(video => { | |
| let score = 0; | |
| const searchText = `${video.title} ${video.description} ${video.keywords.join(' ')}`.toLowerCase(); | |
| // Check if input terms appear in video metadata | |
| input.split(' ').forEach(term => { | |
| if (searchText.includes(term)) { | |
| score += 1; | |
| } | |
| }); | |
| if (score > 0) { | |
| matches.push({ | |
| ...video, | |
| score | |
| }); | |
| } | |
| }); | |
| // Sort by relevance score | |
| matches.sort((a, b) => b.score - a.score); | |
| // Generate response | |
| if (matches.length > 0) { | |
| const topMatches = matches.slice(0, 3).map(match => ({ | |
| ...match, | |
| url: `https://www.youtube.com/watch?v=${match.id}` | |
| })); | |
| return { | |
| message: `Based on your interest, I recommend these videos:`, | |
| recommendations: topMatches | |
| }; | |
| } else { | |
| return { | |
| message: "I couldn't find specific videos matching your query. Could you please try rephrasing or ask about specific farming topics like soil, irrigation, or organic farming?", | |
| recommendations: [] | |
| }; | |
| } | |
| } | |
| // Add message to chat history | |
| addToHistory(message, isUser) { | |
| this.chatHistory.push({ | |
| message, | |
| isUser, | |
| timestamp: new Date().toISOString() | |
| }); | |
| } | |
| } | |
| // Initialize chatbot | |
| const chatbot = new ChatBot(); |