| const { spawn } = require('child_process'); | |
| function run(url) { | |
| console.log(`Running for: ${url}`); | |
| const p = spawn('yt-dlp', [ | |
| '--dump-json', | |
| '--no-playlist', | |
| '--user-agent', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36', | |
| url | |
| ]); | |
| let data = ''; | |
| p.stdout.on('data', d => data += d); | |
| p.stderr.on('data', d => console.error(`stderr: ${d}`)); | |
| p.on('close', code => { | |
| console.log(`Exit code: ${code}`); | |
| try { | |
| const json = JSON.parse(data); | |
| console.log(`Has formats? ${!!json.formats}`); | |
| console.log(`Has entries? ${!!json.entries}`); | |
| if (json.entries) { | |
| console.log(`Entries length: ${json.entries.length}`); | |
| console.log(`First entry has formats? ${!!json.entries[0].formats}`); | |
| } | |
| } catch (e) { | |
| console.error('JSON parse error'); | |
| } | |
| }); | |
| } | |
| // Test case 1: Standard YouTube | |
| // run('https://www.youtube.com/watch?v=dQw4w9WgXcQ'); | |
| // Test case 2: Search query (Simulating the Spotify optimization) | |
| run('ytsearch1:never gonna give you up'); | |