Monorepo for Aesthetic.Computer
aesthetic.computer
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}`);