- Add comprehensive session persistence with cookies, localStorage, and sessionStorage - Implement stealth browser features to reduce bot detection - Add smartLogin() method that prioritizes saved sessions over fresh logins - Create session management utilities (refresh, clear, test validity) - Update enhanced screenshot service to use session persistence - Add comprehensive documentation and test script - Support manual login fallback when captcha is encountered - Sessions stored in .tradingview-session/ directory for Docker compatibility This solves the captcha problem by avoiding repeated logins through persistent sessions.
114 lines
3.5 KiB
JavaScript
114 lines
3.5 KiB
JavaScript
const fs = require('fs')
|
|
const path = require('path')
|
|
const OpenAI = require('openai').default
|
|
|
|
// Initialize OpenAI
|
|
const openai = new OpenAI({
|
|
apiKey: process.env.OPENAI_API_KEY,
|
|
})
|
|
|
|
async function testAIAnalysis() {
|
|
try {
|
|
console.log('🔍 Testing AI analysis with a real screenshot...')
|
|
|
|
// Use the specific screenshot you mentioned
|
|
const screenshotsDir = path.join(process.cwd(), 'screenshots')
|
|
const testImage = 'debug_before_timeframe_change_1752324987294.png'
|
|
const imagePath = path.join(screenshotsDir, testImage)
|
|
|
|
console.log(`📸 Using screenshot: ${imagePath}`)
|
|
|
|
// Check if file exists
|
|
if (!fs.existsSync(imagePath)) {
|
|
console.error('❌ Screenshot file not found!')
|
|
return
|
|
}
|
|
|
|
console.log('✅ Screenshot file found')
|
|
|
|
// Read and encode image
|
|
const imageBuffer = fs.readFileSync(imagePath)
|
|
const base64Image = imageBuffer.toString('base64')
|
|
|
|
console.log(`📊 Image size: ${imageBuffer.length} bytes`)
|
|
console.log(`🔒 Base64 length: ${base64Image.length} characters`)
|
|
console.log(`🎯 Base64 preview: ${base64Image.substring(0, 100)}...`)
|
|
|
|
// Improved prompt for testing
|
|
const prompt = `You are a technical chart analysis expert. Please analyze this TradingView chart image and provide objective technical analysis data.
|
|
|
|
**Important**: This is for educational and research purposes only. Please analyze the technical indicators, price levels, and chart patterns visible in the image.
|
|
|
|
Examine the chart and identify:
|
|
- Current price action and trend direction
|
|
- Key support and resistance levels visible on the chart
|
|
- Technical indicator readings (RSI, moving averages, volume if visible)
|
|
- Chart patterns or formations
|
|
- Market structure elements
|
|
|
|
Provide your analysis in this exact JSON format (replace values with your analysis):
|
|
|
|
{
|
|
"summary": "Objective description of what you observe in the chart",
|
|
"marketSentiment": "BULLISH",
|
|
"recommendation": "BUY",
|
|
"confidence": 75
|
|
}
|
|
|
|
Return only the JSON object with your technical analysis.`
|
|
|
|
console.log('🤖 Sending request to OpenAI...')
|
|
|
|
const response = await openai.chat.completions.create({
|
|
model: "gpt-4o", // Latest vision model
|
|
messages: [
|
|
{
|
|
role: "user",
|
|
content: [
|
|
{ type: "text", text: prompt },
|
|
{
|
|
type: "image_url",
|
|
image_url: {
|
|
url: `data:image/png;base64,${base64Image}`,
|
|
detail: "low" // Add detail parameter to reduce token usage
|
|
}
|
|
}
|
|
]
|
|
}
|
|
],
|
|
max_tokens: 500,
|
|
temperature: 0.1
|
|
})
|
|
|
|
console.log('✅ Response received from OpenAI')
|
|
|
|
const content = response.choices[0]?.message?.content
|
|
console.log('📝 Full response content:')
|
|
console.log(content)
|
|
|
|
// Try to extract JSON
|
|
const jsonMatch = content?.match(/\{[\s\S]*\}/)
|
|
if (jsonMatch) {
|
|
console.log('✅ JSON found in response:')
|
|
console.log(jsonMatch[0])
|
|
|
|
try {
|
|
const parsed = JSON.parse(jsonMatch[0])
|
|
console.log('✅ JSON successfully parsed:')
|
|
console.log(JSON.stringify(parsed, null, 2))
|
|
} catch (e) {
|
|
console.error('❌ Failed to parse JSON:', e.message)
|
|
}
|
|
} else {
|
|
console.error('❌ No JSON found in response')
|
|
}
|
|
|
|
} catch (error) {
|
|
console.error('❌ Error testing AI analysis:', error.message)
|
|
console.error('Full error:', error)
|
|
}
|
|
}
|
|
|
|
// Run the test
|
|
testAIAnalysis()
|