Monorepo for Aesthetic.Computer aesthetic.computer
at main 51 lines 1.6 kB view raw
1#!/usr/bin/env node 2// Check tape status and URLs 3// Usage: node check-tape-status.mjs <code> 4 5import { connect } from '../system/backend/database.mjs'; 6 7async function checkTapeStatus(code) { 8 console.log(`\n📼 Checking tape status for code: ${code}\n`); 9 10 const database = await connect(); 11 const tapes = database.db.collection('tapes'); 12 13 try { 14 const tape = await tapes.findOne({ code }); 15 16 if (!tape) { 17 console.error(`❌ Tape not found with code: ${code}`); 18 process.exit(1); 19 } 20 21 console.log(`✅ Found tape: ${tape.slug}`); 22 console.log(` MongoDB ID: ${tape._id}`); 23 console.log(` Bucket: ${tape.bucket}`); 24 console.log(` Created: ${tape.created}`); 25 26 // Check for MP4 27 if (tape.mp4) { 28 console.log(`\n🎬 MP4 Status:`); 29 console.log(` ✅ MP4 exists: ${tape.mp4}`); 30 } else { 31 console.log(`\n🎬 MP4 Status:`); 32 console.log(` ❌ No MP4 found - tape may need baking`); 33 } 34 35 // Get user info 36 let user = null; 37 if (tape.user) { 38 const users = database.db.collection('users'); 39 user = await users.findOne({ _id: tape.user }); 40 console.log(`\n👤 User: ${user?.email || tape.user}`); 41 } else { 42 console.log(`\n👤 User: anonymous`); 43 } 44 45 // Construct URLs 46 const key = user ? `${user._id}/video/${tape.slug}.zip` : `${tape.slug}.zip`; 47 const zipUrl = `https://${tape.bucket}.sfo3.digitaloceanspaces.com/${key}`; 48 const mediaZipUrl = `https://aesthetic.computer/media/tapes/${code}.zip`; 49 50 console.log(`\n📦 ZIP URLs:`); 51 console.log(` Direct: ${zipUrl}`);