#!/usr/bin/env node // Check tape status and URLs // Usage: node check-tape-status.mjs import { connect } from '../system/backend/database.mjs'; async function checkTapeStatus(code) { console.log(`\nšŸ“¼ Checking tape status for code: ${code}\n`); const database = await connect(); const tapes = database.db.collection('tapes'); try { const tape = await tapes.findOne({ code }); if (!tape) { console.error(`āŒ Tape not found with code: ${code}`); process.exit(1); } console.log(`āœ… Found tape: ${tape.slug}`); console.log(` MongoDB ID: ${tape._id}`); console.log(` Bucket: ${tape.bucket}`); console.log(` Created: ${tape.created}`); // Check for MP4 if (tape.mp4) { console.log(`\nšŸŽ¬ MP4 Status:`); console.log(` āœ… MP4 exists: ${tape.mp4}`); } else { console.log(`\nšŸŽ¬ MP4 Status:`); console.log(` āŒ No MP4 found - tape may need baking`); } // Get user info let user = null; if (tape.user) { const users = database.db.collection('users'); user = await users.findOne({ _id: tape.user }); console.log(`\nšŸ‘¤ User: ${user?.email || tape.user}`); } else { console.log(`\nšŸ‘¤ User: anonymous`); } // Construct URLs const key = user ? `${user._id}/video/${tape.slug}.zip` : `${tape.slug}.zip`; const zipUrl = `https://${tape.bucket}.sfo3.digitaloceanspaces.com/${key}`; const mediaZipUrl = `https://aesthetic.computer/media/tapes/${code}.zip`; console.log(`\nšŸ“¦ ZIP URLs:`); console.log(` Direct: ${zipUrl}`);